Skip to content

Commit a82b339

Browse files
authored
fix: Fix regression with page settings saving (#5737)
1 parent 9ea5f70 commit a82b339

2 files changed

Lines changed: 40 additions & 6 deletions

File tree

packages/sdk/src/migrations/pages.test.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,32 @@ test("migrates serialized array pages into maps", () => {
124124
).toEqual(new Map([["home", expect.objectContaining({ id: "home" })]]));
125125
});
126126

127+
test("adds missing page meta while migrating serialized pages", () => {
128+
expect(
129+
migratePages({
130+
homePageId: "home",
131+
rootFolderId: "root",
132+
pages: [
133+
{
134+
id: "home",
135+
name: "Home",
136+
path: "",
137+
title: `"Home"`,
138+
rootInstanceId: "homeRoot",
139+
},
140+
],
141+
folders: [
142+
{
143+
id: "root",
144+
name: "Root",
145+
slug: "",
146+
children: ["home"],
147+
},
148+
],
149+
}).pages.get("home")?.meta
150+
).toEqual({});
151+
});
152+
127153
test("migrates serialized record pages into maps", () => {
128154
expect(
129155
migratePages({

packages/sdk/src/migrations/pages.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,23 @@ type MigratablePages = Omit<Pages, "pages" | "folders"> & {
2626
};
2727

2828
const toMap = <Item extends { id: string }>(
29-
items: Item[] | Record<Item["id"], Item> | Map<Item["id"], Item>
29+
items: Item[] | Record<Item["id"], Item> | Map<Item["id"], Item>,
30+
normalizeItem: (item: Item) => Item = (item) => item
3031
) => {
3132
if (items instanceof Map) {
32-
return items;
33+
return new Map(
34+
Array.from(items, ([id, item]) => [id, normalizeItem(item)])
35+
);
3336
}
3437
const list: Item[] = Array.isArray(items) ? items : Object.values(items);
35-
return new Map(list.map((item) => [item.id, item]));
38+
return new Map(list.map((item) => [item.id, normalizeItem(item)]));
3639
};
3740

41+
const normalizePage = (page: Page): Page => ({
42+
...page,
43+
meta: page.meta ?? {},
44+
});
45+
3846
const isLegacyPages = (pages: unknown): pages is LegacyPages => {
3947
if (typeof pages !== "object" || pages === null) {
4048
return false;
@@ -86,7 +94,7 @@ export const migratePages = (pages: unknown): Pages => {
8694
redirects: pages.redirects,
8795
homePageId: pages.homePageId,
8896
rootFolderId: pages.rootFolderId,
89-
pages: toMap<Page>(pages.pages),
97+
pages: toMap<Page>(pages.pages, normalizePage),
9098
folders: toMap<Folder>(pages.folders),
9199
};
92100
}
@@ -96,15 +104,15 @@ export const migratePages = (pages: unknown): Pages => {
96104
}
97105

98106
const homePage: Page = {
99-
...pages.homePage,
107+
...normalizePage(pages.homePage),
100108
path: "",
101109
};
102110
const nextPages: Pages["pages"] = new Map([[homePage.id, homePage]]);
103111
for (const page of pages.pages) {
104112
if (page.id === homePage.id) {
105113
continue;
106114
}
107-
nextPages.set(page.id, page);
115+
nextPages.set(page.id, normalizePage(page));
108116
}
109117

110118
const nextFolders: Pages["folders"] = new Map();

0 commit comments

Comments
 (0)