enhance: embedページではstoreの保存先を完全に分離するように

This commit is contained in:
kakkokari-gtyih
2024-06-01 21:03:39 +09:00
parent ecf7945fe8
commit e9b3b5ffcd
13 changed files with 168 additions and 23 deletions

View File

@@ -14,6 +14,7 @@ import { apiUrl } from '@/config.js';
import { waiting, popup, popupMenu, success, alert } from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { unisonReload, reloadChannel } from '@/scripts/unison-reload.js';
import { isEmbedPage } from '@/scripts/embed-page.js';
// TODO: 他のタブと永続化されたstateを同期
@@ -21,8 +22,14 @@ type Account = Misskey.entities.MeDetailed & { token: string };
const accountData = miLocalStorage.getItem('account');
function initAccount() {
if (isEmbedPage()) return null;
if (accountData) return reactive(JSON.parse(accountData) as Account);
return null;
}
// TODO: 外部からはreadonlyに
export const $i = accountData ? reactive(JSON.parse(accountData) as Account) : null;
export const $i = initAccount();
export const iAmModerator = $i != null && ($i.isAdmin === true || $i.isModerator === true);
export const iAmAdmin = $i != null && $i.isAdmin;
@@ -78,10 +85,14 @@ export async function signout() {
}
export async function getAccounts(): Promise<{ id: Account['id'], token: Account['token'] }[]> {
if (isEmbedPage()) return [];
return (await get('accounts')) || [];
}
export async function addAccount(id: Account['id'], token: Account['token']) {
if (isEmbedPage()) return;
const accounts = await getAccounts();
if (!accounts.some(x => x.id === id)) {
await set('accounts', accounts.concat([{ id, token }]));
@@ -183,6 +194,8 @@ export async function refreshAccount() {
}
export async function login(token: Account['token'], redirect?: string) {
if (isEmbedPage()) return;
const showing = ref(true);
popup(defineAsyncComponent(() => import('@/components/MkWaitingDialog.vue')), {
success: false,