From 2e2657b39d143cc708465a9305c4d626e8865455 Mon Sep 17 00:00:00 2001 From: Zeng1998 <1129142694@qq.com> Date: Sat, 24 Dec 2022 16:18:13 +0800 Subject: [PATCH] feat: add setting for power editor (#851) --- web/src/components/MemoEditor.tsx | 34 ++++++++++--------- .../Settings/PreferencesSection.tsx | 10 +++++- web/src/locales/en.json | 1 + web/src/locales/zh.json | 1 + web/src/store/module/user.ts | 7 ++-- web/src/types/modules/setting.d.ts | 1 + 6 files changed, 34 insertions(+), 20 deletions(-) diff --git a/web/src/components/MemoEditor.tsx b/web/src/components/MemoEditor.tsx index dd6df1db..ceabeb58 100644 --- a/web/src/components/MemoEditor.tsx +++ b/web/src/components/MemoEditor.tsx @@ -59,6 +59,7 @@ const MemoEditor = () => { const tagSelectorRef = useRef(null); const user = userStore.state.user as User; const setting = user.setting; + const localSetting = user.localSetting; const tags = tagStore.state.tags; const memoVisibilityOptionSelectorItems = VISIBILITY_SELECTOR_ITEMS.map((item) => { return { @@ -215,24 +216,25 @@ const MemoEditor = () => { } } - for (const symbol of pairSymbols) { - if (event.key === symbol[0]) { - event.preventDefault(); - editorRef.current.insertText("", symbol[0], symbol[1]); - return; + if (localSetting.enablePowerfulEditor) { + for (const symbol of pairSymbols) { + if (event.key === symbol[0]) { + event.preventDefault(); + editorRef.current.insertText("", symbol[0], symbol[1]); + return; + } } - } - - if (event.key === "Backspace") { - const cursor = editorRef.current.getCursorPosition(); - const content = editorRef.current.getContent(); - const deleteChar = content?.slice(cursor - 1, cursor); - const nextChar = content?.slice(cursor, cursor + 1); - if (pairSymbols.includes(`${deleteChar}${nextChar}`)) { - event.preventDefault(); - editorRef.current.removeText(cursor - 1, 2); + if (event.key === "Backspace") { + const cursor = editorRef.current.getCursorPosition(); + const content = editorRef.current.getContent(); + const deleteChar = content?.slice(cursor - 1, cursor); + const nextChar = content?.slice(cursor, cursor + 1); + if (pairSymbols.includes(`${deleteChar}${nextChar}`)) { + event.preventDefault(); + editorRef.current.removeText(cursor - 1, 2); + } + return; } - return; } }; diff --git a/web/src/components/Settings/PreferencesSection.tsx b/web/src/components/Settings/PreferencesSection.tsx index bb678209..e573b123 100644 --- a/web/src/components/Settings/PreferencesSection.tsx +++ b/web/src/components/Settings/PreferencesSection.tsx @@ -45,7 +45,11 @@ const PreferencesSection = () => { }; const handleIsFoldingEnabledChanged = (event: React.ChangeEvent) => { - userStore.upsertLocalSetting("enableFoldMemo", event.target.checked); + userStore.upsertLocalSetting({ ...localSetting, enableFoldMemo: event.target.checked }); + }; + + const handlePowerfulEditorEnabledChanged = (event: React.ChangeEvent) => { + userStore.upsertLocalSetting({ ...localSetting, enablePowerfulEditor: event.target.checked }); }; return ( @@ -100,6 +104,10 @@ const PreferencesSection = () => { {t("setting.preference-section.enable-folding-memo")} + ); }; diff --git a/web/src/locales/en.json b/web/src/locales/en.json index 5bdce7f5..29f3415e 100644 --- a/web/src/locales/en.json +++ b/web/src/locales/en.json @@ -161,6 +161,7 @@ "theme": "Theme", "default-memo-visibility": "Default memo visibility", "enable-folding-memo": "Enable folding memo", + "enable-powerful-editor": "Enable powerful editor", "editor-font-style": "Editor font style", "mobile-editor-style": "Mobile editor style", "default-memo-sort-option": "Memo display time", diff --git a/web/src/locales/zh.json b/web/src/locales/zh.json index 04a40609..541b7cae 100644 --- a/web/src/locales/zh.json +++ b/web/src/locales/zh.json @@ -161,6 +161,7 @@ "theme": "主题", "default-memo-visibility": "默认 Memo 可见性", "enable-folding-memo": "开启折叠 Memo", + "enable-powerful-editor": "开启编辑器自动补全", "editor-font-style": "编辑器字体样式", "mobile-editor-style": "移动端编辑器样式", "default-memo-sort-option": "Memo 显示时间", diff --git a/web/src/store/module/user.ts b/web/src/store/module/user.ts index f7440f00..ba537c0c 100644 --- a/web/src/store/module/user.ts +++ b/web/src/store/module/user.ts @@ -15,6 +15,7 @@ const defaultSetting: Setting = { const defaultLocalSetting: LocalSetting = { enableFoldMemo: true, + enablePowerfulEditor: true, }; export const convertResponseModelUser = (user: User): User => { @@ -133,9 +134,9 @@ export const useUserStore = () => { }); await doSignIn(); }, - upsertLocalSetting: async (key: keyof LocalSetting, value: any) => { - storage.set({ localSetting: { [key]: value } }); - store.dispatch(patchUser({ localSetting: { [key]: value } })); + upsertLocalSetting: async (localSetting: LocalSetting) => { + storage.set({ localSetting }); + store.dispatch(patchUser({ localSetting })); }, patchUser: async (userPatch: UserPatch): Promise => { const { data } = (await api.patchUser(userPatch)).data; diff --git a/web/src/types/modules/setting.d.ts b/web/src/types/modules/setting.d.ts index e6868d20..e34b6559 100644 --- a/web/src/types/modules/setting.d.ts +++ b/web/src/types/modules/setting.d.ts @@ -9,6 +9,7 @@ interface Setting { interface LocalSetting { enableFoldMemo: boolean; + enablePowerfulEditor: boolean; } interface UserLocaleSetting {