diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCEImpl.java index bbc8d30cd280..127254e26009 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCEImpl.java @@ -735,25 +735,17 @@ public Flux findByPageIdAndViewMode(String pageId, Boolean viewMode, @Override public Flux findAllByApplicationIdAndPluginType( - String applicationId, Boolean viewMode, AclPermission permission, Sort sort, List pluginTypes) { + String applicationId, + Boolean viewMode, + AclPermission permission, + Sort sort, + List excludedPluginTypes) { return repository - .findByApplicationIdAndPluginType(applicationId, pluginTypes, permission, sort) + .findByApplicationIdAndPluginType(applicationId, excludedPluginTypes, permission, sort) .name(VIEW_MODE_FETCH_ACTIONS_FROM_DB) .tap(Micrometer.observation(observationRegistry)) // In case of view mode being true, filter out all the actions which haven't been published - .flatMap(action -> { - if (Boolean.TRUE.equals(viewMode)) { - // In case we are trying to fetch published actions but this action has not been published, do - // not return - if (action.getPublishedAction() == null) { - return Mono.empty(); - } - } - // No need to handle the edge case of unpublished action not being present. This is not possible - // because every created action starts from an unpublishedAction state. - - return Mono.just(action); - }) + .flatMap(action -> this.filterAction(action, viewMode)) .name(VIEW_MODE_FILTER_ACTION) .tap(Micrometer.observation(observationRegistry)) .flatMap(this::sanitizeAction) @@ -767,19 +759,7 @@ public Flux findAllByApplicationIdAndViewMode( return repository .findByApplicationId(applicationId, permission, sort) // In case of view mode being true, filter out all the actions which haven't been published - .flatMap(action -> { - if (Boolean.TRUE.equals(viewMode)) { - // In case we are trying to fetch published actions but this action has not been published, do - // not return - if (action.getPublishedAction() == null) { - return Mono.empty(); - } - } - // No need to handle the edge case of unpublished action not being present. This is not possible - // because every created action starts from an unpublishedAction state. - - return Mono.just(action); - }) + .flatMap(action -> this.filterAction(action, viewMode)) .flatMap(this::sanitizeAction); } @@ -814,18 +794,12 @@ public Flux getActionsForViewMode(String applicationId) { return Flux.error(new AppsmithException(AppsmithError.INVALID_PARAMETER, FieldName.APPLICATION_ID)); } - List pluginTypes = List.of( - PluginType.DB.toString(), - PluginType.API.toString(), - PluginType.SAAS.toString(), - PluginType.REMOTE.toString(), - PluginType.AI.toString(), - PluginType.INTERNAL.toString()); + List excludedPluginTypes = List.of(PluginType.JS.toString()); // fetch the published actions by applicationId // No need to sort the results return findAllByApplicationIdAndPluginType( - applicationId, true, actionPermission.getExecutePermission(), null, pluginTypes) + applicationId, true, actionPermission.getExecutePermission(), null, excludedPluginTypes) .name(VIEW_MODE_INITIAL_ACTION) .tap(Micrometer.observation(observationRegistry)) .filter(newAction -> !PluginType.JS.equals(newAction.getPluginType())) @@ -1114,6 +1088,20 @@ public Mono sanitizeAction(NewAction action) { return actionMono; } + public Mono filterAction(NewAction action, Boolean viewMode) { + if (Boolean.TRUE.equals(viewMode)) { + // In case we are trying to fetch published actions but this action has not been published, do + // not return + if (action.getPublishedAction() == null) { + return Mono.empty(); + } + } + // No need to handle the edge case of unpublished action not being present. This is not possible + // because every created action starts from an unpublishedAction state. + + return Mono.just(action); + } + public Flux addMissingPluginDetailsIntoAllActions(List actionList) { Mono> pluginMapMono = Mono.just(defaultPluginMap); diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCEImpl.java index 54ea14d9eef7..5913e10ced03 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomNewActionRepositoryCEImpl.java @@ -204,19 +204,20 @@ protected BridgeQuery getCriterionForFindByApplicationId(String appli @Override public Flux findByApplicationIdAndPluginType( - String applicationId, List pluginTypes, AclPermission aclPermission, Sort sort) { + String applicationId, List excludedPluginTypes, AclPermission aclPermission, Sort sort) { return queryBuilder() - .criteria(getCriterionForFindByApplicationIdAndPluginType(applicationId, pluginTypes)) + .criteria(getCriterionForFindByApplicationIdAndPluginType(applicationId, excludedPluginTypes)) .permission(aclPermission) .sort(sort) .all(); } protected BridgeQuery getCriterionForFindByApplicationIdAndPluginType( - String applicationId, List pluginTypes) { + String applicationId, List excludedPluginTypes) { final BridgeQuery q = getCriterionForFindByApplicationId(applicationId); q.and(Bridge.or( - Bridge.in(NewAction.Fields.pluginType, pluginTypes), Bridge.isNull(NewAction.Fields.pluginType))); + Bridge.notIn(NewAction.Fields.pluginType, excludedPluginTypes), + Bridge.isNull(NewAction.Fields.pluginType))); return q; }