Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions apps/roam/src/components/LeftSidebarView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import {
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
import openBlockInSidebar from "roamjs-components/writes/openBlockInSidebar";
import extractRef from "roamjs-components/util/extractRef";
import { getFormattedConfigTree, notify } from "~/utils/discourseConfigRef";
import {
onSettingChange,
settingKeys,
Expand All @@ -32,6 +31,8 @@ import {
mergeGlobalSectionWithAccessor,
mergePersonalSectionsWithAccessor,
} from "~/utils/getLeftSidebarSettings";
import discourseConfigRef, { notify } from "~/utils/discourseConfigRef";
import { getLeftSidebarSettings } from "~/utils/getLeftSidebarSettings";
import {
getGlobalSetting,
getPersonalSetting,
Expand Down Expand Up @@ -62,6 +63,9 @@ import getPageTitleByPageUid from "roamjs-components/queries/getPageTitleByPageU
import { migrateLeftSidebarSettings } from "~/utils/migrateLeftSidebarSettings";
import posthog from "posthog-js";

const getCurrentLeftSidebarConfig = (): LeftSidebarConfig =>
getLeftSidebarSettings(discourseConfigRef.tree);

const parseReference = (text: string) => {
const extracted = extractRef(text);
if (text.startsWith("((") && text.endsWith("))")) {
Expand Down Expand Up @@ -334,7 +338,7 @@ const buildConfig = (): LeftSidebarConfig => {
]);

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

return {
uid: oldConfig.uid,
Expand All @@ -356,7 +360,6 @@ export const useConfig = () => {
const [config, setConfig] = useState(() => buildConfig());
useEffect(() => {
const handleUpdate = () => {
refreshConfigTree();
setConfig(buildConfig());
};
const unsubGlobal = onSettingChange(
Expand Down Expand Up @@ -506,7 +509,7 @@ const LeftSidebarView = ({ onloadArgs }: { onloadArgs: OnloadArgs }) => {
};

const migrateFavorites = async () => {
const config = getFormattedConfigTree().leftSidebar;
const config = getCurrentLeftSidebarConfig();

if (config.favoritesMigrated.value) return;

Expand Down
19 changes: 14 additions & 5 deletions apps/roam/src/components/settings/AdminPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,16 @@ import { countReifiedRelations } from "~/utils/createReifiedBlock";
import type { DGSupabaseClient } from "@repo/database/lib/client";
import internalError from "~/utils/internalError";
import SuggestiveModeSettings from "./SuggestiveModeSettings";
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
import discourseConfigRef from "~/utils/discourseConfigRef";
import refreshConfigTree from "~/utils/refreshConfigTree";
import createBlock from "roamjs-components/writes/createBlock";
import deleteBlock from "roamjs-components/writes/deleteBlock";
import { USE_REIFIED_RELATIONS } from "~/data/userSettings";
import posthog from "posthog-js";
import { FeatureFlagPanel } from "./components/BlockPropSettingPanels";
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
import { getUidAndBooleanSetting } from "~/utils/getExportSettings";
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/data/constants";

const NodeRow = ({ node }: { node: PConceptFull }) => {
return (
Expand Down Expand Up @@ -354,16 +357,22 @@ const FeatureFlagsTab = (): React.ReactElement => {
const [useReifiedRelations, setUseReifiedRelations] = useState<boolean>(
getFeatureFlag("Reified relation triples"),
);
const settings = useMemo(() => {
const legacySuggestiveModeMeta = useMemo(() => {
refreshConfigTree();
return getFormattedConfigTree();
return {
settingsUid: getPageUidByPageTitle(DISCOURSE_CONFIG_PAGE_TITLE),
suggestiveModeEnabledUid: getUidAndBooleanSetting({
tree: discourseConfigRef.tree,
text: "(BETA) Suggestive Mode Enabled",
}).uid,
};
}, []);

const [suggestiveModeEnabled, setSuggestiveModeEnabled] = useState(
getFeatureFlag("Suggestive mode enabled"),
);
const [suggestiveModeUid, setSuggestiveModeUid] = useState(
settings.suggestiveModeEnabled.uid,
legacySuggestiveModeMeta.suggestiveModeEnabledUid,
);
const [isAlertOpen, setIsAlertOpen] = useState(false);
const [isInstructionOpen, setIsInstructionOpen] = useState(false);
Expand Down Expand Up @@ -400,7 +409,7 @@ const FeatureFlagsTab = (): React.ReactElement => {
isOpen={isAlertOpen}
onConfirm={() => {
void createBlock({
parentUid: settings.settingsUid,
parentUid: legacySuggestiveModeMeta.settingsUid,
node: { text: "(BETA) Suggestive Mode Enabled" },
}).then((uid) => {
setSuggestiveModeUid(uid);
Expand Down
7 changes: 3 additions & 4 deletions apps/roam/src/components/settings/ExportSettings.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from "react";
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
import { getExportSettingsAndUids } from "~/utils/getExportSettings";
import {
GlobalFlagPanel,
GlobalNumberPanel,
Expand All @@ -12,9 +12,8 @@ import {
} from "~/components/settings/utils/settingKeys";

const DiscourseGraphExport = () => {
const settings = getFormattedConfigTree();
const exportSettings = settings.export;
const parentUid = settings.export.exportUid;
const exportSettings = getExportSettingsAndUids();
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So the idea is that depending on how we're going to clean up the functions, if we want to clean up by an individual component, we had to remove getFormattedConfigTree. This is because it could be used on multiple components in a single file but also because we cannot remove just a single. It could be the case that if we move a single key when we're trying to clean up that entire tree of components somewhere else in the repo could use that key, which would then break and go outside of the scope of what we're trying to clean up.

const parentUid = exportSettings.exportUid;
Comment thread
sid597 marked this conversation as resolved.
return (
<div className="flex flex-col gap-4 p-1">
{/* TODO: Titles kept as lowercase to match legacy readers in getExportSettings.ts.
Expand Down
28 changes: 23 additions & 5 deletions apps/roam/src/components/settings/GeneralSettings.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useMemo, useState } from "react";
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
import discourseConfigRef from "~/utils/discourseConfigRef";
import refreshConfigTree from "~/utils/refreshConfigTree";
import { Alert, Intent } from "@blueprintjs/core";
import {
Expand All @@ -9,11 +9,29 @@ import {
import { GLOBAL_KEYS } from "~/components/settings/utils/settingKeys";
import { isNewSettingsStoreEnabled } from "./utils/accessors";
import posthog from "posthog-js";
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
import {
getUidAndBooleanSetting,
getUidAndStringSetting,
} from "~/utils/getExportSettings";
import { DISCOURSE_CONFIG_PAGE_TITLE } from "~/data/constants";

const DiscourseGraphHome = () => {
const settings = useMemo(() => {
refreshConfigTree();
return getFormattedConfigTree();
const tree = discourseConfigRef.tree;
return {
settingsUid: getPageUidByPageTitle(DISCOURSE_CONFIG_PAGE_TITLE),
triggerUid: getUidAndStringSetting({ tree, text: "trigger" }).uid,
canvasPageFormatUid: getUidAndStringSetting({
tree,
text: "Canvas Page Format",
}).uid,
leftSidebarEnabledUid: getUidAndBooleanSetting({
tree,
text: "(BETA) Left Sidebar",
}).uid,
};
}, []);

const [isAlertOpen, setIsAlertOpen] = useState(false);
Expand All @@ -26,23 +44,23 @@ const DiscourseGraphHome = () => {
description="The trigger to create the node menu."
settingKeys={[GLOBAL_KEYS.trigger]}
order={0}
uid={settings.trigger.uid}
uid={settings.triggerUid}
parentUid={settings.settingsUid}
/>
<GlobalTextPanel
title="Canvas Page Format"
description="The page format for canvas pages"
settingKeys={[GLOBAL_KEYS.canvasPageFormat]}
order={1}
uid={settings.canvasPageFormat.uid}
uid={settings.canvasPageFormatUid}
parentUid={settings.settingsUid}
/>
<FeatureFlagPanel
title="(BETA) Left Sidebar"
description="Whether or not to enable the left sidebar."
featureKey="Enable left sidebar"
order={2}
uid={settings.leftSidebarEnabled.uid}
uid={settings.leftSidebarEnabledUid}
parentUid={settings.settingsUid}
onAfterChange={(checked: boolean) => {
if (checked && !isNewSettingsStoreEnabled()) {
Expand Down
18 changes: 12 additions & 6 deletions apps/roam/src/components/settings/Settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
import renderOverlay from "roamjs-components/util/renderOverlay";
import DiscourseRelationConfigPanel from "./DiscourseRelationConfigPanel";
import DEFAULT_RELATION_VALUES from "~/data/defaultDiscourseRelations";
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
import discourseConfigRef from "~/utils/discourseConfigRef";
import DiscourseGraphHome from "./GeneralSettings";
import DiscourseGraphExport from "./ExportSettings";
import QuerySettings from "./QuerySettings";
Expand Down Expand Up @@ -73,7 +73,13 @@ export const SettingsDialog = ({
selectedTabId?: TabId;
}) => {
const extensionAPI = onloadArgs.extensionAPI;
const settings = getFormattedConfigTree();
const grammarNode = discourseConfigRef.tree.find(
(node) => node.text === "grammar",
);
const relationsNode = grammarNode?.children.find(
(node) => node.text === "relations",
);
const nodesNode = grammarNode?.children.find((node) => node.text === "nodes");
const nodes = getDiscourseNodes().filter(excludeDefaultNodes);
const [activeTabId, setActiveTabId] = useState<TabId>(
selectedTabId ?? "discourse-graph-home-personal",
Expand Down Expand Up @@ -204,8 +210,8 @@ export const SettingsDialog = ({
<DiscourseRelationConfigPanel
defaultValue={DEFAULT_RELATION_VALUES}
title="Relations"
parentUid={settings.grammarUid}
uid={settings.relationsUid}
parentUid={grammarNode?.uid || ""}
uid={relationsNode?.uid || ""}
/>
}
/>
Expand All @@ -216,8 +222,8 @@ export const SettingsDialog = ({
panel={
<DiscourseNodeConfigPanel
title="Nodes"
uid={settings.nodesUid}
parentUid={settings.grammarUid}
uid={nodesNode?.uid || ""}
parentUid={grammarNode?.uid || ""}
defaultValue={[]}
setSelectedTabId={setActiveTabId}
isPopup={true}
Expand Down
19 changes: 11 additions & 8 deletions apps/roam/src/components/settings/SuggestiveModeSettings.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/naming-convention */
import React, { useEffect, useState } from "react";
import { Button, Intent, Tabs, Tab, TabId } from "@blueprintjs/core";
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
import discourseConfigRef from "~/utils/discourseConfigRef";
import PageGroupsPanel from "./PageGroupPanel";
import createBlock from "roamjs-components/writes/createBlock";
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
Expand All @@ -15,14 +15,17 @@ import {
SUGGESTIVE_MODE_KEYS,
} from "~/components/settings/utils/settingKeys";
import posthog from "posthog-js";
import { getSuggestiveModeConfigAndUids } from "~/utils/getSuggestiveModeConfigSettings";

const SuggestiveModeSettings = () => {
const settings = getFormattedConfigTree();
const suggestiveMode = getSuggestiveModeConfigAndUids(
discourseConfigRef.tree,
);

const [suggestiveModeUid, setSuggestiveModeUid] = useState(
settings.suggestiveMode.parentUid,
suggestiveMode.parentUid,
);
const pageGroupsUid = settings.suggestiveMode.pageGroups.uid;
const pageGroupsUid = suggestiveMode.pageGroups.uid;
Comment thread
sid597 marked this conversation as resolved.

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

const effectiveSuggestiveModeUid =
suggestiveModeUid || settings.suggestiveMode.parentUid;
suggestiveModeUid || suggestiveMode.parentUid;

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

Expand All @@ -67,7 +70,7 @@ const SuggestiveModeSettings = () => {
<PageGroupsPanel
key={pageGroupsUid}
uid={pageGroupsUid}
initialGroups={settings.suggestiveMode.pageGroups.groups}
initialGroups={suggestiveMode.pageGroups.groups}
/>
</div>
}
Expand All @@ -89,7 +92,7 @@ const SuggestiveModeSettings = () => {
SUGGESTIVE_MODE_KEYS.includeCurrentPageRelations,
]}
order={0}
uid={settings.suggestiveMode.includePageRelations.uid}
uid={suggestiveMode.includePageRelations.uid}
parentUid={effectiveSuggestiveModeUid}
onChange={setIncludePageRelations}
/>
Expand All @@ -107,7 +110,7 @@ const SuggestiveModeSettings = () => {
]}
value={includePageRelations ? true : undefined}
order={1}
uid={settings.suggestiveMode.includeParentAndChildren.uid}
uid={suggestiveMode.includeParentAndChildren.uid}
parentUid={effectiveSuggestiveModeUid}
disabled={includePageRelations}
/>
Expand Down
20 changes: 15 additions & 5 deletions apps/roam/src/components/settings/utils/accessors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,16 @@ import { getSubTree } from "roamjs-components/util";
import getSettingValueFromTree from "roamjs-components/util/getSettingValueFromTree";
import internalError from "~/utils/internalError";
import { getSetting } from "~/utils/extensionSettings";
import { getFormattedConfigTree } from "~/utils/discourseConfigRef";
import discourseConfigRef, {
getFormattedConfigTree,
} from "~/utils/discourseConfigRef";
import { roamNodeToCondition } from "~/utils/parseQuery";
import type { DiscourseRelation } from "~/utils/getDiscourseRelations";
import type { DiscourseNode } from "~/utils/getDiscourseNodes";
import type { Condition } from "~/utils/types";
import { z } from "zod";
import { getUidAndBooleanSetting } from "~/utils/getExportSettings";
import { getLeftSidebarSettings } from "~/utils/getLeftSidebarSettings";

import {
DG_BLOCK_PROP_SETTINGS_PAGE_TITLE,
Expand Down Expand Up @@ -214,10 +218,10 @@ const PERSONAL_SCHEMA_PATH_TO_LEGACY_KEY = new Map<string, string>([
]);

const getLegacyPersonalLeftSidebarSetting = (): unknown[] => {
const settings = getFormattedConfigTree();
const settings = getLeftSidebarSettings(discourseConfigRef.tree);

/* eslint-disable @typescript-eslint/naming-convention */
return settings.leftSidebar.personal.sections.map((section) => ({
return settings.personal.sections.map((section) => ({
name: section.text,
Children: (section.children || []).map((child) => ({
uid: child.text,
Expand Down Expand Up @@ -683,9 +687,15 @@ const FEATURE_FLAG_LEGACY_MAP: Partial<
Record<keyof FeatureFlags, () => boolean>
> = {
"Suggestive mode enabled": () =>
getFormattedConfigTree().suggestiveModeEnabled.value,
getUidAndBooleanSetting({
tree: discourseConfigRef.tree,
text: "(BETA) Suggestive Mode Enabled",
}).value,
"Enable left sidebar": () =>
getFormattedConfigTree().leftSidebarEnabled.value,
getUidAndBooleanSetting({
tree: discourseConfigRef.tree,
text: "(BETA) Left Sidebar",
}).value,
};
/* eslint-enable @typescript-eslint/naming-convention */

Expand Down
11 changes: 5 additions & 6 deletions apps/roam/src/utils/migrateLeftSidebarSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTit
import getPageTitleByPageUid from "roamjs-components/queries/getPageTitleByPageUid";
import updateBlock from "roamjs-components/writes/updateBlock";
import createBlock from "roamjs-components/writes/createBlock";
import { getFormattedConfigTree } from "./discourseConfigRef";
import discourseConfigRef from "./discourseConfigRef";
import { getLeftSidebarSettings } from "./getLeftSidebarSettings";
import { DISCOURSE_CONFIG_PAGE_TITLE } from "./renderNodeConfigPage";
import refreshConfigTree from "./refreshConfigTree";

Expand Down Expand Up @@ -37,7 +38,7 @@ const migrateSectionChildren = async (
};

export const migrateLeftSidebarSettings = async () => {
const leftSidebarSettings = getFormattedConfigTree().leftSidebar;
const leftSidebarSettings = getLeftSidebarSettings(discourseConfigRef.tree);

if (!leftSidebarSettings.uid) return;

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


const allPersonalSections = leftSidebarSettings.allPersonalSections;

for (const [_, userPersonalSection] of Object.entries(
allPersonalSections,
)) {
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/naming-convention
for (const [_, userPersonalSection] of Object.entries(allPersonalSections)) {
for (const section of userPersonalSection.sections) {
const children = section.children || [];
if (children.length > 0) {
Expand Down
Loading