This commit is contained in:
syuilo
2024-08-23 08:12:09 +09:00
parent 2a915374dd
commit ffba07a6e7
5 changed files with 91 additions and 88 deletions

View File

@@ -2,7 +2,6 @@
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { isEmbedPage } from '@/scripts/embed-page.js';
export type Keys =
'v' |
@@ -45,25 +44,18 @@ export type Keys =
// セッション毎に廃棄されるLocalStorage代替embedなどで使用
const safeSessionStorage = new Map<Keys, string>();
const embedPage = isEmbedPage();
export const miLocalStorage = {
getItem: (key: Keys): string | null => {
if (embedPage) {
return safeSessionStorage.get(key) ?? null;
}
return window.localStorage.getItem(key);
},
setItem: (key: Keys, value: string): void => {
if (embedPage) {
safeSessionStorage.set(key, value);
if (false) {
} else {
window.localStorage.setItem(key, value);
}
},
removeItem: (key: Keys): void => {
if (embedPage) {
safeSessionStorage.delete(key);
if (false) {
} else {
window.localStorage.removeItem(key);
}
@@ -79,26 +71,3 @@ export const miLocalStorage = {
miLocalStorage.setItem(key, JSON.stringify(value));
},
};
if (embedPage) {
/**
* EmbedページではlocalStorageを使用できないようにしているが、
* 動作に必要な値はsafeSessionStorageに移動する
*/
const keysToDuplicate: Keys[] = [
'v',
'instance',
'instanceCachedAt',
'lang',
'locale',
'localeVersion',
];
keysToDuplicate.forEach(key => {
const value = window.localStorage.getItem(key);
if (value && !miLocalStorage.getItem(key)) {
miLocalStorage.setItem(key, value);
}
});
if (_DEV_) console.warn('Using safeSessionStorage as localStorage alternative');
}