mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-27 04:56:20 +02:00
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>
15 lines
521 B
TypeScript
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),
|
|
};
|
|
}
|