From 53e85ddffc33869d086939526c7e85533421cba8 Mon Sep 17 00:00:00 2001 From: Junyi Du Date: Wed, 28 Jun 2023 00:05:29 +0800 Subject: [PATCH] ux: diff-merge switch & fix --- src/main/frontend/components/settings.cljs | 18 ++++++++++++++++-- src/main/frontend/handler/file_sync.cljs | 5 +++++ src/resources/dicts/en.edn | 4 +++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index 4ff539c3fe..a012ee8b5d 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -732,6 +732,13 @@ (file-sync-handler/set-sync-enabled! (not enabled?))) true)) +(rum/defc sync-diff-merge-enabled-switcher + [enabled?] + (ui/toggle enabled? + (fn [] + (file-sync-handler/set-sync-diff-merge-enabled! (not enabled?))) + true)) + (defn sync-switcher-row [enabled?] (row-with-button-action {:left-label (t :settings-page/sync) @@ -739,8 +746,15 @@ (defn sync-diff-merge-switcher-row [enabled?] (row-with-button-action - {:left-label (t :settings-page/sync-diff-merge) - :action (sync-enabled-switcher enabled?)})) + {:left-label (str (t :settings-page/sync-diff-merge) " (Experimental!)") ;; Not included in i18n to avoid outdating translations + :action (sync-diff-merge-enabled-switcher enabled?) + :desc (ui/tippy {:html [:div + [:div (t :settings-page/sync-diff-merge-desc)] + [:div (t :settings-page/sync-diff-merge-warn)]] + :class "tippy-hover ml-2" + :interactive true + :disabled false} + (svg/info))})) (rum/defc whiteboards-enabled-switcher [enabled?] diff --git a/src/main/frontend/handler/file_sync.cljs b/src/main/frontend/handler/file_sync.cljs index 2f775caec8..4dee79f10c 100644 --- a/src/main/frontend/handler/file_sync.cljs +++ b/src/main/frontend/handler/file_sync.cljs @@ -254,3 +254,8 @@ [value] (storage/set :logseq-sync-enabled value) (state/set-state! :feature/enable-sync? value)) + +(defn set-sync-diff-merge-enabled! + [value] + (storage/set :logseq-sync-diff-merge-enabled value) + (state/set-state! :feature/enable-sync-diff-merge? value)) diff --git a/src/resources/dicts/en.edn b/src/resources/dicts/en.edn index fb231fd4e1..b4228530d0 100644 --- a/src/resources/dicts/en.edn +++ b/src/resources/dicts/en.edn @@ -318,7 +318,9 @@ :settings-page/sync-desc-1 "Click" :settings-page/sync-desc-2 "here" :settings-page/sync-desc-3 "for instructions on how to set up and use Sync." - :settings-page/sync-diff-merge "Merge editing when syncing" + :settings-page/sync-diff-merge "Enable smart merge when syncing" + :settings-page/sync-diff-merge-desc "Merge local updates with remote files automatically when conflict happens, instead of overwriting the remote files" + :settings-page/sync-diff-merge-warn "Smart merge ability is only activated on a client after first successful sync with the remote server on the graph in the new Logseq version. Enabling this on all devices to reach the best experience." :settings-page/enable-whiteboards "Whiteboards" :settings-page/native-titlebar "Native title bar" :settings-page/native-titlebar-desc "Enables the native window title bar on Windows and Linux."