From 6eae7136ecc9251ea41510a5b101d46372bad0a2 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sun, 29 Jun 2025 15:34:25 +0300 Subject: [PATCH] fix storage conflict modal --- src/react/StorageConflictModal.tsx | 6 +++++- src/react/appStorageProvider.ts | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/react/StorageConflictModal.tsx b/src/react/StorageConflictModal.tsx index ac78d90a..85affa7a 100644 --- a/src/react/StorageConflictModal.tsx +++ b/src/react/StorageConflictModal.tsx @@ -16,10 +16,14 @@ export default () => { if (!isModalActive/* || conflicts.length === 0 */) return null + const clampText = (text: string) => { + return text.length > 30 ? text.slice(0, 30) + '...' : text + } + const conflictText = conflicts.map(conflict => { const localTime = formatTimestamp(conflict.localStorageTimestamp) const cookieTime = formatTimestamp(conflict.cookieTimestamp) - return `${conflict.key}: LocalStorage (${localTime}) vs Cookie (${cookieTime})` + return `${conflict.key}: LocalStorage (${localTime}, ${clampText(conflict.localStorageValue)}) vs Cookie (${cookieTime}, ${clampText(conflict.cookieValue)})` }).join('\n') return ( diff --git a/src/react/appStorageProvider.ts b/src/react/appStorageProvider.ts index c65cc701..e36d43cf 100644 --- a/src/react/appStorageProvider.ts +++ b/src/react/appStorageProvider.ts @@ -134,7 +134,14 @@ const detectStorageConflicts = (): StorageConflict[] => { delete localData.timestamp delete cookieData.timestamp - if (JSON.stringify(localData) !== JSON.stringify(cookieData)) { + const isDataEmpty = (data: any) => { + if (typeof data === 'object' && data !== null) { + return Object.keys(data).length === 0 + } + return !data && data !== 0 && data !== false + } + + if (JSON.stringify(localData) !== JSON.stringify(cookieData) && !isDataEmpty(localData) && !isDataEmpty(cookieData)) { conflicts.push({ key, localStorageValue: localData,