Files
multica/packages/core/platform/persist-storage.ts
Naiyuan Qing 85cff15427 feat(core): standardize storage + workspace isolation for persist stores
Unify all client-side persistence through StorageAdapter and add
workspace-scoped key namespacing (${key}:${wsId}).

- createPersistStorage: bridge for Zustand persist → StorageAdapter DI
- createWorkspaceAwareStorage: dynamic namespace by current workspace
- Migrate 6 persist stores (navigation, draft, view, scope, my-issues-view, chat)
- Rehydration registry: stores auto-rehydrate on workspace switch
- clearWorkspaceStorage: cleanup on workspace delete / member removal
- Chat store: namespace keys + rehydrate on workspace switch
- Factory view stores (createIssueViewStore): auto-register for rehydration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 15:59:53 +08:00

15 lines
521 B
TypeScript

import type { StateStorage } from "zustand/middleware";
import type { StorageAdapter } from "../types/storage";
/**
* Bridge between Zustand persist middleware and our StorageAdapter DI system.
* For workspace-scoped stores, use createWorkspaceAwareStorage instead.
*/
export function createPersistStorage(adapter: StorageAdapter): StateStorage {
return {
getItem: (key) => adapter.getItem(key),
setItem: (key, value) => adapter.setItem(key, value),
removeItem: (key) => adapter.removeItem(key),
};
}