From a4725eefc25c6f226af5b3f656ce2e1c80fa82b7 Mon Sep 17 00:00:00 2001 From: Vitor Avila Date: Fri, 5 Jan 2024 00:20:05 -0300 Subject: [PATCH 1/2] fix(embedded): Hide dashboard fullscreen option for embedded context --- .../Header/HeaderActionsDropdown/index.jsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx b/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx index 4d8bcf4ee0930..42b292d96dd10 100644 --- a/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx +++ b/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx @@ -19,6 +19,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { isEmpty } from 'lodash'; +import { connect } from 'react-redux'; import { isFeatureEnabled, FeatureFlag, @@ -216,6 +217,9 @@ class HeaderActionsDropdown extends React.PureComponent { const emailSubject = `${emailTitle} ${dashboardTitle}`; const emailBody = t('Check out this dashboard: '); + const { user } = this.props; + const isEmbedded = !user?.userId; + const url = getDashboardUrl({ pathname: window.location.pathname, filters: getActiveFilters(), @@ -237,7 +241,7 @@ class HeaderActionsDropdown extends React.PureComponent { {t('Refresh dashboard')} )} - {!editMode && ( + {!editMode && !isEmbedded && ( Date: Fri, 5 Jan 2024 23:11:52 -0300 Subject: [PATCH 2/2] Fixing tests + simpler logic --- .../HeaderActionsDropdown.test.tsx | 16 ++++++++++++++++ .../Header/HeaderActionsDropdown/index.jsx | 11 ++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/HeaderActionsDropdown.test.tsx b/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/HeaderActionsDropdown.test.tsx index e112e7e5310de..deea296d4c04f 100644 --- a/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/HeaderActionsDropdown.test.tsx +++ b/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/HeaderActionsDropdown.test.tsx @@ -92,6 +92,14 @@ const editModeOnWithFilterScopesProps = { }, }; +const guestUserProps = { + ...createProps(), + dashboardInfo: { + ...createProps().dashboardInfo, + userId: undefined, + }, +}; + function setup(props: HeaderDropdownProps) { return render(
@@ -134,6 +142,14 @@ test('should render the menu items in edit mode', async () => { expect(screen.getByText('Download')).toBeInTheDocument(); }); +test('should render the menu items in Embedded mode', async () => { + setup(guestUserProps); + expect(screen.getAllByRole('menuitem')).toHaveLength(3); + expect(screen.getByText('Refresh dashboard')).toBeInTheDocument(); + expect(screen.getByText('Download')).toBeInTheDocument(); + expect(screen.getByText('Set auto-refresh interval')).toBeInTheDocument(); +}); + describe('with native filters feature flag disabled', () => { beforeAll(() => { isFeatureEnabledMock = jest diff --git a/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx b/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx index 42b292d96dd10..b0d3fc251e9d9 100644 --- a/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx +++ b/superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx @@ -19,7 +19,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import { isEmpty } from 'lodash'; -import { connect } from 'react-redux'; import { isFeatureEnabled, FeatureFlag, @@ -217,8 +216,7 @@ class HeaderActionsDropdown extends React.PureComponent { const emailSubject = `${emailTitle} ${dashboardTitle}`; const emailBody = t('Check out this dashboard: '); - const { user } = this.props; - const isEmbedded = !user?.userId; + const isEmbedded = !dashboardInfo?.userId; const url = getDashboardUrl({ pathname: window.location.pathname, @@ -396,9 +394,4 @@ class HeaderActionsDropdown extends React.PureComponent { HeaderActionsDropdown.propTypes = propTypes; HeaderActionsDropdown.defaultProps = defaultProps; -function mapStateToProps(state) { - return { - user: state.user, - }; -} -export default connect(mapStateToProps)(HeaderActionsDropdown); +export default HeaderActionsDropdown;