Implement unison reload
This commit is contained in:
tamaina 2021-02-14 21:23:36 +09:00
parent cc9bc7703a
commit 412db316cc
12 changed files with 89 additions and 12 deletions

View file

@ -1,6 +1,7 @@
import { reactive } from 'vue';
import { apiUrl } from '@/config';
import { waiting } from '@/os';
import { unisonReload } from '@/scripts/unison-reload';
// TODO: 他のタブと永続化されたstateを同期
@ -75,7 +76,7 @@ export async function login(token: Account['token']) {
const me = await fetchAccount(token);
localStorage.setItem('account', JSON.stringify(me));
addAccount(me.id, token);
location.reload();
unisonReload();
}
// このファイルに書きたくないけどここに書かないと何故かVeturが認識しない

View file

@ -40,6 +40,7 @@ import FormBase from '@/components/form/base.vue';
import FormGroup from '@/components/form/group.vue';
import { deckStore } from '@/ui/deck/deck-store';
import * as os from '@/os';
import { unisonReload } from '@/scripts/unison-reload';
export default defineComponent({
components: {
@ -81,7 +82,7 @@ export default defineComponent({
});
if (canceled) return;
location.reload();
unisonReload();
}
},
@ -99,7 +100,7 @@ export default defineComponent({
});
if (canceled) return;
this.profile = name;
location.reload();
unisonReload();
}
}
});

View file

@ -96,6 +96,7 @@ import { langs } from '@/config';
import { defaultStore } from '@/store';
import { ColdDeviceStorage } from '@/store';
import * as os from '@/os';
import { unisonReload } from '@/scripts/unison-reload';
export default defineComponent({
components: {
@ -200,7 +201,7 @@ export default defineComponent({
});
if (canceled) return;
location.reload();
unisonReload();
}
}
});

View file

@ -52,6 +52,7 @@ import FormBase from '@/components/form/base.vue';
import FormButton from '@/components/form/button.vue';
import { scroll } from '@/scripts/scroll';
import { signout } from '@/account';
import { unisonReload } from '@/scripts/unison-reload';
export default defineComponent({
components: {
@ -159,7 +160,7 @@ export default defineComponent({
clear: () => {
localStorage.removeItem('locale');
localStorage.removeItem('theme');
location.reload();
unisonReload();
},
faPalette, faPlug, faUser, faListUl, faLock, faLaugh, faCommentSlash, faMusic, faBell, faCogs, faEllipsisH, faBan, faShareAlt, faLockOpen, faKey, faBoxes, faEnvelope, faCloud,
};

View file

@ -40,6 +40,7 @@ import * as os from '@/os';
import { debug } from '@/config';
import { defaultStore } from '@/store';
import { signout } from '@/account';
import { unisonReload } from '@/scripts/unison-reload';
export default defineComponent({
components: {
@ -76,7 +77,7 @@ export default defineComponent({
changeDebug(v) {
console.log(v);
localStorage.setItem('debug', v.toString());
location.reload();
unisonReload();
},
onChangeInjectFeaturedNote(v) {

View file

@ -28,6 +28,7 @@ import FormButton from '@/components/form/button.vue';
import MkInfo from '@/components/ui/info.vue';
import * as os from '@/os';
import { ColdDeviceStorage } from '@/store';
import { unisonReload } from '@/scripts/unison-reload';
export default defineComponent({
components: {
@ -138,7 +139,7 @@ export default defineComponent({
os.success();
this.$nextTick(() => {
location.reload();
unisonReload();
});
},
}

View file

@ -76,7 +76,7 @@ export default defineComponent({
ColdDeviceStorage.set('plugins', this.plugins.filter(x => x.id !== plugin.id));
os.success();
this.$nextTick(() => {
location.reload();
unisonReload();
});
},

View file

@ -12,6 +12,8 @@
</template>
<script lang="ts">
// SPECIFICATION: https://wiki.misskey.io/ja/advanced-functions/share
import { defineComponent } from 'vue';
import { faShareAlt } from '@fortawesome/free-solid-svg-icons';
import MkButton from '@/components/ui/button.vue';

View file

@ -0,0 +1,12 @@
// SafariがBroadcastChannel未実装なのでライブラリを使う
import { BroadcastChannel } from 'broadcast-channel';
const ch = new BroadcastChannel<boolean | undefined>('reload');
// BroadcastChannelを用いて、クライアントが一斉にreloadするようにします。
export function unisonReload(forcedReload?: boolean) {
ch.postMessage(forcedReload);
location.reload(forcedReload as boolean);
}
ch.addEventListener('message', forcedReload => location.reload(forcedReload as boolean));

View file

@ -5,6 +5,7 @@ import { search } from '@/scripts/search';
import * as os from '@/os';
import { i18n } from '@/i18n';
import { $i } from './account';
import { unisonReload } from '@/scripts/unison-reload';
export const sidebarDef = {
notifications: {
@ -133,19 +134,19 @@ export const sidebarDef = {
text: i18n.locale.default,
action: () => {
localStorage.setItem('ui', 'default');
location.reload();
unisonReload();
}
}, {
text: i18n.locale.deck,
action: () => {
localStorage.setItem('ui', 'deck');
location.reload();
unisonReload();
}
}, {
text: i18n.locale.desktop + ' (β)',
action: () => {
localStorage.setItem('ui', 'desktop');
location.reload();
unisonReload();
}
}], ev.currentTarget || ev.target);
},