Skip to content

Commit 0ff125c

Browse files
authored
chore: Local storage dark mode (#5689)
1 parent de7c278 commit 0ff125c

3 files changed

Lines changed: 25 additions & 5 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
export function storageGet(key: string): string | null {
2+
try {
3+
return localStorage?.getItem(key) ?? null
4+
} catch (err) {
5+
//Storage / privacy errors
6+
console.error(err)
7+
return null
8+
}
9+
}
10+
11+
export function storageSet(key: string, value: string): void {
12+
try {
13+
localStorage.setItem(key, value)
14+
} catch (err) {
15+
//Storage / privacy errors
16+
console.error(err)
17+
}
18+
}

frontend/common/stores/config-store.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Project from 'common/project'
22
import { setDarkMode } from 'project/darkMode'
3+
import { storageGet } from 'common/safeLocalStorage'
34

45
const Dispatcher = require('../dispatcher/dispatcher')
56
const BaseStore = require('./base/_store')
@@ -11,7 +12,7 @@ const controller = {
1112
},
1213
loaded(oldFlags) {
1314
//todo: Remove this after a few weeks have passed
14-
if (API.getCookie('dark_mode') === undefined) {
15+
if (storageGet('dark_mode') === null) {
1516
setDarkMode(flagsmith.hasFeature('dark_mode'))
1617
}
1718
if (!oldFlags || !Object.keys(oldFlags).length) {

frontend/web/project/darkMode.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
import API from './api'
2+
import { storageGet, storageSet } from 'common/safeLocalStorage'
23

34
export const getDarkMode = () => {
4-
return API.getCookie('dark_mode') === 'true'
5+
return storageGet('dark_mode') === 'true'
56
}
67
export const setDarkMode = (enabled: boolean) => {
78
if (enabled) {
8-
API.setCookie('dark_mode', true)
9+
storageSet('dark_mode', 'true')
910
document.body.classList.add('dark')
1011
document.documentElement.setAttribute('data-bs-theme', 'dark')
1112
} else {
12-
API.setCookie('dark_mode', 'false')
13+
storageSet('dark_mode', 'false')
1314
document.body.classList.remove('dark')
1415
document.documentElement.removeAttribute('data-bs-theme')
1516
}
1617
}
1718

18-
if (API.getCookie('dark_mode')) {
19+
if (storageGet('dark_mode')) {
1920
setDarkMode(getDarkMode())
2021
}

0 commit comments

Comments
 (0)