diff --git a/packages/bruno-app/src/components/Preferences/Display/EditorKeymapSettings/index.js b/packages/bruno-app/src/components/Preferences/Display/EditorKeymapSettings/index.js index 0a5c8d8e2..7bfb8b4a9 100644 --- a/packages/bruno-app/src/components/Preferences/Display/EditorKeymapSettings/index.js +++ b/packages/bruno-app/src/components/Preferences/Display/EditorKeymapSettings/index.js @@ -14,13 +14,14 @@ const codemirrorKeymaps = [ const EditorKeymapSettings = ({ close }) => { const dispatch = useDispatch(); const preferences = useSelector((state) => state.app.preferences); - const keymap = useMemo(() => get(preferences, 'editor.keymap', 'sublime'), [preferences]); + const editorPreferences = preferences.editor || {}; + const keymap = editorPreferences.keymap || 'sublime'; const handleKeymapChange = (e) => { dispatch( savePreferences({ ...preferences, - editor: { keymap: e.target.value } + editor: { ...editorPreferences, keymap: e.target.value } }) ).catch(console.error); }; diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/app.js b/packages/bruno-app/src/providers/ReduxStore/slices/app.js index f5034b5d5..0c8e8b443 100644 --- a/packages/bruno-app/src/providers/ReduxStore/slices/app.js +++ b/packages/bruno-app/src/providers/ReduxStore/slices/app.js @@ -97,6 +97,7 @@ export const { updateSystemProxyEnvVariables } = appSlice.actions; +// TODO: Need a equivalent method which allows setting preferences for individual sub-section export const savePreferences = (preferences) => (dispatch, getState) => { return new Promise((resolve, reject) => { const { ipcRenderer } = window; diff --git a/packages/bruno-electron/src/store/preferences.js b/packages/bruno-electron/src/store/preferences.js index 33d7a02f8..376c4b2a8 100644 --- a/packages/bruno-electron/src/store/preferences.js +++ b/packages/bruno-electron/src/store/preferences.js @@ -58,6 +58,9 @@ const preferencesSchema = Yup.object().shape({ codeFont: Yup.string().nullable(), codeFontSize: Yup.number().min(1).max(32).nullable() }), + editor: Yup.object().shape({ + keymap: Yup.string().oneOf(['sublime', 'vim', 'emacs']).nullable(), + }), proxy: Yup.object({ mode: Yup.string().oneOf(['off', 'on', 'system']), protocol: Yup.string().oneOf(['http', 'https', 'socks4', 'socks5']),