Skip to content

Commit af9cc28

Browse files
authored
Merge pull request #2567 from jplag/store-dark-mode
Store theme preference
2 parents 25813d7 + 4119a27 commit af9cc28

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

report-viewer/report-viewer/src/stores/uiStore.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,18 @@ import {
77
FileSortingOptions
88
} from '@jplag/ui-components/widget'
99
import { defineStore } from 'pinia'
10-
import { ref } from 'vue'
10+
import { computed, ref } from 'vue'
1111

1212
export const uiStore = defineStore('uiStore', () => {
13-
const useDarkMode = ref(false)
13+
const _useDarkMode = ref(getDefaultUseDarkModeOption())
14+
const useDarkMode = computed({
15+
get: () => _useDarkMode.value,
16+
set: (v: boolean) => {
17+
localStorage.setItem(USE_DARK_MODE_KEYWORD, v ? 'true' : 'false')
18+
_useDarkMode.value = v
19+
}
20+
})
21+
1422
const distributionChartConfig = ref<DistributionChartConfig>({
1523
metric: MetricJsonIdentifier.AVERAGE_SIMILARITY,
1624
xScale: 'linear',
@@ -31,3 +39,14 @@ export const uiStore = defineStore('uiStore', () => {
3139
fileSorting
3240
}
3341
})
42+
43+
const USE_DARK_MODE_KEYWORD = 'jplag:use-dark-mode'
44+
45+
function getDefaultUseDarkModeOption() {
46+
const local = localStorage.getItem(USE_DARK_MODE_KEYWORD)
47+
if (local !== null) {
48+
return local === 'true'
49+
}
50+
51+
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
52+
}

0 commit comments

Comments
 (0)