diff options
author | Nate Sesti <33237525+sestinj@users.noreply.github.com> | 2023-08-06 22:54:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-06 22:54:51 -0700 |
commit | 74005855304412f0401e29c83c166e99a8ab0944 (patch) | |
tree | 4e8ddb61fd52068e839ca4ccab268e013405d545 /extension/react-app/src/redux/slices | |
parent | a0d3f29ee237484c66b0efe243c79d902f2da993 (diff) | |
parent | 8ada89b0f66f9e746394ee64591359537fe0c7f0 (diff) | |
download | sncontinue-74005855304412f0401e29c83c166e99a8ab0944.tar.gz sncontinue-74005855304412f0401e29c83c166e99a8ab0944.tar.bz2 sncontinue-74005855304412f0401e29c83c166e99a8ab0944.zip |
Merge pull request #351 from continuedev/history
Session History
Diffstat (limited to 'extension/react-app/src/redux/slices')
4 files changed, 79 insertions, 153 deletions
diff --git a/extension/react-app/src/redux/slices/configSlice.ts b/extension/react-app/src/redux/slices/configSlice.ts index 57c4f860..59c76066 100644 --- a/extension/react-app/src/redux/slices/configSlice.ts +++ b/extension/react-app/src/redux/slices/configSlice.ts @@ -50,7 +50,7 @@ export const configSlice = createSlice({ ) => ({ ...state, dataSwitchOn: action.payload, - }) + }), }, }); @@ -60,6 +60,6 @@ export const { setWorkspacePath, setSessionId, setVscMediaUrl, - setDataSwitchOn + setDataSwitchOn, } = configSlice.actions; export default configSlice.reducer; diff --git a/extension/react-app/src/redux/slices/debugContexSlice.ts b/extension/react-app/src/redux/slices/debugContexSlice.ts deleted file mode 100644 index 647440d5..00000000 --- a/extension/react-app/src/redux/slices/debugContexSlice.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { createSlice } from "@reduxjs/toolkit"; -import { RangeInFile, SerializedDebugContext } from "../../../../src/client"; -import { RootStore } from "../store"; - -export const debugStateSlice = createSlice({ - name: "debugState", - initialState: { - debugContext: { - rangesInFiles: [], - filesystem: {}, - traceback: undefined, - description: undefined, - }, - rangesMask: [], - } as RootStore["debugState"], - reducers: { - updateValue: ( - state: RootStore["debugState"], - action: { - type: string; - payload: { key: keyof SerializedDebugContext; value: any }; - } - ) => { - return { - ...state, - debugContext: { - ...state.debugContext, - [action.payload.key]: action.payload.value, - }, - }; - }, - addRangeInFile: ( - state: RootStore["debugState"], - action: { - type: string; - payload: { - rangeInFile: RangeInFile; - canUpdateLast: boolean; - }; - } - ) => { - let rangesInFiles = state.debugContext.rangesInFiles; - // If identical to existing range, don't add. Ideally you check for overlap of ranges. - for (let range of rangesInFiles) { - if ( - range.filepath === action.payload.rangeInFile.filepath && - range.range.start.line === - action.payload.rangeInFile.range.start.line && - range.range.end.line === action.payload.rangeInFile.range.end.line - ) { - return state; - } - } - - if ( - action.payload.canUpdateLast && - rangesInFiles.length > 0 && - rangesInFiles[rangesInFiles.length - 1].filepath === - action.payload.rangeInFile.filepath - ) { - return { - ...state, - debugContext: { - ...state.debugContext, - rangesInFiles: [ - ...rangesInFiles.slice(0, rangesInFiles.length - 1), - action.payload.rangeInFile, - ], - }, - }; - } else { - return { - ...state, - debugContext: { - ...state.debugContext, - rangesInFiles: [ - ...state.debugContext.rangesInFiles, - action.payload.rangeInFile, - ], - }, - rangesMask: [...state.rangesMask, true], - }; - } - }, - deleteRangeInFileAt: ( - state: RootStore["debugState"], - action: { - type: string; - payload: number; - } - ) => { - return { - ...state, - debugContext: { - ...state.debugContext, - rangesInFiles: state.debugContext.rangesInFiles.filter( - (_, index) => index !== action.payload - ), - }, - rangesMask: state.rangesMask.filter( - (_, index) => index !== action.payload - ), - }; - }, - toggleSelectionAt: ( - state: RootStore["debugState"], - action: { - type: string; - payload: number; - } - ) => { - return { - ...state, - rangesMask: state.rangesMask.map((_, index) => - index === action.payload - ? !state.rangesMask[index] - : state.rangesMask[index] - ), - }; - }, - updateFileSystem: ( - state: RootStore["debugState"], - action: { - type: string; - payload: { [filepath: string]: string }; - } - ) => { - return { - ...state, - debugContext: { - ...state.debugContext, - filesystem: { - ...state.debugContext.filesystem, - ...action.payload, - }, - }, - }; - }, - }, -}); - -export const { - updateValue, - updateFileSystem, - addRangeInFile, - deleteRangeInFileAt, - toggleSelectionAt, -} = debugStateSlice.actions; -export default debugStateSlice.reducer; diff --git a/extension/react-app/src/redux/slices/serverStateReducer.ts b/extension/react-app/src/redux/slices/serverStateReducer.ts new file mode 100644 index 00000000..4d9dc326 --- /dev/null +++ b/extension/react-app/src/redux/slices/serverStateReducer.ts @@ -0,0 +1,53 @@ +import { createSlice } from "@reduxjs/toolkit"; +import { FullState } from "../../../../schema/FullState"; + +const initialState: FullState = { + history: { + timeline: [ + { + step: { + name: "Welcome to Continue", + hide: false, + description: `- Highlight code section and ask a question or give instructions + - Use \`cmd+m\` (Mac) / \`ctrl+m\` (Windows) to open Continue + - Use \`/help\` to ask questions about how to use Continue`, + system_message: null, + chat_context: [], + manage_own_chat_context: false, + message: "", + }, + depth: 0, + deleted: false, + active: false, + }, + ], + current_index: 3, + } as any, + user_input_queue: [], + active: false, + slash_commands: [], + adding_highlighted_code: false, + selected_context_items: [], +}; + +export const serverStateSlice = createSlice({ + name: "serverState", + initialState, + reducers: { + setServerState: (state, action) => { + return { + ...action.payload, + selected_context_items: action.payload.selected_context_items || [], + user_input_queue: action.payload.user_input_queue || [], + slash_commands: action.payload.slash_commands || [], + }; + }, + temporarilySetUserInputQueue: (state, action) => { + state.user_input_queue = action.payload; + }, + }, +}); + +export const { setServerState, temporarilySetUserInputQueue } = + serverStateSlice.actions; +export default serverStateSlice.reducer; diff --git a/extension/react-app/src/redux/slices/uiStateSlice.ts b/extension/react-app/src/redux/slices/uiStateSlice.ts index 837d19e9..d34596c9 100644 --- a/extension/react-app/src/redux/slices/uiStateSlice.ts +++ b/extension/react-app/src/redux/slices/uiStateSlice.ts @@ -5,6 +5,10 @@ export const uiStateSlice = createSlice({ initialState: { bottomMessage: undefined, bottomMessageCloseTimeout: undefined, + showDialog: false, + dialogMessage: "", + dialogEntryOn: false, + displayBottomMessageOnBottom: true, }, reducers: { setBottomMessage: (state, action) => { @@ -16,9 +20,27 @@ export const uiStateSlice = createSlice({ } state.bottomMessageCloseTimeout = action.payload; }, + setDialogMessage: (state, action) => { + state.dialogMessage = action.payload; + }, + setDialogEntryOn: (state, action) => { + state.dialogEntryOn = action.payload; + }, + setShowDialog: (state, action) => { + state.showDialog = action.payload; + }, + setDisplayBottomMessageOnBottom: (state, action) => { + state.displayBottomMessageOnBottom = action.payload; + }, }, }); -export const { setBottomMessage, setBottomMessageCloseTimeout } = - uiStateSlice.actions; +export const { + setBottomMessage, + setBottomMessageCloseTimeout, + setDialogMessage, + setDialogEntryOn, + setShowDialog, + setDisplayBottomMessageOnBottom, +} = uiStateSlice.actions; export default uiStateSlice.reducer; |