Skip to content

Commit 02df3ec

Browse files
mistercrunchclaude
andcommitted
refactor: remove obsolete Flask flash messaging system
BREAKING CHANGE: Removes flask.flash() messaging infrastructure The Flask flash message system is a legacy feature from when Superset was a server-rendered application. In the current SPA architecture, these messages are never displayed to users because: - Flash messages only render on page load via FlashProvider's componentDidMount - Modern UI interactions use async API calls that don't trigger page reloads - The main consumer (/explore/ POST endpoint) is already marked @deprecated All user-facing notifications are already handled by the frontend toast system, including chart save operations (see saveModalActions.ts) which dispatches success toasts for: - Chart saved/overwritten - Chart added to dashboard - New dashboard created with chart Changes: - Backend: Removed all flash() calls from views (14 occurrences in 4 files) - Backend: Converted error flashes to JSON responses or logging - Backend: Removed redirect_with_flash utility function - Frontend: Deleted FlashProvider component and tests - Frontend: Removed flash_messages from CommonBootstrapData type - Frontend: Cleaned up context providers and test fixtures - Frontend: Removed unused getBootstrapData imports The application now relies entirely on client-side toast notifications for user feedback, which properly support async operations and provide a consistent UX. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 48e1b1f commit 02df3ec

File tree

16 files changed

+60
-248
lines changed

16 files changed

+60
-248
lines changed

superset-frontend/spec/fixtures/mockDashboardInfo.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ export default {
4949
dash_edit_perm: true,
5050
dash_save_perm: true,
5151
common: {
52-
flash_messages: [],
5352
conf: { SUPERSET_WEBSERVER_TIMEOUT: 60 },
5453
},
5554
filterBarOrientation: FilterBarOrientation.Vertical,

superset-frontend/src/components/FlashProvider/FlashProvider.test.tsx

Lines changed: 0 additions & 65 deletions
This file was deleted.

superset-frontend/src/components/FlashProvider/index.tsx

Lines changed: 0 additions & 51 deletions
This file was deleted.

superset-frontend/src/components/FlashProvider/types.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

superset-frontend/src/components/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ export * from './ErrorMessage';
3838
export { ImportModal, type ImportModelsModalProps } from './ImportModal';
3939
export { ErrorBoundary, type ErrorBoundaryProps } from './ErrorBoundary';
4040
export * from './GenericLink';
41-
export { FlashProvider, type FlashMessage } from './FlashProvider';
4241
export { GridTable, type TableProps } from './GridTable';
4342
export * from './Tag';
4443
export * from './TagsList';

superset-frontend/src/constants.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ export const RESERVED_DASHBOARD_URL_PARAMS: string[] = [
122122
export const DEFAULT_COMMON_BOOTSTRAP_DATA: CommonBootstrapData = {
123123
application_root: '/',
124124
static_assets_prefix: '',
125-
flash_messages: [],
126125
conf: {},
127126
locale: 'en',
128127
feature_flags: {},

superset-frontend/src/dashboard/actions/hydrate.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,6 @@ export const hydrateDashboard =
274274
superset_can_csv: findPermission('can_csv', 'Superset', roles),
275275
common: {
276276
// legacy, please use state.common instead
277-
flash_messages: common?.flash_messages,
278277
conf: common?.conf,
279278
},
280279
filterBarOrientation:

superset-frontend/src/embedded/EmbeddedContextProviders.tsx

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,12 @@ import { Provider as ReduxProvider } from 'react-redux';
2222
import { QueryParamProvider } from 'use-query-params';
2323
import { DndProvider } from 'react-dnd';
2424
import { HTML5Backend } from 'react-dnd-html5-backend';
25-
import { FlashProvider, DynamicPluginProvider } from 'src/components';
25+
import { DynamicPluginProvider } from 'src/components';
2626
import { EmbeddedUiConfigProvider } from 'src/components/UiConfigContext';
2727
import { SupersetThemeProvider } from 'src/theme/ThemeProvider';
2828
import { ThemeController } from 'src/theme/ThemeController';
2929
import type { ThemeStorage } from '@superset-ui/core';
3030
import { store } from 'src/views/store';
31-
import getBootstrapData from 'src/utils/getBootstrapData';
3231

3332
/**
3433
* In-memory implementation of ThemeStorage interface for embedded contexts.
@@ -56,7 +55,6 @@ const themeController = new ThemeController({
5655

5756
export const getThemeController = (): ThemeController => themeController;
5857

59-
const { common } = getBootstrapData();
6058
const extensionsRegistry = getExtensionsRegistry();
6159

6260
export const EmbeddedContextProviders: React.FC = ({ children }) => {
@@ -68,24 +66,22 @@ export const EmbeddedContextProviders: React.FC = ({ children }) => {
6866
<SupersetThemeProvider themeController={themeController}>
6967
<ReduxProvider store={store}>
7068
<DndProvider backend={HTML5Backend}>
71-
<FlashProvider messages={common.flash_messages}>
72-
<EmbeddedUiConfigProvider>
73-
<DynamicPluginProvider>
74-
<QueryParamProvider
75-
ReactRouterRoute={Route}
76-
stringifyOptions={{ encode: false }}
77-
>
78-
{RootContextProviderExtension ? (
79-
<RootContextProviderExtension>
80-
{children}
81-
</RootContextProviderExtension>
82-
) : (
83-
children
84-
)}
85-
</QueryParamProvider>
86-
</DynamicPluginProvider>
87-
</EmbeddedUiConfigProvider>
88-
</FlashProvider>
69+
<EmbeddedUiConfigProvider>
70+
<DynamicPluginProvider>
71+
<QueryParamProvider
72+
ReactRouterRoute={Route}
73+
stringifyOptions={{ encode: false }}
74+
>
75+
{RootContextProviderExtension ? (
76+
<RootContextProviderExtension>
77+
{children}
78+
</RootContextProviderExtension>
79+
) : (
80+
children
81+
)}
82+
</QueryParamProvider>
83+
</DynamicPluginProvider>
84+
</EmbeddedUiConfigProvider>
8985
</DndProvider>
9086
</ReduxProvider>
9187
</SupersetThemeProvider>

superset-frontend/src/explore/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ export interface ExploreResponsePayload {
9898
export interface ExplorePageState {
9999
user: UserWithPermissionsAndRoles;
100100
common: {
101-
flash_messages: string[];
102101
conf: JsonObject;
103102
locale: string;
104103
};

superset-frontend/src/theme/tests/ThemeController.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ const createMockBootstrapData = (
8383
common: {
8484
application_root: '/',
8585
static_assets_prefix: '/static/assets/',
86-
flash_messages: [],
8786
conf: {},
8887
locale: 'en',
8988
feature_flags: {},
@@ -391,7 +390,6 @@ describe('ThemeController', () => {
391390
common: {
392391
application_root: '/',
393392
static_assets_prefix: '/static/assets/',
394-
flash_messages: [],
395393
conf: {},
396394
locale: 'en',
397395
feature_flags: {},

0 commit comments

Comments
 (0)