Skip to content

Commit fd332e9

Browse files
committed
Merge remote-tracking branch 'origin/migration-block-init-staging-branch' into eng-1484-reactive-settings-some-settings-require-reloading-the-graph
# Conflicts: # apps/roam/src/index.ts # apps/roam/src/utils/initializeObserversAndListeners.ts
2 parents 7f51464 + 8b23c58 commit fd332e9

22 files changed

Lines changed: 497 additions & 424 deletions

apps/roam/src/components/LeftSidebarView.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import {
2121
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
2222
import openBlockInSidebar from "roamjs-components/writes/openBlockInSidebar";
2323
import extractRef from "roamjs-components/util/extractRef";
24-
import { getFormattedConfigTree, notify } from "~/utils/discourseConfigRef";
2524
import {
2625
onSettingChange,
2726
settingKeys,
@@ -32,6 +31,8 @@ import {
3231
mergeGlobalSectionWithAccessor,
3332
mergePersonalSectionsWithAccessor,
3433
} from "~/utils/getLeftSidebarSettings";
34+
import discourseConfigRef, { notify } from "~/utils/discourseConfigRef";
35+
import { getLeftSidebarSettings } from "~/utils/getLeftSidebarSettings";
3536
import {
3637
getGlobalSetting,
3738
getPersonalSetting,
@@ -57,11 +58,14 @@ import { SettingsDialog } from "./settings/Settings";
5758
import { OnloadArgs } from "roamjs-components/types";
5859
import renderOverlay from "roamjs-components/util/renderOverlay";
5960
import getBasicTreeByParentUid from "roamjs-components/queries/getBasicTreeByParentUid";
60-
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/utils/renderNodeConfigPage";
61+
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/data/constants";
6162
import getPageTitleByPageUid from "roamjs-components/queries/getPageTitleByPageUid";
6263
import { migrateLeftSidebarSettings } from "~/utils/migrateLeftSidebarSettings";
6364
import posthog from "posthog-js";
6465

66+
const getCurrentLeftSidebarConfig = (): LeftSidebarConfig =>
67+
getLeftSidebarSettings(discourseConfigRef.tree);
68+
6569
const parseReference = (text: string) => {
6670
const extracted = extractRef(text);
6771
if (text.startsWith("((") && text.endsWith("))")) {
@@ -334,7 +338,7 @@ const buildConfig = (): LeftSidebarConfig => {
334338
]);
335339

336340
// Read UIDs from old system (needed for fold CRUD during dual-write)
337-
const oldConfig = getFormattedConfigTree().leftSidebar;
341+
const oldConfig = getCurrentLeftSidebarConfig();
338342

339343
return {
340344
uid: oldConfig.uid,
@@ -356,7 +360,6 @@ export const useConfig = () => {
356360
const [config, setConfig] = useState(() => buildConfig());
357361
useEffect(() => {
358362
const handleUpdate = () => {
359-
refreshConfigTree();
360363
setConfig(buildConfig());
361364
};
362365
const unsubGlobal = onSettingChange(
@@ -506,7 +509,7 @@ const LeftSidebarView = ({ onloadArgs }: { onloadArgs: OnloadArgs }) => {
506509
};
507510

508511
const migrateFavorites = async () => {
509-
const config = getFormattedConfigTree().leftSidebar;
512+
const config = getCurrentLeftSidebarConfig();
510513

511514
if (config.favoritesMigrated.value) return;
512515

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

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,16 @@ import { countReifiedRelations } from "~/utils/createReifiedBlock";
4040
import type { DGSupabaseClient } from "@repo/database/lib/client";
4141
import internalError from "~/utils/internalError";
4242
import SuggestiveModeSettings from "./SuggestiveModeSettings";
43-
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
43+
import discourseConfigRef from "~/utils/discourseConfigRef";
4444
import refreshConfigTree from "~/utils/refreshConfigTree";
4545
import createBlock from "roamjs-components/writes/createBlock";
4646
import deleteBlock from "roamjs-components/writes/deleteBlock";
4747
import { USE_REIFIED_RELATIONS } from "~/data/userSettings";
4848
import posthog from "posthog-js";
4949
import { FeatureFlagPanel } from "./components/BlockPropSettingPanels";
50+
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
51+
import { getUidAndBooleanSetting } from "~/utils/getExportSettings";
52+
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/data/constants";
5053

5154
const NodeRow = ({ node }: { node: PConceptFull }) => {
5255
return (
@@ -358,16 +361,22 @@ const FeatureFlagsTab = (): React.ReactElement => {
358361
const [useReifiedRelations, setUseReifiedRelations] = useState<boolean>(
359362
getFeatureFlag("Reified relation triples"),
360363
);
361-
const settings = useMemo(() => {
364+
const legacySuggestiveModeMeta = useMemo(() => {
362365
refreshConfigTree();
363-
return getFormattedConfigTree();
366+
return {
367+
settingsUid: getPageUidByPageTitle(DISCOURSE_CONFIG_PAGE_TITLE),
368+
suggestiveModeEnabledUid: getUidAndBooleanSetting({
369+
tree: discourseConfigRef.tree,
370+
text: "(BETA) Suggestive Mode Enabled",
371+
}).uid,
372+
};
364373
}, []);
365374

366375
const [suggestiveModeEnabled, setSuggestiveModeEnabled] = useState(
367376
getFeatureFlag("Suggestive mode enabled"),
368377
);
369378
const [suggestiveModeUid, setSuggestiveModeUid] = useState(
370-
settings.suggestiveModeEnabled.uid,
379+
legacySuggestiveModeMeta.suggestiveModeEnabledUid,
371380
);
372381
const [isAlertOpen, setIsAlertOpen] = useState(false);
373382
const [isInstructionOpen, setIsInstructionOpen] = useState(false);
@@ -404,7 +413,7 @@ const FeatureFlagsTab = (): React.ReactElement => {
404413
isOpen={isAlertOpen}
405414
onConfirm={() => {
406415
void createBlock({
407-
parentUid: settings.settingsUid,
416+
parentUid: legacySuggestiveModeMeta.settingsUid,
408417
node: { text: "(BETA) Suggestive Mode Enabled" },
409418
}).then((uid) => {
410419
setSuggestiveModeUid(uid);

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ const DiscourseNodeConfigPanel: React.FC<DiscourseNodeConfigPanelProps> = ({
107107
type: valueUid,
108108
shortcut,
109109
format,
110-
backedBy: "user",
111110
}),
112111
);
113112
setNodes([

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from "react";
2-
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
2+
import { getExportSettingsAndUids } from "~/utils/getExportSettings";
33
import {
44
GlobalFlagPanel,
55
GlobalNumberPanel,
@@ -12,9 +12,8 @@ import {
1212
} from "~/components/settings/utils/settingKeys";
1313

1414
const DiscourseGraphExport = () => {
15-
const settings = getFormattedConfigTree();
16-
const exportSettings = settings.export;
17-
const parentUid = settings.export.exportUid;
15+
const exportSettings = getExportSettingsAndUids();
16+
const parentUid = exportSettings.exportUid;
1817
return (
1918
<div className="flex flex-col gap-4 p-1">
2019
{/* TODO: Titles kept as lowercase to match legacy readers in getExportSettings.ts.

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

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useMemo, useState } from "react";
2-
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
2+
import discourseConfigRef from "~/utils/discourseConfigRef";
33
import refreshConfigTree from "~/utils/refreshConfigTree";
44
import { Alert, Intent } from "@blueprintjs/core";
55
import {
@@ -9,11 +9,29 @@ import {
99
import { GLOBAL_KEYS } from "~/components/settings/utils/settingKeys";
1010
import { isNewSettingsStoreEnabled } from "./utils/accessors";
1111
import posthog from "posthog-js";
12+
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
13+
import {
14+
getUidAndBooleanSetting,
15+
getUidAndStringSetting,
16+
} from "~/utils/getExportSettings";
17+
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/data/constants";
1218

1319
const DiscourseGraphHome = () => {
1420
const settings = useMemo(() => {
1521
refreshConfigTree();
16-
return getFormattedConfigTree();
22+
const tree = discourseConfigRef.tree;
23+
return {
24+
settingsUid: getPageUidByPageTitle(DISCOURSE_CONFIG_PAGE_TITLE),
25+
triggerUid: getUidAndStringSetting({ tree, text: "trigger" }).uid,
26+
canvasPageFormatUid: getUidAndStringSetting({
27+
tree,
28+
text: "Canvas Page Format",
29+
}).uid,
30+
leftSidebarEnabledUid: getUidAndBooleanSetting({
31+
tree,
32+
text: "(BETA) Left Sidebar",
33+
}).uid,
34+
};
1735
}, []);
1836

1937
const [isAlertOpen, setIsAlertOpen] = useState(false);
@@ -26,23 +44,23 @@ const DiscourseGraphHome = () => {
2644
description="The trigger to create the node menu."
2745
settingKeys={[GLOBAL_KEYS.trigger]}
2846
order={0}
29-
uid={settings.trigger.uid}
47+
uid={settings.triggerUid}
3048
parentUid={settings.settingsUid}
3149
/>
3250
<GlobalTextPanel
3351
title="Canvas Page Format"
3452
description="The page format for canvas pages"
3553
settingKeys={[GLOBAL_KEYS.canvasPageFormat]}
3654
order={1}
37-
uid={settings.canvasPageFormat.uid}
55+
uid={settings.canvasPageFormatUid}
3856
parentUid={settings.settingsUid}
3957
/>
4058
<FeatureFlagPanel
4159
title="(BETA) Left Sidebar"
4260
description="Whether or not to enable the left sidebar."
4361
featureKey="Enable left sidebar"
4462
order={2}
45-
uid={settings.leftSidebarEnabled.uid}
63+
uid={settings.leftSidebarEnabledUid}
4664
parentUid={settings.settingsUid}
4765
onAfterChange={(checked: boolean) => {
4866
if (checked && !isNewSettingsStoreEnabled()) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import type { RoamBasicNode } from "roamjs-components/types";
1919
import { extractRef, getSubTree } from "roamjs-components/util";
2020
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
2121
import discourseConfigRef from "~/utils/discourseConfigRef";
22-
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/utils/renderNodeConfigPage";
22+
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/data/constants";
2323
import {
2424
getLeftSidebarGlobalSectionConfig,
2525
mergeGlobalSectionWithAccessor,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import {
3838
import { extractRef, getSubTree } from "roamjs-components/util";
3939
import getTextByBlockUid from "roamjs-components/queries/getTextByBlockUid";
4040
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
41-
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/utils/renderNodeConfigPage";
41+
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/data/constants";
4242
import { render as renderToast } from "roamjs-components/components/Toast";
4343
import refreshConfigTree from "~/utils/refreshConfigTree";
4444
import { refreshAndNotify } from "~/components/LeftSidebarView";

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
import renderOverlay from "roamjs-components/util/renderOverlay";
1313
import DiscourseRelationConfigPanel from "./DiscourseRelationConfigPanel";
1414
import DEFAULT_RELATION_VALUES from "~/data/defaultDiscourseRelations";
15-
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
15+
import discourseConfigRef from "~/utils/discourseConfigRef";
1616
import DiscourseGraphHome from "./GeneralSettings";
1717
import DiscourseGraphExport from "./ExportSettings";
1818
import QuerySettings from "./QuerySettings";
@@ -73,7 +73,13 @@ export const SettingsDialog = ({
7373
selectedTabId?: TabId;
7474
}) => {
7575
const extensionAPI = onloadArgs.extensionAPI;
76-
const settings = getFormattedConfigTree();
76+
const grammarNode = discourseConfigRef.tree.find(
77+
(node) => node.text === "grammar",
78+
);
79+
const relationsNode = grammarNode?.children.find(
80+
(node) => node.text === "relations",
81+
);
82+
const nodesNode = grammarNode?.children.find((node) => node.text === "nodes");
7783
const nodes = getDiscourseNodes().filter(excludeDefaultNodes);
7884
const [activeTabId, setActiveTabId] = useState<TabId>(
7985
selectedTabId ?? "discourse-graph-home-personal",
@@ -204,8 +210,8 @@ export const SettingsDialog = ({
204210
<DiscourseRelationConfigPanel
205211
defaultValue={DEFAULT_RELATION_VALUES}
206212
title="Relations"
207-
parentUid={settings.grammarUid}
208-
uid={settings.relationsUid}
213+
parentUid={grammarNode?.uid || ""}
214+
uid={relationsNode?.uid || ""}
209215
/>
210216
}
211217
/>
@@ -216,8 +222,8 @@ export const SettingsDialog = ({
216222
panel={
217223
<DiscourseNodeConfigPanel
218224
title="Nodes"
219-
uid={settings.nodesUid}
220-
parentUid={settings.grammarUid}
225+
uid={nodesNode?.uid || ""}
226+
parentUid={grammarNode?.uid || ""}
221227
defaultValue={[]}
222228
setSelectedTabId={setActiveTabId}
223229
isPopup={true}

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

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/* eslint-disable @typescript-eslint/naming-convention */
22
import React, { useEffect, useState } from "react";
33
import { Button, Intent, Tabs, Tab, TabId } from "@blueprintjs/core";
4-
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
4+
import discourseConfigRef from "~/utils/discourseConfigRef";
55
import PageGroupsPanel from "./PageGroupPanel";
66
import createBlock from "roamjs-components/writes/createBlock";
77
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
8-
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/utils/renderNodeConfigPage";
8+
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/data/constants";
99
import { createOrUpdateDiscourseEmbedding } from "~/utils/syncDgNodesToSupabase";
1010
import { render as renderToast } from "roamjs-components/components/Toast";
1111
import { GlobalFlagPanel } from "./components/BlockPropSettingPanels";
@@ -15,14 +15,17 @@ import {
1515
SUGGESTIVE_MODE_KEYS,
1616
} from "~/components/settings/utils/settingKeys";
1717
import posthog from "posthog-js";
18+
import { getSuggestiveModeConfigAndUids } from "~/utils/getSuggestiveModeConfigSettings";
1819

1920
const SuggestiveModeSettings = () => {
20-
const settings = getFormattedConfigTree();
21+
const suggestiveMode = getSuggestiveModeConfigAndUids(
22+
discourseConfigRef.tree,
23+
);
2124

2225
const [suggestiveModeUid, setSuggestiveModeUid] = useState(
23-
settings.suggestiveMode.parentUid,
26+
suggestiveMode.parentUid,
2427
);
25-
const pageGroupsUid = settings.suggestiveMode.pageGroups.uid;
28+
const pageGroupsUid = suggestiveMode.pageGroups.uid;
2629

2730
const [includePageRelations, setIncludePageRelations] = useState(
2831
getGlobalSetting<boolean>([
@@ -43,7 +46,7 @@ const SuggestiveModeSettings = () => {
4346
}, [suggestiveModeUid]);
4447

4548
const effectiveSuggestiveModeUid =
46-
suggestiveModeUid || settings.suggestiveMode.parentUid;
49+
suggestiveModeUid || suggestiveMode.parentUid;
4750

4851
const [selectedTabId, setSelectedTabId] = useState<TabId>("page-groups");
4952

@@ -67,7 +70,7 @@ const SuggestiveModeSettings = () => {
6770
<PageGroupsPanel
6871
key={pageGroupsUid}
6972
uid={pageGroupsUid}
70-
initialGroups={settings.suggestiveMode.pageGroups.groups}
73+
initialGroups={suggestiveMode.pageGroups.groups}
7174
/>
7275
</div>
7376
}
@@ -89,7 +92,7 @@ const SuggestiveModeSettings = () => {
8992
SUGGESTIVE_MODE_KEYS.includeCurrentPageRelations,
9093
]}
9194
order={0}
92-
uid={settings.suggestiveMode.includePageRelations.uid}
95+
uid={suggestiveMode.includePageRelations.uid}
9396
parentUid={effectiveSuggestiveModeUid}
9497
onChange={setIncludePageRelations}
9598
/>
@@ -107,7 +110,7 @@ const SuggestiveModeSettings = () => {
107110
]}
108111
value={includePageRelations ? true : undefined}
109112
order={1}
110-
uid={settings.suggestiveMode.includeParentAndChildren.uid}
113+
uid={suggestiveMode.includeParentAndChildren.uid}
111114
parentUid={effectiveSuggestiveModeUid}
112115
disabled={includePageRelations}
113116
/>

0 commit comments

Comments
 (0)