Skip to content

Commit d72533a

Browse files
committed
fix: removing flash of theme using nuxt plugins
1 parent 2986410 commit d72533a

File tree

4 files changed

+23
-9
lines changed

4 files changed

+23
-9
lines changed

components/navbar.vue

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,15 +159,7 @@ export default {
159159
}
160160
},
161161
mounted() {
162-
const cookies = document.cookie.split(';')
163-
const cookieMap = {}
164-
cookies.forEach((element) => {
165-
const [name, val] = element.split('=')
166-
cookieMap[name] = val
167-
})
168-
if (
169-
((window.matchMedia('(prefers-color-scheme: dark)').matches && cookieMap.darkMode === undefined) || cookieMap.darkMode === 'true')
170-
) {
162+
if (this.$isDarkMode) {
171163
this.toggleDarkMode(null, true)
172164
}
173165
},

helpers/isDarkModeCookie.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
export default function () {
2+
const cookies = document.cookie.split(';')
3+
const cookieMap: {
4+
darkMode: string
5+
} = {}
6+
cookies.forEach((element) => {
7+
const [name, val] = element.split('=')
8+
if (name === 'darkMode') {
9+
cookieMap[name] = val
10+
}
11+
})
12+
return (
13+
window.matchMedia('(prefers-color-scheme: dark)').matches &&
14+
(cookieMap.darkMode === undefined || cookieMap.darkMode === 'true')
15+
)
16+
}

nuxt.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export default {
7272

7373
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
7474
plugins: [
75+
'~/plugins/fart-remover.client.ts'
7576
],
7677

7778
// Auto import components: https://go.nuxtjs.dev/config-components

plugins/fart-remover.client.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import isDarkModeCookie from '~/helpers/isDarkModeCookie'
2+
3+
export default function (context: any, inject: any) {
4+
inject('isDarkMode', isDarkModeCookie())
5+
}

0 commit comments

Comments
 (0)