From ddef181f884b28224743d81589a748e5b054f4de Mon Sep 17 00:00:00 2001 From: llcc Date: Thu, 12 May 2022 12:21:25 +0800 Subject: [PATCH] fix `appUrlOpen` fired twice --- src/main/frontend/mobile/core.cljs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/frontend/mobile/core.cljs b/src/main/frontend/mobile/core.cljs index eedd67d823..f8ee58b3be 100644 --- a/src/main/frontend/mobile/core.cljs +++ b/src/main/frontend/mobile/core.cljs @@ -10,6 +10,11 @@ [frontend.util :as util])) (def *url (atom nil)) +;; FIXME: `appUrlOpen` are fired twice when receiving a same intent. +;; The following two variable atoms are used to compare whether +;; they are from the same intent share. +(def *last-shared-url (atom nil)) +(def *last-shared-seconds (atom 0)) (defn- ios-init "Initialize iOS-specified event listeners" @@ -62,12 +67,15 @@ [] (.addListener App "appUrlOpen" (fn [^js data] - (prn :data data) (when-let [url (.-url data)] (if-not (= (.-readyState js/document) "complete") (reset! *url url) - (deeplink/deeplink url))))) - + (when-not (and (= @*last-shared-url url) + (<= (- (.getSeconds (js/Date.)) @*last-shared-seconds) 1)) + (reset! *last-shared-url url) + (reset! *last-shared-seconds (.getSeconds (js/Date.))) + (deeplink/deeplink url)))))) + (.addListener mobile-util/fs-watcher "watcher" (fn [event] (state/pub-event! [:file-watcher/changed event])))