Skip to content

Commit 47f3079

Browse files
committed
Use separate slice for embed configs
1 parent 5db30c2 commit 47f3079

File tree

5 files changed

+42
-15
lines changed

5 files changed

+42
-15
lines changed

web/src/app/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import ChakraContext from '../components/common/ChakraContext';
66
import App from '../components/common/App';
77
import { persistStore } from 'redux-persist';
88
import { RootState, store } from '../state/store';
9-
import { setAppRecording, setIframeInfo, updateIsAppOpen, setEmbedConfigs } from '../state/settings/reducer';
9+
import { setAppRecording, setIframeInfo, updateIsAppOpen } from '../state/settings/reducer';
1010
import { dispatch } from '../state/dispatch';
11+
import { setEmbedConfigs } from '../state/configs/reducer';
1112
import { log, queryDOMMap, setMinusxMode, toggleMinusXRoot, queryURL, forwardToTab, gdocRead, gdocWrite, gdocImage, gdocReadSelected, captureVisibleTab, getPendingMessage, gsheetSetUserToken} from './rpc';
1213
import _, { get, isEqual, pick, set } from 'lodash';
1314
import { configs } from '../constants';

web/src/components/common/Markdown.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { getApp } from '../../helpers/app'
1212
import { processSQLWithCtesOrModels } from '../../helpers/catalogAsModels'
1313
import { getAllTemplateTagsInQuery, replaceLLMFriendlyIdentifiersInSqlWithModels } from 'apps'
1414
import type { MetabaseModel } from 'apps/types'
15-
import type { EmbedConfigs } from '../../state/settings/reducer'
15+
import { type EmbedConfigs } from '../../state/configs/reducer'
1616
import { Badge } from "@chakra-ui/react";
1717
import { CodeBlock } from './CodeBlock';
1818
import { BiChevronDown, BiChevronRight } from 'react-icons/bi';
@@ -239,9 +239,9 @@ export function Markdown({content, messageIndex}: {content: string, messageIndex
239239
const settings = useSelector((state: RootState) => ({
240240
selectedCatalog: state.settings.selectedCatalog,
241241
availableCatalogs: state.settings.availableCatalogs,
242-
modelsMode: state.settings.modelsMode,
243-
embed_configs: state.settings.embed_configs
242+
modelsMode: state.settings.modelsMode
244243
}));
244+
const embedConfigs = useSelector((state: RootState) => state.configs.embed);
245245
const mxModels = useSelector((state: RootState) => state.cache.mxModels);
246246

247247
// Process template variables like {{MX_LAST_SQL_URL}}
@@ -261,7 +261,7 @@ export function Markdown({content, messageIndex}: {content: string, messageIndex
261261
// Get current database ID from app state
262262
const databaseId = toolContext?.dbId || null;
263263

264-
const questionURL = generateMetabaseQuestionURL(lastSQL, databaseId, settings.embed_configs);
264+
const questionURL = generateMetabaseQuestionURL(lastSQL, databaseId, embedConfigs);
265265

266266
return renderString(content, {
267267
'MX_LAST_SQL_URL': `\n\n --- \n\n Continue your analysis [here](${questionURL})`

web/src/state/configs/reducer.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { createSlice } from '@reduxjs/toolkit'
2+
import type { PayloadAction } from '@reduxjs/toolkit'
3+
4+
export interface EmbedConfigs {
5+
embed_host?: string
6+
}
7+
8+
interface ConfigsState {
9+
embed: EmbedConfigs
10+
}
11+
12+
const initialState: ConfigsState = {
13+
embed: {}
14+
}
15+
16+
export const configsSlice = createSlice({
17+
name: 'configs',
18+
initialState,
19+
reducers: {
20+
setEmbedConfigs: (state, action: PayloadAction<EmbedConfigs>) => {
21+
state.embed = action.payload
22+
},
23+
clearEmbedConfigs: (state) => {
24+
state.embed = {}
25+
}
26+
},
27+
})
28+
29+
export const { setEmbedConfigs, clearEmbedConfigs } = configsSlice.actions
30+
31+
export default configsSlice.reducer

web/src/state/settings/reducer.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,6 @@ export interface SaveCatalogPayload extends Omit<ContextCatalog, 'allowWrite'> {
9999
currentUserId: string
100100
}
101101

102-
export interface EmbedConfigs {
103-
embed_host?: string
104-
}
105102

106103
interface Settings {
107104
isLocal: boolean,
@@ -140,7 +137,6 @@ interface Settings {
140137
manuallyLimitContext: boolean
141138
useV2States: boolean
142139
currentEmail?: string
143-
embed_configs: EmbedConfigs
144140
}
145141

146142
const initialState: Settings = {
@@ -182,7 +178,6 @@ const initialState: Settings = {
182178
metadataProcessingCache: {},
183179
manuallyLimitContext: false,
184180
useV2States: true,
185-
embed_configs: {}
186181
}
187182

188183
export const settingsSlice = createSlice({
@@ -417,9 +412,6 @@ export const settingsSlice = createSlice({
417412
setUseV2States: (state, action: PayloadAction<boolean>) => {
418413
state.useV2States = action.payload
419414
},
420-
setEmbedConfigs: (state, action: PayloadAction<EmbedConfigs>) => {
421-
state.embed_configs = action.payload
422-
}
423415
},
424416
})
425417

@@ -431,7 +423,7 @@ export const { updateIsLocal, updateUploadLogs,
431423
setIframeInfo, setConfirmChanges, setDemoMode, setAppRecording, setAiRules,
432424
applyTableDiff, setSelectedModels, setDRMode, setAnalystMode, setSelectedCatalog, saveCatalog, deleteCatalog, setMemberships,
433425
setGroupsEnabled, resetDefaultTablesDB, setModelsMode, setViewAllCatalogs, setEnableHighlightHelpers, setUseMemory, addMemory, setCustomCSS, setEnableStyleCustomization, setEnableUserDebugTools, setEnableReviews, setMetadataHash, setMetadataProcessingCache, clearMetadataProcessingCache,
434-
updateManualContextSelection, setUseV2States, setCurrentEmail, setEmbedConfigs
426+
updateManualContextSelection, setUseV2States, setCurrentEmail
435427
} = settingsSlice.actions
436428

437429
export default settingsSlice.reducer

web/src/state/store.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import semanticLayer from './semantic-layer/reducer'
1414
import { catalogsListener } from './settings/availableCatalogsListener'
1515
import cache from './cache/reducer'
1616
import notifications from './notifications/reducer'
17+
import configsReducer from './configs/reducer'
1718
import { userStateApi } from '../app/api/userStateApi'
1819
import { get } from 'lodash'
1920
import { getParsedIframeInfo } from '../helpers/origin'
@@ -27,6 +28,7 @@ const combineReducerInput = {
2728
semanticLayer,
2829
cache,
2930
notifications,
31+
configs: configsReducer,
3032
[userStateApi.reducerPath]: userStateApi.reducer
3133
}
3234

@@ -38,7 +40,8 @@ const rootReducer = (state: any, action: any) => {
3840
switch (action.type) {
3941
case 'reset':
4042
updatedState = {
41-
auth: state.auth
43+
auth: state.auth,
44+
configs: state.configs
4245
};
4346
break;
4447

0 commit comments

Comments
 (0)