diff --git a/libs/src/LSPlugin.d.ts b/libs/src/LSPlugin.d.ts index 7203dec0f..0a17129d3 100644 --- a/libs/src/LSPlugin.d.ts +++ b/libs/src/LSPlugin.d.ts @@ -115,6 +115,10 @@ interface IAppProxy { getUserInfo: () => Promise getUserConfigs: () => Promise + // native + relaunch: () => Promise + quit: () => Promise + // router pushState: (k: string, params?: {}) => void replaceState: (k: string, params?: {}) => void @@ -138,6 +142,7 @@ interface IEditorProxy { checkEditing: () => Promise insertAtEditingCursor: (content: string) => Promise restoreEditingCursor: () => Promise + exitEditingMode: (selectBlock?: boolean) => Promise getEditingCursorPosition: () => Promise getCurrentPage: () => Promise | null> getCurrentBlock: () => Promise diff --git a/src/electron/electron/handler.cljs b/src/electron/electron/handler.cljs index 527ecd647..2183e164d 100644 --- a/src/electron/electron/handler.cljs +++ b/src/electron/electron/handler.cljs @@ -161,6 +161,13 @@ (defmethod handle :getUserDefaultPlugins [] (get-ls-default-plugins)) +(defmethod handle :relaunchApp [] + (.relaunch app) (.quit app)) + +(defmethod handle :quitApp [] + (.quit app)) + + (defmethod handle :default [args] (println "Error: no ipc handler for: " (bean/->js args))) diff --git a/src/main/logseq/api.cljs b/src/main/logseq/api.cljs index 99abc3dd4..cc8312e0d 100644 --- a/src/main/logseq/api.cljs +++ b/src/main/logseq/api.cljs @@ -53,13 +53,13 @@ (fn [] (bean/->js (normalize-keyword-for-json - {:preferred-language (:preferred-language @state/state) + {:preferred-language (:preferred-language @state/state) :preferred-theme-mode (:ui/theme @state/state) - :preferred-format (state/get-preferred-format) - :preferred-workflow (state/get-preferred-workflow) - :preferred-todo (state/get-preferred-todo) - :current-graph (state/get-current-repo) - :me (state/get-me)})))) + :preferred-format (state/get-preferred-format) + :preferred-workflow (state/get-preferred-workflow) + :preferred-todo (state/get-preferred-todo) + :current-graph (state/get-current-repo) + :me (state/get-me)})))) (def ^:export show_themes (fn [] @@ -144,6 +144,14 @@ pid cmd (assoc action 0 (keyword (first action))))))) ;; app +(def ^:export relaunch + (fn [] + (ipc/ipc "relaunchApp"))) + +(def ^:export quit + (fn [] + (ipc/ipc "quitApp"))) + (def ^:export push_state (fn [^js k ^js params] (rfe/push-state @@ -160,6 +168,14 @@ (if (state/get-edit-input-id) (str (:block/uuid (state/get-edit-block))) false))) +(def ^:export exit_editing_mode + (fn [select?] + (when-let [block (state/get-edit-block)] + (if select? + (editor-handler/select-block! (:block/uuid block)) + (state/clear-edit!))) + nil)) + (def ^:export insert_at_editing_cursor (fn [content] (when-let [input-id (state/get-edit-input-id)]