Skip to content

Commit 24b9874

Browse files
author
Guillaume Chau
committed
feat(ui): forced theme via URL
1 parent bf7be53 commit 24b9874

File tree

3 files changed

+38
-17
lines changed

3 files changed

+38
-17
lines changed

packages/@vue/cli-ui/src/components/StatusBar.vue

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
</div>
4949

5050
<div
51+
v-if="enableDarkModeButton"
5152
class="section action dark-mode"
5253
v-tooltip="$t('components.status-bar.dark-mode')"
5354
@click="toggleDarkMode()"
@@ -87,6 +88,7 @@ import CONSOLE_LOG_ADDED from '../graphql/consoleLogAdded.gql'
8788
import DARK_MODE_SET from '../graphql/darkModeSet.gql'
8889
import PLUGIN_RESET_API from '../graphql/pluginResetApi.gql'
8990
import { resetApollo } from '../vue-apollo'
91+
import { getForcedTheme } from '../util/theme'
9092
9193
let lastRoute
9294
@@ -96,7 +98,8 @@ export default {
9698
data () {
9799
return {
98100
showLogs: false,
99-
consoleLogLast: null
101+
consoleLogLast: null,
102+
enableDarkModeButton: getForcedTheme() == null
100103
}
101104
},
102105
@@ -114,10 +117,6 @@ export default {
114117
}
115118
},
116119
117-
created () {
118-
this.loadDarkMode()
119-
},
120-
121120
methods: {
122121
onProjectClick () {
123122
this.$emit('project')
@@ -159,11 +158,6 @@ export default {
159158
win.focus()
160159
},
161160
162-
loadDarkMode () {
163-
const raw = localStorage.getItem('vue-ui-dark-mode')
164-
this.applyDarkMode(raw === 'true')
165-
},
166-
167161
async applyDarkMode (enabled) {
168162
localStorage.setItem('vue-ui-dark-mode', enabled.toString())
169163
await this.$apollo.mutate({
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
let forcedTheme = null
2+
3+
{
4+
const result = /\?theme=(\w+)/.exec(window.location.href)
5+
if (result) forcedTheme = result[1]
6+
}
7+
8+
console.log('forced theme', forcedTheme)
9+
10+
export function getForcedTheme () {
11+
return forcedTheme
12+
}

packages/@vue/cli-ui/src/vue-apollo.js

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import clientStateResolvers from './state/resolvers'
88
import CONNECTED_SET from './graphql/connectedSet.gql'
99
import LOADING_CHANGE from './graphql/loadingChange.gql'
1010
import DARK_MODE_SET from './graphql/darkModeSet.gql'
11+
import { getForcedTheme } from './util/theme'
1112

1213
// Install the vue plugin
1314
Vue.use(VueApollo)
@@ -68,13 +69,7 @@ export async function resetApollo () {
6869
} catch (e) {
6970
// Potential errors
7071
}
71-
const raw = localStorage.getItem('vue-ui-dark-mode')
72-
apolloClient.mutate({
73-
mutation: DARK_MODE_SET,
74-
variables: {
75-
enabled: raw === 'true'
76-
}
77-
})
72+
loadDarkMode()
7873
}
7974

8075
/* Connected state */
@@ -96,3 +91,23 @@ wsClient.on('reconnected', async () => {
9691
// Offline
9792
wsClient.on('disconnected', () => setConnected(false))
9893
wsClient.on('error', () => setConnected(false))
94+
95+
/* Dark mode */
96+
97+
function loadDarkMode () {
98+
let enabled, forcedTheme
99+
if ((forcedTheme = getForcedTheme())) {
100+
enabled = forcedTheme === 'dark'
101+
} else {
102+
const raw = localStorage.getItem('vue-ui-dark-mode')
103+
enabled = raw === 'true'
104+
}
105+
apolloClient.mutate({
106+
mutation: DARK_MODE_SET,
107+
variables: {
108+
enabled
109+
}
110+
})
111+
}
112+
113+
loadDarkMode()

0 commit comments

Comments
 (0)