fix(web/default): guard playground messages against legacy classic shape (#4650)

fix(playground): handle legacy localStorage message shape

Sanitizes old-format saved messages to prevent 500 on playground load.
This commit is contained in:
skynono 2026-05-12 16:23:33 +08:00 committed by GitHub
parent 2b89989f62
commit fde2cac9d3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -88,8 +88,12 @@ export function loadMessages(): Message[] | null {
try { try {
const saved = localStorage.getItem(STORAGE_KEYS.MESSAGES) const saved = localStorage.getItem(STORAGE_KEYS.MESSAGES)
if (saved) { if (saved) {
const parsed: Message[] = JSON.parse(saved) const parsed: unknown = JSON.parse(saved)
const sanitized = sanitizeMessagesOnLoad(parsed) if (!Array.isArray(parsed)) {
localStorage.removeItem(STORAGE_KEYS.MESSAGES)
return null
}
const sanitized = sanitizeMessagesOnLoad(parsed as Message[])
// Persist sanitized result to avoid re-sanitizing on subsequent loads // Persist sanitized result to avoid re-sanitizing on subsequent loads
if (sanitized !== parsed) { if (sanitized !== parsed) {
saveMessages(sanitized) saveMessages(sanitized)