Skip to content

Commit cbf7345

Browse files
authored
Merge pull request #860 from DiscourseGraphs/eng-1503-remove-remnants-of-getformattedconfigtree
ENG-1503: Replace getFormattedConfigTree consumers with direct helper calls
2 parents fc58bf3 + c44b338 commit cbf7345

8 files changed

Lines changed: 90 additions & 43 deletions

File tree

apps/roam/src/components/LeftSidebarView.tsx

Lines changed: 7 additions & 4 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,
@@ -62,6 +63,9 @@ import getPageTitleByPageUid from "roamjs-components/queries/getPageTitleByPageU
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
@@ -36,13 +36,16 @@ import { countReifiedRelations } from "~/utils/createReifiedBlock";
3636
import type { DGSupabaseClient } from "@repo/database/lib/client";
3737
import internalError from "~/utils/internalError";
3838
import SuggestiveModeSettings from "./SuggestiveModeSettings";
39-
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
39+
import discourseConfigRef from "~/utils/discourseConfigRef";
4040
import refreshConfigTree from "~/utils/refreshConfigTree";
4141
import createBlock from "roamjs-components/writes/createBlock";
4242
import deleteBlock from "roamjs-components/writes/deleteBlock";
4343
import { USE_REIFIED_RELATIONS } from "~/data/userSettings";
4444
import posthog from "posthog-js";
4545
import { FeatureFlagPanel } from "./components/BlockPropSettingPanels";
46+
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
47+
import { getUidAndBooleanSetting } from "~/utils/getExportSettings";
48+
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/data/constants";
4649

