Files
MarkLite/src/renderer/db/tabRepository.ts
T
thzxx 7f070eb11d chore: bump version to 0.3.8
Code audit fixes:
- CRITICAL: reorder Markdown pipeline (fixImages before sanitize)
- CRITICAL: fix path prefix separator check
- BLOCKING: remove duplicate useEffect in Editor
- BLOCKING: skip onChange when content unchanged
- BLOCKING: optimize Sidebar re-render with useMemo
- HIGH: cleanup FileWatcher polling intervals
- HIGH: improve validatePath segment check
- HIGH: fix isExternalUpdate race with counter
- HIGH: add will-navigate / setWindowOpenHandler
- HIGH: explicit strip in sanitize schema
- MEDIUM: random temp file suffix instead of Date.now()
- MEDIUM/LOW: add IndexedDB error boundaries
- LOW: support UTF-16 BOM detection
2026-06-18 21:28:35 +08:00

51 lines
1.3 KiB
TypeScript

import { db, type TabSnapshot } from './schema'
import { logError } from '../lib/errorHandler'
export const tabRepository = {
async saveAll(tabs: TabSnapshot[]): Promise<void> {
try {
await db.transaction('rw', db.tabSnapshots, async () => {
await db.tabSnapshots.clear()
await db.tabSnapshots.bulkAdd(tabs)
})
} catch (error) {
logError('保存标签快照失败', error)
}
},
async loadAll(): Promise<TabSnapshot[]> {
try {
return await db.tabSnapshots.orderBy('updatedAt').toArray()
} catch (error) {
logError('加载标签快照失败', error)
return []
}
},
async clearAll(): Promise<void> {
try {
await db.tabSnapshots.clear()
} catch (error) {
logError('清空标签快照失败', error)
}
},
async saveActiveTabId(tabId: string | null): Promise<void> {
try {
await db.activeTab.put({ id: 'current', activeTabId: tabId })
} catch (error) {
logError('保存活动标签ID失败', error)
}
},
async loadActiveTabId(): Promise<string | null> {
try {
const record = await db.activeTab.get('current')
return record?.activeTabId ?? null
} catch (error) {
logError('加载活动标签ID失败', error)
return null
}
}
}