diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-07 10:13:02 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-07 10:13:02 +0900 |
| commit | 91503405b4e58cb9d39c0441d86ff540a27931e6 (patch) | |
| tree | 4c64371d1a88668e762733db1afaa3be7e284442 /packages/frontend/src/theme-store.ts | |
| parent | 13.0.0-beta.26 (diff) | |
| download | misskey-91503405b4e58cb9d39c0441d86ff540a27931e6.tar.gz misskey-91503405b4e58cb9d39c0441d86ff540a27931e6.tar.bz2 misskey-91503405b4e58cb9d39c0441d86ff540a27931e6.zip | |
refactor(client): typed localStorage
Diffstat (limited to 'packages/frontend/src/theme-store.ts')
| -rw-r--r-- | packages/frontend/src/theme-store.ts | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/packages/frontend/src/theme-store.ts b/packages/frontend/src/theme-store.ts index fdc92ed793..aa1244665b 100644 --- a/packages/frontend/src/theme-store.ts +++ b/packages/frontend/src/theme-store.ts @@ -1,11 +1,13 @@ import { api } from '@/os'; import { $i } from '@/account'; import { Theme } from './scripts/theme'; +import { miLocalStorage } from './local-storage'; -const lsCacheKey = $i ? `themes:${$i.id}` : ''; +const lsCacheKey = $i ? `themes:${$i.id}` as const : null; export function getThemes(): Theme[] { - return JSON.parse(localStorage.getItem(lsCacheKey) || '[]'); + if ($i == null) return []; + return JSON.parse(miLocalStorage.getItem(lsCacheKey!) || '[]'); } export async function fetchThemes(): Promise<void> { @@ -13,7 +15,7 @@ export async function fetchThemes(): Promise<void> { try { const themes = await api('i/registry/get', { scope: ['client'], key: 'themes' }); - localStorage.setItem(lsCacheKey, JSON.stringify(themes)); + miLocalStorage.setItem(lsCacheKey!, JSON.stringify(themes)); } catch (err) { if (err.code === 'NO_SUCH_KEY') return; throw err; @@ -21,14 +23,16 @@ export async function fetchThemes(): Promise<void> { } export async function addTheme(theme: Theme): Promise<void> { + if ($i == null) return; await fetchThemes(); const themes = getThemes().concat(theme); await api('i/registry/set', { scope: ['client'], key: 'themes', value: themes }); - localStorage.setItem(lsCacheKey, JSON.stringify(themes)); + miLocalStorage.setItem(lsCacheKey!, JSON.stringify(themes)); } export async function removeTheme(theme: Theme): Promise<void> { + if ($i == null) return; const themes = getThemes().filter(t => t.id !== theme.id); await api('i/registry/set', { scope: ['client'], key: 'themes', value: themes }); - localStorage.setItem(lsCacheKey, JSON.stringify(themes)); + miLocalStorage.setItem(lsCacheKey!, JSON.stringify(themes)); } |