enhance(frontend): コントロールパネルのユーザ検索で入力された情報をページ遷移で損なわないように (#15438)

* enhance(frontend): コントロールパネルのユーザ検索で入力された情報をページ遷移で損なわないように

* sessionStorageよりも更に短命な方法で持つように変更

* add comment

---------

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
This commit is contained in:
おさむのひと 2025-02-26 16:28:35 +09:00 committed by GitHub
parent 28b40691d5
commit 15b0345335
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 101 additions and 8 deletions

View file

@ -0,0 +1,57 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
export type MemoryStorage = {
has: (key: string) => boolean;
getItem: <T>(key: string) => T | null;
setItem: (key: string, value: unknown) => void;
removeItem: (key: string) => void;
clear: () => void;
size: number;
};
class MemoryStorageImpl implements MemoryStorage {
private readonly storage: Map<string, unknown>;
constructor() {
this.storage = new Map();
}
has(key: string): boolean {
return this.storage.has(key);
}
getItem<T>(key: string): T | null {
return this.storage.has(key) ? this.storage.get(key) as T : null;
}
setItem(key: string, value: unknown): void {
this.storage.set(key, value);
}
removeItem(key: string): void {
this.storage.delete(key);
}
clear(): void {
this.storage.clear();
}
get size(): number {
return this.storage.size;
}
}
export function createMemoryStorage(): MemoryStorage {
return new MemoryStorageImpl();
}
/**
* SessionStorageよりも更に短い期間でクリアされるストレージです
* -
* -
* -
*/
export const defaultMemoryStorage: MemoryStorage = createMemoryStorage();