Skip to content

Commit 5f263ce

Browse files
committed
dual write page group to block props
1 parent 41b12f4 commit 5f263ce

2 files changed

Lines changed: 32 additions & 14 deletions

File tree

apps/roam/src/components/settings/PageGroupPanel.tsx

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ import createBlock from "roamjs-components/writes/createBlock";
66
import deleteBlock from "roamjs-components/writes/deleteBlock";
77
import getAllPageNames from "roamjs-components/queries/getAllPageNames";
88
import { type PageGroup } from "~/utils/getSuggestiveModeConfigSettings";
9+
import { setGlobalSetting } from "~/components/settings/utils/accessors";
10+
11+
const syncPageGroupsToBlockProps = (groups: PageGroup[]) => {
12+
setGlobalSetting(
13+
["Suggestive Mode", "Page Groups"],
14+
groups.map((g) => ({ name: g.name, pages: g.pages.map((p) => p.name) })),
15+
);
16+
};
917

1018
const PageGroupsPanel = ({
1119
uid,
@@ -31,7 +39,12 @@ const PageGroupsPanel = ({
3139
parentUid: uid,
3240
node: { text: name },
3341
});
34-
setPageGroups([...pageGroups, { uid: newGroupUid, name, pages: [] }]);
42+
const updatedGroups = [
43+
...pageGroups,
44+
{ uid: newGroupUid, name, pages: [] },
45+
];
46+
setPageGroups(updatedGroups);
47+
syncPageGroupsToBlockProps(updatedGroups);
3548
setNewGroupName("");
3649
setGroupKeys((prev) => prev + 1);
3750
} catch (e) {
@@ -42,7 +55,9 @@ const PageGroupsPanel = ({
4255
const removeGroup = async (groupUid: string) => {
4356
try {
4457
await deleteBlock(groupUid);
45-
setPageGroups(pageGroups.filter((g) => g.uid !== groupUid));
58+
const updatedGroups = pageGroups.filter((g) => g.uid !== groupUid);
59+
setPageGroups(updatedGroups);
60+
syncPageGroupsToBlockProps(updatedGroups);
4661
} catch (e) {
4762
console.error("Error removing group", e);
4863
}
@@ -58,13 +73,13 @@ const PageGroupsPanel = ({
5873
parentUid: groupUid,
5974
node: { text: page },
6075
});
61-
setPageGroups(
62-
pageGroups.map((g) =>
63-
g.uid === groupUid
64-
? { ...g, pages: [...g.pages, { uid: newPageUid, name: page }] }
65-
: g,
66-
),
76+
const updatedGroups = pageGroups.map((g) =>
77+
g.uid === groupUid
78+
? { ...g, pages: [...g.pages, { uid: newPageUid, name: page }] }
79+
: g,
6780
);
81+
setPageGroups(updatedGroups);
82+
syncPageGroupsToBlockProps(updatedGroups);
6883
setNewPageInputs((prev) => ({
6984
...prev,
7085
[groupUid]: "",
@@ -81,13 +96,13 @@ const PageGroupsPanel = ({
8196
const removePageFromGroup = async (groupUid: string, pageUid: string) => {
8297
try {
8398
await deleteBlock(pageUid);
84-
setPageGroups(
85-
pageGroups.map((g) =>
86-
g.uid === groupUid
87-
? { ...g, pages: g.pages.filter((p) => p.uid !== pageUid) }
88-
: g,
89-
),
99+
const updatedGroups = pageGroups.map((g) =>
100+
g.uid === groupUid
101+
? { ...g, pages: g.pages.filter((p) => p.uid !== pageUid) }
102+
: g,
90103
);
104+
setPageGroups(updatedGroups);
105+
syncPageGroupsToBlockProps(updatedGroups);
91106
} catch (e) {
92107
console.error("Error removing page from group", e);
93108
}

apps/roam/src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import {
4141
STREAMLINE_STYLING_KEY,
4242
DISALLOW_DIAGNOSTICS,
4343
} from "./data/userSettings";
44+
import { initSchema } from "./components/settings/utils/init";
4445

4546
export const DEFAULT_CANVAS_PAGE_FORMAT = "Canvas/*";
4647

@@ -156,6 +157,8 @@ export default runExtension(async (onloadArgs) => {
156157
});
157158
}
158159

160+
await initSchema();
161+
159162
return {
160163
elements: [
161164
style,

0 commit comments

Comments
 (0)