forked from FoundKeyGang/FoundKey
ダークモード情報をアカウントではなくブラウザに保存するように
This commit is contained in:
parent
d2d3a7d52b
commit
08b8d829f9
4 changed files with 34 additions and 31 deletions
|
@ -61,12 +61,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dark/Light
|
// Dark/Light
|
||||||
const me = JSON.parse(localStorage.getItem('me') || null);
|
if (localStorage.getItem('darkmode') == 'true') {
|
||||||
if (me && me.clientSettings) {
|
|
||||||
if ((app == 'desktop' && me.clientSettings.dark) || (app == 'mobile' && me.clientSettings.darkMobile)) {
|
|
||||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Script version
|
// Script version
|
||||||
const ver = localStorage.getItem('v') || VERSION;
|
const ver = localStorage.getItem('v') || VERSION;
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
<button class="ui button" @click="customizeHome" style="margin-bottom: 16px">ホームをカスタマイズ</button>
|
<button class="ui button" @click="customizeHome" style="margin-bottom: 16px">ホームをカスタマイズ</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="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="ウィンドウのタイトルバーにグラデーションを使用"/>
|
<mk-switch v-model="os.i.clientSettings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="ウィンドウのタイトルバーにグラデーションを使用"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-switch v-model="os.i.clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="タイムライン上部に投稿フォームを表示する"/>
|
<mk-switch v-model="os.i.clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="タイムライン上部に投稿フォームを表示する"/>
|
||||||
|
@ -234,6 +234,7 @@ export default Vue.extend({
|
||||||
version,
|
version,
|
||||||
latestVersion: undefined,
|
latestVersion: undefined,
|
||||||
checkingForUpdate: false,
|
checkingForUpdate: false,
|
||||||
|
darkmode: localStorage.getItem('darkmode') == 'true',
|
||||||
enableSounds: localStorage.getItem('enableSounds') == 'true',
|
enableSounds: localStorage.getItem('enableSounds') == 'true',
|
||||||
autoPopout: localStorage.getItem('autoPopout') == 'true',
|
autoPopout: localStorage.getItem('autoPopout') == 'true',
|
||||||
apiViaStream: localStorage.getItem('apiViaStream') ? localStorage.getItem('apiViaStream') == 'true' : true,
|
apiViaStream: localStorage.getItem('apiViaStream') ? localStorage.getItem('apiViaStream') == 'true' : true,
|
||||||
|
@ -257,6 +258,9 @@ export default Vue.extend({
|
||||||
apiViaStream() {
|
apiViaStream() {
|
||||||
localStorage.setItem('apiViaStream', this.apiViaStream ? 'true' : 'false');
|
localStorage.setItem('apiViaStream', this.apiViaStream ? 'true' : 'false');
|
||||||
},
|
},
|
||||||
|
darkmode() {
|
||||||
|
(this as any)._updateDarkmode_(this.darkmode);
|
||||||
|
},
|
||||||
enableSounds() {
|
enableSounds() {
|
||||||
localStorage.setItem('enableSounds', this.enableSounds ? 'true' : 'false');
|
localStorage.setItem('enableSounds', this.enableSounds ? 'true' : 'false');
|
||||||
},
|
},
|
||||||
|
|
|
@ -88,10 +88,7 @@ export default Vue.extend({
|
||||||
(this as any).os.signout();
|
(this as any).os.signout();
|
||||||
},
|
},
|
||||||
dark() {
|
dark() {
|
||||||
(this as any).api('i/update_client_setting', {
|
(this as any)._updateDarkmode_(!(this as any)._darkmode_);
|
||||||
name: 'dark',
|
|
||||||
value: !(this as any)._darkmode_
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -61,39 +61,44 @@ Vue.mixin({
|
||||||
});
|
});
|
||||||
|
|
||||||
// Dark/Light
|
// Dark/Light
|
||||||
|
const bus = new Vue();
|
||||||
Vue.mixin({
|
Vue.mixin({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
_darkmode_: false
|
_darkmode_: localStorage.getItem('darkmode') == 'true'
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
beforeCreate() {
|
beforeCreate() {
|
||||||
// なぜか警告が出るため
|
// なぜか警告が出るので
|
||||||
this._darkmode_ = false;
|
this._darkmode_ = localStorage.getItem('darkmode') == 'true';
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
bus.$off('updated', this._onDarkmodeUpdated_);
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
const set = () => {
|
this._onDarkmodeUpdated_(this._darkmode_);
|
||||||
if (!this.$el || !this.$el.setAttribute || !this.os || !this.os.i) return;
|
bus.$on('updated', this._onDarkmodeUpdated_);
|
||||||
if (this.os.i.clientSettings.dark) {
|
},
|
||||||
|
methods: {
|
||||||
|
_updateDarkmode_(v) {
|
||||||
|
localStorage.setItem('darkmode', v.toString());
|
||||||
|
bus.$emit('updated', v);
|
||||||
|
if (v) {
|
||||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||||
this.$el.setAttribute('data-darkmode', 'true');
|
|
||||||
this._darkmode_ = true;
|
|
||||||
this.$forceUpdate();
|
|
||||||
} else {
|
} else {
|
||||||
document.documentElement.removeAttribute('data-darkmode');
|
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.$el.removeAttribute('data-darkmode');
|
||||||
this._darkmode_ = false;
|
}
|
||||||
|
this._darkmode_ = v;
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
set();
|
|
||||||
|
|
||||||
this.$watch('os.i.clientSettings', i => {
|
|
||||||
set();
|
|
||||||
}, {
|
|
||||||
deep: true
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue