mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-03-24 13:03:39 +00:00
* feat: split entry file by locale name
* chore: とりあえず transform hook で雑に分割
* chore: とりあえず transform 結果をいい感じに
* chore: concurrent buildで高速化
* chore: vite ではローケルのないものをビルドして後処理でどうにかするように
* chore: 後処理のためにi18n.jを単体になるように切り出す
* chore: use typescript
* chore: remove unref(i18n) in vite build process
* chore: inline variable
* fix: build error
* fix: i18n.ts.something.replaceAll() become error
* chore: ignore export specifier from error
* chore: support i18n.tsx as object
* chore: process literal for all files
* chore: split config and locale
* chore: inline locale name
* chore: remove updating locale in boot common
* chore: use top-level await to load locales
* chore: inline locale
* chore: remove loading locale from boot.js
* chore: remove loading locale from boot.js
* コメント追加
* fix test; fetchに失敗する
* import削除ログをdebugレベルに
* fix: watch pug
* chore: use hash for entry files
* chore: remove es-module-lexer from dependencies
* chore: move to frontend-builder
* chore: use inline locale in embed
* chore: refetch json on hot reload
* feat: store localization related to boot.js in backend in bootloaderLocales localstorage
* 応急処置を戻す
* fix spex
* fix `Using i18n identifier "e" directly. Skipping inlining.` warning
* refactor: use scriptsDir parameter
* chore: remove i18n from depmap
* chore: make build crash if errors
* error -> warn few conditions
* use inline object
* update localstorage keys
* remove accessing locale localstorage
* fix: failed to process i18n.tsx.aaa({x:i18n.bbb})
70 lines
1.7 KiB
TypeScript
70 lines
1.7 KiB
TypeScript
/*
|
||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||
* SPDX-License-Identifier: AGPL-3.0-only
|
||
*/
|
||
|
||
export type Keys = (
|
||
'v' |
|
||
'lastVersion' |
|
||
'instance' |
|
||
'instanceCachedAt' |
|
||
'account' |
|
||
'latestDonationInfoShownAt' |
|
||
'neverShowDonationInfo' |
|
||
'neverShowLocalOnlyInfo' |
|
||
'modifiedVersionMustProminentlyOfferInAgplV3Section13Read' |
|
||
'lastUsed' |
|
||
'lang' |
|
||
'drafts' |
|
||
'hashtags' |
|
||
'colorScheme' |
|
||
'useSystemFont' |
|
||
'fontSize' |
|
||
'ui' |
|
||
'ui_temp' |
|
||
'bootloaderLocales' |
|
||
'theme' |
|
||
'themeId' |
|
||
'customCss' |
|
||
'chatMessageDrafts' |
|
||
'scratchpad' |
|
||
'debug' |
|
||
'preferences' |
|
||
'latestPreferencesUpdate' |
|
||
'hidePreferencesRestoreSuggestion' |
|
||
'isSafeMode' |
|
||
`miux:${string}` |
|
||
`ui:folder:${string}` |
|
||
`themes:${string}` | // DEPRECATED
|
||
`aiscript:${string}` |
|
||
'lastEmojisFetchedAt' | // DEPRECATED, stored in indexeddb (13.9.0~)
|
||
'emojis' | // DEPRECATED, stored in indexeddb (13.9.0~);
|
||
`channelLastReadedAt:${string}` |
|
||
`idbfallback::${string}`
|
||
);
|
||
|
||
// セッション毎に廃棄されるLocalStorage代替(セーフモードなどで使用できそう)
|
||
//const safeSessionStorage = new Map<Keys, string>();
|
||
|
||
export const miLocalStorage = {
|
||
getItem: (key: Keys): string | null => {
|
||
return window.localStorage.getItem(key);
|
||
},
|
||
setItem: (key: Keys, value: string): void => {
|
||
window.localStorage.setItem(key, value);
|
||
},
|
||
removeItem: (key: Keys): void => {
|
||
window.localStorage.removeItem(key);
|
||
},
|
||
getItemAsJson: (key: Keys): any | undefined => {
|
||
const item = miLocalStorage.getItem(key);
|
||
if (item === null) {
|
||
return undefined;
|
||
}
|
||
return JSON.parse(item);
|
||
},
|
||
setItemAsJson: (key: Keys, value: any): void => {
|
||
miLocalStorage.setItem(key, JSON.stringify(value));
|
||
},
|
||
};
|