summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-04-22 17:28:21 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-04-22 17:28:21 +0900
commit08b8d829f9514fc2cb7a7e5da88831e2a9e376f4 (patch)
treee71257e3888d965269c01c46420582f1473681e6 /src
parentCW (diff)
downloadsharkey-08b8d829f9514fc2cb7a7e5da88831e2a9e376f4.tar.gz
sharkey-08b8d829f9514fc2cb7a7e5da88831e2a9e376f4.tar.bz2
sharkey-08b8d829f9514fc2cb7a7e5da88831e2a9e376f4.zip
ダークモード情報をアカウントではなくブラウザに保存するように
Diffstat (limited to 'src')
-rw-r--r--src/client/app/boot.js7
-rw-r--r--src/client/app/desktop/views/components/settings.vue6
-rw-r--r--src/client/app/desktop/views/components/ui.header.account.vue5
-rw-r--r--src/client/app/init.ts45
4 files changed, 33 insertions, 30 deletions
diff --git a/src/client/app/boot.js b/src/client/app/boot.js
index 8a79880fb4..f5a1afec63 100644
--- a/src/client/app/boot.js
+++ b/src/client/app/boot.js
@@ -61,11 +61,8 @@
}
// Dark/Light
- const me = JSON.parse(localStorage.getItem('me') || null);
- if (me && me.clientSettings) {
- if ((app == 'desktop' && me.clientSettings.dark) || (app == 'mobile' && me.clientSettings.darkMobile)) {
- document.documentElement.setAttribute('data-darkmode', 'true');
- }
+ if (localStorage.getItem('darkmode') == 'true') {
+ document.documentElement.setAttribute('data-darkmode', 'true');
}
// Script version
diff --git a/src/client/app/desktop/views/components/settings.vue b/src/client/app/desktop/views/components/settings.vue
index b5111dabc9..9d56042ea7 100644
--- a/src/client/app/desktop/views/components/settings.vue
+++ b/src/client/app/desktop/views/components/settings.vue
@@ -40,7 +40,7 @@
<button class="ui button" @click="customizeHome" style="margin-bottom: 16px">ホームをカスタマイズ</button>
</div>
<div class="div">
- <mk-switch v-model="os.i.clientSettings.dark" @change="onChangeDark" text="ダークモード"/>
+ <mk-switch v-model="darkmode" text="ダークモード"/>
<mk-switch v-model="os.i.clientSettings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="ウィンドウのタイトルバーにグラデーションを使用"/>
</div>
<mk-switch v-model="os.i.clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="タイムライン上部に投稿フォームを表示する"/>
@@ -234,6 +234,7 @@ export default Vue.extend({
version,
latestVersion: undefined,
checkingForUpdate: false,
+ darkmode: localStorage.getItem('darkmode') == 'true',
enableSounds: localStorage.getItem('enableSounds') == 'true',
autoPopout: localStorage.getItem('autoPopout') == 'true',
apiViaStream: localStorage.getItem('apiViaStream') ? localStorage.getItem('apiViaStream') == 'true' : true,
@@ -257,6 +258,9 @@ export default Vue.extend({
apiViaStream() {
localStorage.setItem('apiViaStream', this.apiViaStream ? 'true' : 'false');
},
+ darkmode() {
+ (this as any)._updateDarkmode_(this.darkmode);
+ },
enableSounds() {
localStorage.setItem('enableSounds', this.enableSounds ? 'true' : 'false');
},
diff --git a/src/client/app/desktop/views/components/ui.header.account.vue b/src/client/app/desktop/views/components/ui.header.account.vue
index ce7fab22cf..2d4d23933c 100644
--- a/src/client/app/desktop/views/components/ui.header.account.vue
+++ b/src/client/app/desktop/views/components/ui.header.account.vue
@@ -88,10 +88,7 @@ export default Vue.extend({
(this as any).os.signout();
},
dark() {
- (this as any).api('i/update_client_setting', {
- name: 'dark',
- value: !(this as any)._darkmode_
- });
+ (this as any)._updateDarkmode_(!(this as any)._darkmode_);
}
}
});
diff --git a/src/client/app/init.ts b/src/client/app/init.ts
index 461093488d..2f79e6cab1 100644
--- a/src/client/app/init.ts
+++ b/src/client/app/init.ts
@@ -61,39 +61,44 @@ Vue.mixin({
});
// Dark/Light
+const bus = new Vue();
Vue.mixin({
data() {
return {
- _darkmode_: false
+ _darkmode_: localStorage.getItem('darkmode') == 'true'
};
},
beforeCreate() {
- // なぜか警告が出るため
- this._darkmode_ = false;
+ // なぜか警告が出るので
+ this._darkmode_ = localStorage.getItem('darkmode') == 'true';
+ },
+ beforeDestroy() {
+ bus.$off('updated', this._onDarkmodeUpdated_);
},
mounted() {
- const set = () => {
- if (!this.$el || !this.$el.setAttribute || !this.os || !this.os.i) return;
- if (this.os.i.clientSettings.dark) {
+ this._onDarkmodeUpdated_(this._darkmode_);
+ bus.$on('updated', this._onDarkmodeUpdated_);
+ },
+ methods: {
+ _updateDarkmode_(v) {
+ localStorage.setItem('darkmode', v.toString());
+ bus.$emit('updated', v);
+ if (v) {
document.documentElement.setAttribute('data-darkmode', 'true');
- this.$el.setAttribute('data-darkmode', 'true');
- this._darkmode_ = true;
- this.$forceUpdate();
} else {
document.documentElement.removeAttribute('data-darkmode');
+ }
+ },
+ _onDarkmodeUpdated_(v) {
+ if (!this.$el || !this.$el.setAttribute) return;
+ if (v) {
+ this.$el.setAttribute('data-darkmode', 'true');
+ } else {
this.$el.removeAttribute('data-darkmode');
- this._darkmode_ = false;
- this.$forceUpdate();
}
- };
-
- set();
-
- this.$watch('os.i.clientSettings', i => {
- set();
- }, {
- deep: true
- });
+ this._darkmode_ = v;
+ this.$forceUpdate();
+ }
}
});