mirror of
https://github.com/logseq/logseq.git
synced 2026-05-27 14:14:24 +00:00
* enhance: use graph identity in URLs * fix: resolve graph identity URLs * fix: satisfy graph url lint * fix: resolve graph id from hash urls * fix: preserve tab graph on reload * fix: initialize tab graph before render * enhance: open graph in another tab * fix: open graph tabs by graph id * fix: open local graph tabs by registry id * fix: avoid duplicate rtc graph id * fix: open electron graph window on shift click * fix: address graph identity review
45 lines
1.0 KiB
Clojure
45 lines
1.0 KiB
Clojure
(ns frontend.graph-tab
|
|
"Tab-local graph context helpers."
|
|
(:require [clojure.string :as string]
|
|
[goog.object :as gobj]))
|
|
|
|
(def graph-id-key
|
|
"ls-tab-graph-id")
|
|
|
|
(def repo-key
|
|
"ls-tab-repo")
|
|
|
|
(defn- session-storage
|
|
[]
|
|
(gobj/get js/globalThis "sessionStorage"))
|
|
|
|
(defn get-tab-graph-id
|
|
[]
|
|
(when-let [storage (session-storage)]
|
|
(let [graph-id (.getItem storage graph-id-key)]
|
|
(when-not (string/blank? graph-id)
|
|
graph-id))))
|
|
|
|
(defn get-tab-repo
|
|
[]
|
|
(when-let [storage (session-storage)]
|
|
(let [repo (.getItem storage repo-key)]
|
|
(when-not (string/blank? repo)
|
|
repo))))
|
|
|
|
(defn get-tab-graph
|
|
[]
|
|
(let [repo (get-tab-repo)
|
|
graph-id (get-tab-graph-id)]
|
|
(when (or repo graph-id)
|
|
{:repo repo
|
|
:graph-id graph-id})))
|
|
|
|
(defn set-tab-graph!
|
|
[repo graph-id]
|
|
(when-let [storage (session-storage)]
|
|
(when-not (string/blank? repo)
|
|
(.setItem storage repo-key repo))
|
|
(when-not (string/blank? graph-id)
|
|
(.setItem storage graph-id-key graph-id))))
|