diff --git a/src/main/frontend/idb.cljs b/src/main/frontend/idb.cljs index fd7632623..9764b80d8 100644 --- a/src/main/frontend/idb.cljs +++ b/src/main/frontend/idb.cljs @@ -17,12 +17,13 @@ (defn clear-idb! [] - (-> - (p/let [_ (idb-keyval/clear @store) - dbs (js/window.indexedDB.databases)] - (doseq [db dbs] - (js/window.indexedDB.deleteDatabase (gobj/get db "name")))) - (p/catch (fn [_e])))) + (when @store + (-> + (p/let [_ (idb-keyval/clear @store) + dbs (js/window.indexedDB.databases)] + (doseq [db dbs] + (js/window.indexedDB.deleteDatabase (gobj/get db "name")))) + (p/catch (fn [_e]))))) (defn clear-local-storage-and-idb! [] @@ -31,27 +32,28 @@ (defn remove-item! [key] - (when key + (when (and key @store) (idb-keyval/del key @store))) (defn set-item! [key value] - (when key + (when (and key @store) (idb-keyval/set key value @store))) (defn set-batch! [items] - (when (seq items) + (when (and (seq items) @store) (idb-keyval/setBatch (clj->js items) @store))) (defn get-item [key] - (when key + (when (and key @store) (idb-keyval/get key @store))) (defn get-keys [] - (idb-keyval/keys @store)) + (when @store + (idb-keyval/keys @store))) (defn get-nfs-dbs [] diff --git a/src/main/frontend/util.cljc b/src/main/frontend/util.cljc index 2c766c6c1..2ea648d0d 100644 --- a/src/main/frontend/util.cljc +++ b/src/main/frontend/util.cljc @@ -796,43 +796,51 @@ (defn get-prev-block-non-collapsed [block] (when-let [blocks (get-blocks-noncollapse)] - (when-let [index (.indexOf blocks block)] - (let [idx (dec index)] - (when (>= idx 0) - (nth-safe blocks idx))))))) + (let [block-id (.-id block) + block-ids (mapv #(.-id %) blocks)] + (when-let [index (.indexOf block-ids block-id)] + (let [idx (dec index)] + (when (>= idx 0) + (nth-safe blocks idx)))))))) #?(:cljs (defn get-prev-block-non-collapsed-non-embed [block] (when-let [blocks (->> (get-blocks-noncollapse) remove-embeded-blocks)] - (when-let [index (.indexOf blocks block)] - (let [idx (dec index)] - (when (>= idx 0) - (nth-safe blocks idx))))))) + (let [block-id (.-id block) + block-ids (mapv #(.-id %) blocks)] + (when-let [index (.indexOf block-ids block-id)] + (let [idx (dec index)] + (when (>= idx 0) + (nth-safe blocks idx)))))))) #?(:cljs (defn get-next-block-non-collapsed [block] (when-let [blocks (get-blocks-noncollapse)] - (when-let [index (.indexOf blocks block)] - (let [idx (inc index)] - (when (>= (count blocks) idx) - (nth-safe blocks idx))))))) + (let [block-id (.-id block) + block-ids (mapv #(.-id %) blocks)] + (when-let [index (.indexOf block-ids block-id)] + (let [idx (inc index)] + (when (>= (count blocks) idx) + (nth-safe blocks idx)))))))) #?(:cljs (defn get-next-block-non-collapsed-skip [block] (when-let [blocks (get-blocks-noncollapse)] - (when-let [index (.indexOf blocks block)] - (loop [idx (inc index)] - (when (>= (count blocks) idx) - (let [block (nth-safe blocks idx) - nested? (->> (array-seq (gdom/getElementsByClass "selected")) - (some (fn [dom] (.contains dom block))))] - (if nested? - (recur (inc idx)) - block)))))))) + (let [block-id (.-id block) + block-ids (mapv #(.-id %) blocks)] + (when-let [index (.indexOf block-ids block-id)] + (loop [idx (inc index)] + (when (>= (count blocks) idx) + (let [block (nth-safe blocks idx) + nested? (->> (array-seq (gdom/getElementsByClass "selected")) + (some (fn [dom] (.contains dom block))))] + (if nested? + (recur (inc idx)) + block))))))))) (defn rand-str [n]