diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 2aa2f56f1..aaca3e658 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.52.0", + "version": "4.52.1", "author": "undefined ", "license": "AGPL-3.0", "main": "index.ts", diff --git a/packages/ui-default/pages/problem_detail.page.tsx b/packages/ui-default/pages/problem_detail.page.tsx index ecda3f84f..e2367de11 100644 --- a/packages/ui-default/pages/problem_detail.page.tsx +++ b/packages/ui-default/pages/problem_detail.page.tsx @@ -262,9 +262,9 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor } async function loadAns() { const saved = await db.get('solutions', `${cacheKey}#objective`); - if (!saved) return; + if (typeof saved?.value !== 'string') return; const isValidOption = (v) => v.length === 1 && v.charCodeAt(0) >= 65 && v.charCodeAt(0) <= 90; - Object.assign(ans, JSON.parse(saved)); + Object.assign(ans, JSON.parse(saved?.value || '{}')); for (const [id, val] of Object.entries(ans)) { if (Array.isArray(val)) { for (const v of val) { diff --git a/packages/ui-default/utils/db.ts b/packages/ui-default/utils/db.ts index 9ebb172f0..02e945296 100644 --- a/packages/ui-default/utils/db.ts +++ b/packages/ui-default/utils/db.ts @@ -11,7 +11,7 @@ export const openDB = _open('hydro', 1, { for (const key of keys) { if (key.endsWith('#objective')) { const value = localStorage.getItem(key); - if (value) solutionStore.put({ id: key, value: JSON.parse(value) }); + if (value) solutionStore.put({ id: key, value }); localStorage.removeItem(key); } if (key.startsWith('scoreboard-star/')) localStorage.removeItem(key);