feat(workbench): persist topbar notification state

This commit is contained in:
caoxiaozhu
2026-06-03 21:43:35 +08:00
parent b9826a1985
commit 75d5c178e1
15 changed files with 799 additions and 59 deletions

View File

@@ -0,0 +1,38 @@
import { apiRequest } from './api.js'
function normalizeStateItem(item) {
const notificationId = String(item?.notification_id || item?.notificationId || '').trim()
if (!notificationId) {
return null
}
return {
notification_id: notificationId,
read: Boolean(item?.read),
hidden: Boolean(item?.hidden),
context_json: item?.context_json && typeof item.context_json === 'object'
? item.context_json
: {}
}
}
export async function fetchNotificationStates() {
const payload = await apiRequest('/notification-states')
return Array.isArray(payload?.states) ? payload.states : []
}
export async function patchNotificationStates(states = []) {
const normalizedStates = (Array.isArray(states) ? states : [])
.map(normalizeStateItem)
.filter(Boolean)
if (!normalizedStates.length) {
return []
}
const payload = await apiRequest('/notification-states', {
method: 'POST',
body: JSON.stringify({ states: normalizedStates })
})
return Array.isArray(payload?.states) ? payload.states : []
}