4750
const NodeRow = ({ node }: { node: PConceptFull }) => {
4851
return (
@@ -354,16 +357,22 @@ const FeatureFlagsTab = (): React.ReactElement => {
354357
const [useReifiedRelations, setUseReifiedRelations] = useState<boolean>(
355358
getFeatureFlag("Reified relation triples"),
356359
);
357-
const settings = useMemo(() => {
360+
const legacySuggestiveModeMeta = useMemo(() => {
358361
refreshConfigTree();
359-
return getFormattedConfigTree();
362+
return {
363+
settingsUid: getPageUidByPageTitle(DISCOURSE_CONFIG_PAGE_TITLE),
364+
suggestiveModeEnabledUid: getUidAndBooleanSetting({
365+
tree: discourseConfigRef.tree,
366+
text: "(BETA) Suggestive Mode Enabled",
367+
}).uid,
368+
};
360369
}, []);
361370

362371
const [suggestiveModeEnabled, setSuggestiveModeEnabled] = useState(
363372
getFeatureFlag("Suggestive mode enabled"),
364373
);
365374
const [suggestiveModeUid, setSuggestiveModeUid] = useState(
366-
settings.suggestiveModeEnabled.uid,
375+
legacySuggestiveModeMeta.suggestiveModeEnabledUid,
367376
);
368377
const [isAlertOpen, setIsAlertOpen] = useState(false);
369378
const [isInstructionOpen, setIsInstructionOpen] = useState(false);
@@ -400,7 +409,7 @@ const FeatureFlagsTab = (): React.ReactElement => {
400409
isOpen={isAlertOpen}
401410
onConfirm={() => {
402411
void createBlock({
403-
parentUid: settings.settingsUid,
412+
parentUid: legacySuggestiveModeMeta.settingsUid,
404413
node: { text: "(BETA) Suggestive Mode Enabled" },
405414
}).then((uid) => {
406415
setSuggestiveModeUid(uid);

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/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: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
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";
@@ -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
/>

apps/roam/src/components/settings/utils/accessors.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@ import { getSubTree } from "roamjs-components/util";
1010
import getSettingValueFromTree from "roamjs-components/util/getSettingValueFromTree";
1111
import internalError from "~/utils/internalError";
1212
import { getSetting } from "~/utils/extensionSettings";
13-
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
13+
import discourseConfigRef, {
14+
getFormattedConfigTree,
15+
} from "~/utils/discourseConfigRef";
1416
import { roamNodeToCondition } from "~/utils/parseQuery";
1517
import type { DiscourseRelation } from "~/utils/getDiscourseRelations";
1618
import type { DiscourseNode } from "~/utils/getDiscourseNodes";
1719
import type { Condition } from "~/utils/types";
1820
import { z } from "zod";
21+
import { getUidAndBooleanSetting } from "~/utils/getExportSettings";
22+
import { getLeftSidebarSettings } from "~/utils/getLeftSidebarSettings";
1923

2024
import {
2125
DG_BLOCK_PROP_SETTINGS_PAGE_TITLE,
@@ -214,10 +218,10 @@ const PERSONAL_SCHEMA_PATH_TO_LEGACY_KEY = new Map<string, string>([
214218
]);
215219

216220
const getLegacyPersonalLeftSidebarSetting = (): unknown[] => {
217-
const settings = getFormattedConfigTree();
221+
const settings = getLeftSidebarSettings(discourseConfigRef.tree);
218222

219223
/* eslint-disable @typescript-eslint/naming-convention */
220-
return settings.leftSidebar.personal.sections.map((section) => ({
224+
return settings.personal.sections.map((section) => ({
221225
name: section.text,
222226
Children: (section.children || []).map((child) => ({
223227
uid: child.text,
@@ -683,9 +687,15 @@ const FEATURE_FLAG_LEGACY_MAP: Partial<
683687
Record<keyof FeatureFlags, () => boolean>
684688
> = {
685689
"Suggestive mode enabled": () =>
686-
getFormattedConfigTree().suggestiveModeEnabled.value,
690+
getUidAndBooleanSetting({
691+
tree: discourseConfigRef.tree,
692+
text: "(BETA) Suggestive Mode Enabled",
693+
}).value,
687694
"Enable left sidebar": () =>
688-
getFormattedConfigTree().leftSidebarEnabled.value,
695+
getUidAndBooleanSetting({
696+
tree: discourseConfigRef.tree,
697+
text: "(BETA) Left Sidebar",
698+
}).value,
689699
};
690700
/* eslint-enable @typescript-eslint/naming-convention */
691701

apps/roam/src/utils/migrateLeftSidebarSettings.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTit
22
import getPageTitleByPageUid from "roamjs-components/queries/getPageTitleByPageUid";
33
import updateBlock from "roamjs-components/writes/updateBlock";
44
import createBlock from "roamjs-components/writes/createBlock";
5-
import { getFormattedConfigTree } from "./discourseConfigRef";
5+
import discourseConfigRef from "./discourseConfigRef";
6+
import { getLeftSidebarSettings } from "./getLeftSidebarSettings";
67
import { DISCOURSE_CONFIG_PAGE_TITLE } from "./renderNodeConfigPage";
78
import refreshConfigTree from "./refreshConfigTree";
89

@@ -37,7 +38,7 @@ const migrateSectionChildren = async (
3738
};
3839

3940
export const migrateLeftSidebarSettings = async () => {
40-
const leftSidebarSettings = getFormattedConfigTree().leftSidebar;
41+
const leftSidebarSettings = getLeftSidebarSettings(discourseConfigRef.tree);
4142

4243
if (!leftSidebarSettings.uid) return;
4344

@@ -51,12 +52,10 @@ export const migrateLeftSidebarSettings = async () => {
5152
await migrateSectionChildren(globalChildren);
5253
}
5354

54-
5555
const allPersonalSections = leftSidebarSettings.allPersonalSections;
5656

57-
for (const [_, userPersonalSection] of Object.entries(
58-
allPersonalSections,
59-
)) {
57+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/naming-convention
58+
for (const [_, userPersonalSection] of Object.entries(allPersonalSections)) {
6059
for (const section of userPersonalSection.sections) {
6160
const children = section.children || [];
6261
if (children.length > 0) {

0 commit comments

Comments
 (0)