未使用のキャッシュがクリアされる

This commit is contained in:
Mouriya
2024-09-19 21:33:04 +09:00
parent 32ffee0c93
commit df408ff2a8

View File

@@ -71,11 +71,11 @@ namespace DropDownConfig {
const hash = await calculateHash(records, fields);
const storageKey = `dropdown_dictionary::${props.dropDownApp.id}_${hash}`;
const lsDictionary = getFromLocalStorage(storageKey);
// ローカルストレージから辞書を取得しようとし、存在しない場合は再構築
dictionary =
getFromLocalStorage(storageKey) ||
buildDropdownDictionary(records, props.fieldList);
if (!getFromLocalStorage(storageKey)) {
lsDictionary || buildDropdownDictionary(records, props.fieldList);
if (!lsDictionary) {
saveToLocalStorage(storageKey, dictionary);
}
} catch (error) {
@@ -157,9 +157,16 @@ namespace DropDownConfig {
// ローカルストレージから辞書を取得
const getFromLocalStorage = (key: string): DropdownDictionary | null => {
const data = localStorage.getItem(key);
clearUpDictionary(key);
return data ? JSON.parse(data) : null;
};
const clearUpDictionary = (key: string) => {
Object.keys(localStorage)
.filter((k) => k.startsWith("dropdown_dictionary::") && !k.endsWith(key))
.forEach((k) => localStorage.removeItem(k));
};
// 辞書をローカルストレージに保存
const saveToLocalStorage = (key: string, data: DropdownDictionary): void => {
localStorage.setItem(key, JSON.stringify(data));