Browse Source

fix: add consistency check when restoring state from sessionStorage

if totalCount > 0 but results is empty, clear stale state to avoid
showing a count with no results
Hugvvn 1 month ago
parent
commit
9eddf73e37
1 changed files with 11 additions and 0 deletions
  1. 11 0
      src/views/SearchPage.vue

+ 11 - 0
src/views/SearchPage.vue

@@ -186,6 +186,17 @@ function restoreState(): boolean {
     hasRestored.value = true
 
     Object.assign(browseCountDelta, state.browseCountDelta || {})
+
+    // 一致性检查:如果 totalCount > 0 但 results 为空,说明保存时数据不完整,清除状态
+    if (totalCount.value > 0 && results.value.length === 0) {
+      console.warn('[SearchPage] ⚠️ restored state inconsistent: totalCount=', totalCount.value, 'but results is empty, clearing state')
+      sessionStorage.removeItem(STORAGE_KEY)
+      sessionStorage.removeItem(RETURNING_FLAG)
+      totalCount.value = 0
+      searched.value = false
+      return false
+    }
+
     console.log('[SearchPage] ✅ state restored, query:', searchParams.query, 'results:', results.value.length)
     return true
   } catch (e) {