()
| 147 | } |
| 148 | |
| 149 | export function loadPinnedThreads(): PinnedThreadsMap { |
| 150 | if (typeof window === "undefined") { |
| 151 | return {}; |
| 152 | } |
| 153 | try { |
| 154 | const raw = window.localStorage.getItem(STORAGE_KEY_PINNED_THREADS); |
| 155 | if (!raw) { |
| 156 | return {}; |
| 157 | } |
| 158 | const parsed = JSON.parse(raw) as PinnedThreadsMap; |
| 159 | if (!parsed || typeof parsed !== "object") { |
| 160 | return {}; |
| 161 | } |
| 162 | return parsed; |
| 163 | } catch { |
| 164 | return {}; |
| 165 | } |
| 166 | } |
| 167 | |
| 168 | export function savePinnedThreads(pinned: PinnedThreadsMap) { |
| 169 | if (typeof window === "undefined") { |
no outgoing calls
no test coverage detected