From df408ff2a85ffd8f8ca2172c1884ef6e2e0f0d78 Mon Sep 17 00:00:00 2001 From: Mouriya Date: Thu, 19 Sep 2024 21:33:04 +0900 Subject: [PATCH] =?UTF-8?q?=E6=9C=AA=E4=BD=BF=E7=94=A8=E3=81=AE=E3=82=AD?= =?UTF-8?q?=E3=83=A3=E3=83=83=E3=82=B7=E3=83=A5=E3=81=8C=E3=82=AF=E3=83=AA?= =?UTF-8?q?=E3=82=A2=E3=81=95=E3=82=8C=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/actions/cascading-dropdown-selectors.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/plugin/kintone-addins/src/actions/cascading-dropdown-selectors.ts b/plugin/kintone-addins/src/actions/cascading-dropdown-selectors.ts index e671ac2..2923aa2 100644 --- a/plugin/kintone-addins/src/actions/cascading-dropdown-selectors.ts +++ b/plugin/kintone-addins/src/actions/cascading-dropdown-selectors.ts @@ -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));