mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-08 22:22:17 +02:00
- Introduced a comprehensive specification for renaming `searchSpace` to `workspace` in `surfsense_web` and `surfsense_desktop`, ensuring all TypeScript identifiers, React props, and local data structures are updated. - Implemented migration shims for persisted local state to prevent data loss during the transition. - Updated observability metrics and IPC channels to reflect the new naming convention. - Removed legacy `active-search-space` module and replaced it with `active-workspace` to maintain consistency. - Ensured no behavioral changes or data loss for users during the renaming process.
19 lines
688 B
TypeScript
19 lines
688 B
TypeScript
/**
|
|
* One-time read-migration for persisted tabs: legacy state stored the workspace
|
|
* as `searchSpaceId`. Map it to `workspaceId` on read so already-open tabs keep
|
|
* their workspace association after the rename. Pure + dependency-free so it can
|
|
* be unit-checked without loading the atom module.
|
|
*/
|
|
export function migrateLegacyTabs<T extends { tabs: Array<{ workspaceId?: number }> }>(
|
|
state: T
|
|
): T {
|
|
return {
|
|
...state,
|
|
tabs: state.tabs.map((t) => {
|
|
const legacy = t as { workspaceId?: number; searchSpaceId?: number };
|
|
return legacy.workspaceId === undefined && legacy.searchSpaceId !== undefined
|
|
? { ...t, workspaceId: legacy.searchSpaceId }
|
|
: t;
|
|
}),
|
|
};
|
|
}
|