Files
logseq/src/main/frontend/graph_tab.cljs
Tienson Qin ec0c01fd97 enhance: use graph identity in URLs (#12693)
* 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
2026-05-21 14:52:28 +08:00

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))))