From 88ec7c7c5008955297a45df7d814fbe93e76acbe Mon Sep 17 00:00:00 2001 From: sneha122 Date: Fri, 13 Dec 2024 14:09:53 +0530 Subject: [PATCH] fix: gsheets all sheets option enabled behind a feature flag (#37942) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description This PR adds back all sheets option which had been removed in PR: https://github.com/appsmithorg/appsmith/pull/36125 Fixes #38002 _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.Datasource, @tag.Widget" ### :mag: Cypress test results > [!TIP] > ๐ŸŸข ๐ŸŸข ๐ŸŸข All cypress tests have passed! ๐ŸŽ‰ ๐ŸŽ‰ ๐ŸŽ‰ > Workflow run: > Commit: e177b648fd593b8ccc8af88c6d90c3958d7c9752 > Cypress dashboard. > Tags: `@tag.Datasource, @tag.Widget` > Spec: >
Fri, 13 Dec 2024 08:27:08 UTC ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [x] No ## Summary by CodeRabbit - **New Features** - Added new options for Google Sheets permissions, enhancing user selection capabilities. - Introduced a feature flag to control the visibility of new Google Sheets options. - **Bug Fixes** - Improved handling of feature flags in the datasource section rendering, ensuring correct visibility based on flags. - **Documentation** - Updated test specifications for Google Sheets datasource to include new dropdown options. - **Chores** - Enhanced the logic for setting default values in the RadioButtonControl component. --------- Co-authored-by: โ€œsneha122โ€ <โ€œsneha@appsmith.comโ€> Co-authored-by: Alex Golovanov --- .../ServerSide/QueryPane/GoogleSheets_spec.ts | 8 ++++ .../support/Pages/IDE/BottomTabs/Response.ts | 2 + app/client/src/ce/entities/FeatureFlag.ts | 3 ++ .../formControls/RadioButtonControl.tsx | 5 ++- .../DataSourceEditor/DatasourceSection.tsx | 17 ++++++++- .../external/enums/FeatureFlagEnum.java | 1 + .../src/main/resources/form.json | 37 +++++++++++++++++++ 7 files changed, 70 insertions(+), 3 deletions(-) diff --git a/app/client/cypress/e2e/Regression/ServerSide/QueryPane/GoogleSheets_spec.ts b/app/client/cypress/e2e/Regression/ServerSide/QueryPane/GoogleSheets_spec.ts index 0c81622a80..22db9f0dc7 100644 --- a/app/client/cypress/e2e/Regression/ServerSide/QueryPane/GoogleSheets_spec.ts +++ b/app/client/cypress/e2e/Regression/ServerSide/QueryPane/GoogleSheets_spec.ts @@ -1,3 +1,4 @@ +import { featureFlagIntercept } from "../../../../support/Objects/FeatureFlags"; import { dataSources, deployMode, @@ -23,6 +24,13 @@ describe( function () { let pluginName = "Google Sheets"; + before(() => { + // intercept features call gsheet all sheets disabled + featureFlagIntercept({ + release_gs_all_sheets_options_enabled: false, + }); + }); + it("1. Verify GSheets dropdown options", function () { dataSources.NavigateToDSCreateNew(); dataSources.CreatePlugIn("Google Sheets"); diff --git a/app/client/cypress/support/Pages/IDE/BottomTabs/Response.ts b/app/client/cypress/support/Pages/IDE/BottomTabs/Response.ts index 2e74183375..c42006861c 100644 --- a/app/client/cypress/support/Pages/IDE/BottomTabs/Response.ts +++ b/app/client/cypress/support/Pages/IDE/BottomTabs/Response.ts @@ -24,6 +24,7 @@ class Response { } public openResponseTypeMenu() { + this.switchToResponseTab(); cy.get(this.locators.responseDataContainer).realHover(); cy.get(this.locators.responseTypeMenuTrigger).click({ force: true }); } @@ -46,6 +47,7 @@ class Response { } public validateResponseStatus(status: string): void { + this.switchToResponseTab(); cy.get(this.locators.responseStatusInfo).trigger("mouseover"); cy.get(this.locators.responseStatusInfoTooltip).should( "include.text", diff --git a/app/client/src/ce/entities/FeatureFlag.ts b/app/client/src/ce/entities/FeatureFlag.ts index 0782223bca..de41ab8013 100644 --- a/app/client/src/ce/entities/FeatureFlag.ts +++ b/app/client/src/ce/entities/FeatureFlag.ts @@ -46,6 +46,8 @@ export const FEATURE_FLAG = { release_evaluation_scope_cache: "release_evaluation_scope_cache", release_table_html_column_type_enabled: "release_table_html_column_type_enabled", + release_gs_all_sheets_options_enabled: + "release_gs_all_sheets_options_enabled", } as const; export type FeatureFlag = keyof typeof FEATURE_FLAG; @@ -86,6 +88,7 @@ export const DEFAULT_FEATURE_FLAG_VALUE: FeatureFlags = { ab_request_new_integration_enabled: false, release_evaluation_scope_cache: false, release_table_html_column_type_enabled: false, + release_gs_all_sheets_options_enabled: false, }; export const AB_TESTING_EVENT_KEYS = { diff --git a/app/client/src/components/formControls/RadioButtonControl.tsx b/app/client/src/components/formControls/RadioButtonControl.tsx index ecee054f58..bba45c049a 100644 --- a/app/client/src/components/formControls/RadioButtonControl.tsx +++ b/app/client/src/components/formControls/RadioButtonControl.tsx @@ -44,7 +44,10 @@ function renderComponent(props: renderComponentProps) { }; const options = props.options || []; - const defaultValue = props.initialValue as string; + const selectedValue = props.input?.value; + const defaultValue = !!selectedValue + ? selectedValue + : (props.initialValue as string); return ( @@ -148,7 +151,7 @@ export function renderDatasourceSection( isHidden( datasource.datasourceStorages[currentEnvironment], section.hidden, - undefined, + featureFlags, viewMode, ) ) @@ -168,6 +171,7 @@ export function renderDatasourceSection( currentEnvironment, datasource, viewMode, + featureFlags, ); } else { try { @@ -320,6 +324,7 @@ class RenderDatasourceInformation extends React.Component { ? false : isMultipleEnvEnabled(selectFeatureFlags(state)); const currentEnvironmentId = getCurrentEnvironmentId(state); + const featureFlags = selectFeatureFlags(state); return { currentEnv: isEnvEnabled ? currentEnvironmentId : getDefaultEnvId(), isEnvEnabled, + featureFlags, }; }; diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/enums/FeatureFlagEnum.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/enums/FeatureFlagEnum.java index 9849422cd5..0e47bb43b8 100644 --- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/enums/FeatureFlagEnum.java +++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/enums/FeatureFlagEnum.java @@ -15,6 +15,7 @@ public enum FeatureFlagEnum { release_embed_hide_share_settings_enabled, rollout_datasource_test_rate_limit_enabled, release_google_sheets_shared_drive_support_enabled, + release_gs_all_sheets_options_enabled, // Deprecated CE flags over here release_git_autocommit_feature_enabled, diff --git a/app/server/appsmith-plugins/googleSheetsPlugin/src/main/resources/form.json b/app/server/appsmith-plugins/googleSheetsPlugin/src/main/resources/form.json index 8e9fe67783..9d8c67c9ff 100644 --- a/app/server/appsmith-plugins/googleSheetsPlugin/src/main/resources/form.json +++ b/app/server/appsmith-plugins/googleSheetsPlugin/src/main/resources/form.json @@ -38,11 +38,48 @@ { "label": "Read / Write / Delete | Selected google sheets", "value": "https://www.googleapis.com/auth/drive.file" + }, + { + "label": "Read / Write / Delete | All google sheets", + "value": "https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/drive" + }, + { + "label": "Read / Write | All google sheets", + "value": "https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/drive.readonly" + }, + { + "label": "Read | All google sheets", + "value": "https://www.googleapis.com/auth/spreadsheets.readonly,https://www.googleapis.com/auth/drive.readonly" } ], "initialValue": "https://www.googleapis.com/auth/drive.file", "customStyles": { "width": "340px" + }, + "hidden": { + "flagValue": "release_gs_all_sheets_options_enabled", + "comparison": "FEATURE_FLAG", + "value": false + } + }, + { + "label": "Permissions | Scope", + "configProperty": "datasourceConfiguration.authentication.scopeString", + "controlType": "RADIO_BUTTON", + "options": [ + { + "label": "Read / Write / Delete | Selected google sheets", + "value": "https://www.googleapis.com/auth/drive.file" + } + ], + "initialValue": "https://www.googleapis.com/auth/drive.file", + "customStyles": { + "width": "340px" + }, + "hidden": { + "flagValue": "release_gs_all_sheets_options_enabled", + "comparison": "FEATURE_FLAG", + "value": true } } ]