embedページの判定をconfig.tsに移行

This commit is contained in:
kakkokari-gtyih 2024-06-29 17:18:32 +09:00
parent 1926fa304b
commit 237605d6b8
9 changed files with 24 additions and 26 deletions

View File

@ -7,11 +7,11 @@
// よって、devモードとして起動されるときはビルド時に組み込む形としておく。
// (pnpm start時はpugファイルの中で静的リソースとして読み込むようになっており、この問題は起こっていない)
import '@tabler/icons-webfont/dist/tabler-icons.scss';
import { isEmbedPage } from '@/scripts/embed-page.js';
import { embedPage } from '@/config.js';
await main();
if (isEmbedPage()) {
if (embedPage) {
import('@/_embed_boot_.js');
} else {
import('@/_boot_.js');

View File

@ -14,7 +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';
import { embedPage } from '@/config.js';
// TODO: 他のタブと永続化されたstateを同期
@ -23,7 +23,7 @@ type Account = Misskey.entities.MeDetailed & { token: string };
const accountData = miLocalStorage.getItem('account');
function initAccount() {
if (isEmbedPage()) return null;
if (embedPage) return null;
if (accountData) return reactive(JSON.parse(accountData) as Account);
return null;
}
@ -85,13 +85,13 @@ export async function signout() {
}
export async function getAccounts(): Promise<{ id: Account['id'], token: Account['token'] }[]> {
if (isEmbedPage()) return [];
if (embedPage) return [];
return (await get('accounts')) || [];
}
export async function addAccount(id: Account['id'], token: Account['token']) {
if (isEmbedPage()) return;
if (embedPage) return;
const accounts = await getAccounts();
if (!accounts.some(x => x.id === id)) {
@ -194,7 +194,7 @@ export async function refreshAccount() {
}
export async function login(token: Account['token'], redirect?: string) {
if (isEmbedPage()) return;
if (embedPage) return;
const showing = ref(true);
popup(defineAsyncComponent(() => import('@/components/MkWaitingDialog.vue')), {

View File

@ -21,6 +21,7 @@ export const version = _VERSION_;
export const instanceName = siteName === 'Misskey' || siteName == null ? host : siteName;
export const ui = miLocalStorage.getItem('ui');
export const debug = miLocalStorage.getItem('debug') === 'true';
export const embedPage = location.pathname.startsWith('/embed');
export function updateLocale(newLocale): void {
locale = newLocale;

View File

@ -47,20 +47,20 @@ const safeSessionStorage = new Map<Keys, string>();
export const miLocalStorage = {
getItem: (key: Keys): string | null => {
if (isEmbedPage()) {
if (embedPage) {
return safeSessionStorage.get(key) ?? null;
}
return window.localStorage.getItem(key);
},
setItem: (key: Keys, value: string): void => {
if (isEmbedPage()) {
if (embedPage) {
safeSessionStorage.set(key, value);
} else {
window.localStorage.setItem(key, value);
}
},
removeItem: (key: Keys): void => {
if (isEmbedPage()) {
if (embedPage) {
safeSessionStorage.delete(key);
} else {
window.localStorage.removeItem(key);
@ -78,7 +78,7 @@ export const miLocalStorage = {
},
};
if (isEmbedPage()) {
if (embedPage) {
initEmbedPageLocalStorage();
if (_DEV_) console.warn('Using safeSessionStorage as localStorage alternative');
}

View File

@ -24,7 +24,7 @@ import MkContextMenu from '@/components/MkContextMenu.vue';
import { MenuItem } from '@/types/menu.js';
import copyToClipboard from '@/scripts/copy-to-clipboard.js';
import { showMovedDialog } from '@/scripts/show-moved-dialog.js';
import { isEmbedPage } from '@/scripts/embed-page.js';
import { embedPage } from '@/config.js';
export const openingWindowsCount = ref(0);
@ -173,7 +173,7 @@ export async function popup<T extends Component>(
events: ComponentEmit<T> = {} as ComponentEmit<T>,
disposeEvent?: keyof ComponentEmit<T>,
): Promise<{ dispose: () => void }> {
if (isEmbedPage()) return { dispose: () => {} };
if (embedPage) return { dispose: () => {} };
markRaw(component);
@ -633,8 +633,8 @@ export function popupMenu(items: MenuItem[], src?: HTMLElement | EventTarget | n
}
export function contextMenu(items: MenuItem[], ev: MouseEvent): Promise<void> {
if (isEmbedPage()) return Promise.resolve();
if (embedPage) return Promise.resolve();
ev.preventDefault();
return new Promise(resolve => {
let dispose;

View File

@ -4,17 +4,14 @@
*/
import { miLocalStorage } from "@/local-storage.js";
import type { Keys } from "@/local-storage.js";
export function isEmbedPage() {
return location.pathname.startsWith('/embed');
}
import { embedPage } from "@/config.js";
/**
* EmbedページではlocalStorageを使用できないようにしているが
* safeSessionStoragemiLocalStorage内のやつ
*/
export function initEmbedPageLocalStorage() {
if (!isEmbedPage()) {
if (!embedPage) {
return;
}

View File

@ -10,12 +10,12 @@ import {
set as iset,
del as idel,
} from 'idb-keyval';
import { isEmbedPage } from './embed-page.js';
import { embedPage } from '@/config.js';
import { miLocalStorage } from '@/local-storage.js';
const PREFIX = 'idbfallback::';
let idbAvailable = typeof window !== 'undefined' ? !!(window.indexedDB && typeof window.indexedDB.open === 'function' && !isEmbedPage()) : true;
let idbAvailable = typeof window !== 'undefined' ? !!(window.indexedDB && typeof window.indexedDB.open === 'function' && !embedPage) : true;
// iframe.contentWindow.indexedDB.deleteDatabase() がchromeのバグで使用できないため、indexedDBを無効化している。
// バグが治って再度有効化するのであれば、cypressのコマンド内のコメントアウトを外すこと

View File

@ -11,7 +11,7 @@ import { globalEvents } from '@/events.js';
import lightTheme from '@/themes/_light.json5';
import darkTheme from '@/themes/_dark.json5';
import { miLocalStorage } from '@/local-storage.js';
import { isEmbedPage } from '@/scripts/embed-page.js';
import { embedPage } from '@/config.js';
export type Theme = {
id: string;
@ -96,7 +96,7 @@ export function applyTheme(theme: Theme, persist = true) {
document.documentElement.style.setProperty(`--${k}`, v.toString());
}
if (!isEmbedPage()) {
if (!embedPage) {
document.documentElement.style.setProperty('color-scheme', colorScheme);
}

View File

@ -8,7 +8,7 @@ import { markRaw } from 'vue';
import { $i } from '@/account.js';
import { wsOrigin } from '@/config.js';
import { StreamMock } from '@/scripts/stream-mock.js';
import { isEmbedPage } from '@/scripts/embed-page.js';
import { embedPage } from '@/config.js';
// heart beat interval in ms
const HEART_BEAT_INTERVAL = 1000 * 60;
@ -21,7 +21,7 @@ export function useStream(): Misskey.IStream {
if (stream) return stream;
// TODO: No Websocketモードもここで判定
if (isEmbedPage()) {
if (embedPage) {
stream = markRaw(new StreamMock(wsOrigin, null));
return stream;
} else {