Skip to content

Commit fc58bf3

Browse files
authored
Merge pull request #875 from DiscourseGraphs/eng-1499-convert-legacy-blockprop-key-pairs-to-shared-constant-or
ENG-1499: Convert legacy-blockprop key pairs to shared constant or typed key
2 parents 6606ffa + 5a462ce commit fc58bf3

41 files changed

Lines changed: 460 additions & 170 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/roam/src/components/DiscourseContextOverlay.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import useInViewport from "react-in-viewport/dist/es/lib/useInViewport";
1313
import normalizePageTitle from "roamjs-components/queries/normalizePageTitle";
1414
import deriveDiscourseNodeAttribute from "~/utils/deriveDiscourseNodeAttribute";
1515
import { getDiscourseNodeSetting } from "~/components/settings/utils/accessors";
16+
import { DISCOURSE_NODE_KEYS } from "~/components/settings/utils/settingKeys";
1617
import nanoid from "nanoid";
1718
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
1819
import getDiscourseContextResults from "~/utils/getDiscourseContextResults";
@@ -181,7 +182,7 @@ const useDiscourseContext = (uid: string, tag: string) => {
181182
if (discourseNode) {
182183
const attribute =
183184
getDiscourseNodeSetting<string>(discourseNode.type, [
184-
"overlay",
185+
DISCOURSE_NODE_KEYS.overlay,
185186
]) || "Overlay";
186187
return deriveDiscourseNodeAttribute({
187188
uid: uid,

apps/roam/src/components/DiscourseFloatingMenu.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { FeedbackWidget } from "./BirdEatsBugs";
1414
import { render as renderSettings } from "~/components/settings/Settings";
1515
import posthog from "posthog-js";
1616
import { getPersonalSetting } from "./settings/utils/accessors";
17+
import { PERSONAL_KEYS } from "./settings/utils/settingKeys";
1718

1819
type DiscourseFloatingMenuProps = {
1920
// CSS placement class
@@ -129,7 +130,7 @@ export const installDiscourseFloatingMenu = (
129130
floatingMenuAnchor.id = ANCHOR_ID;
130131
document.getElementById("app")?.appendChild(floatingMenuAnchor);
131132
}
132-
if (getPersonalSetting<boolean>(["Hide feedback button"])) {
133+
if (getPersonalSetting<boolean>([PERSONAL_KEYS.hideFeedbackButton])) {
133134
floatingMenuAnchor.classList.add("hidden");
134135
}
135136
ReactDOM.render(

apps/roam/src/components/DiscourseNodeMenu.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {
3131
getPersonalSetting,
3232
setPersonalSetting,
3333
} from "~/components/settings/utils/accessors";
34+
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";
3435

3536
type Props = {
3637
textarea?: HTMLTextAreaElement;
@@ -426,7 +427,9 @@ export const NodeMenuTriggerComponent = ({
426427
const [isActive, setIsActive] = useState(false);
427428
const [comboKey, setComboKey] = useState<IKeyCombo>(
428429
() =>
429-
getPersonalSetting<IKeyCombo>(["Personal node menu trigger"]) || {
430+
getPersonalSetting<IKeyCombo>([
431+
PERSONAL_KEYS.personalNodeMenuTrigger,
432+
]) || {
430433
modifiers: 0,
431434
key: "",
432435
},
@@ -442,7 +445,7 @@ export const NodeMenuTriggerComponent = ({
442445
const combo = { key: comboObj.key, modifiers: comboObj.modifiers };
443446
setComboKey(combo);
444447
void extensionAPI.settings.set("personal-node-menu-trigger", combo);
445-
setPersonalSetting(["Personal node menu trigger"], combo);
448+
setPersonalSetting([PERSONAL_KEYS.personalNodeMenuTrigger], combo);
446449
},
447450
[extensionAPI],
448451
);
@@ -464,7 +467,7 @@ export const NodeMenuTriggerComponent = ({
464467
onClick={() => {
465468
setComboKey({ modifiers: 0, key: "" });
466469
void extensionAPI.settings.set("personal-node-menu-trigger", "");
467-
setPersonalSetting(["Personal node menu trigger"], "");
470+
setPersonalSetting([PERSONAL_KEYS.personalNodeMenuTrigger], "");
468471
}}
469472
minimal
470473
/>

apps/roam/src/components/DiscourseNodeSearchMenu.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
getPersonalSetting,
3030
setPersonalSetting,
3131
} from "~/components/settings/utils/accessors";
32+
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";
3233

3334
type Props = {
3435
textarea: HTMLTextAreaElement;
@@ -713,7 +714,7 @@ export const NodeSearchMenuTriggerSetting = ({
713714
}) => {
714715
const extensionAPI = onloadArgs.extensionAPI;
715716
const [nodeSearchTrigger, setNodeSearchTrigger] = useState<string>(
716-
getPersonalSetting<string>(["Node search menu trigger"]) ?? "@",
717+
getPersonalSetting<string>([PERSONAL_KEYS.nodeSearchMenuTrigger]) ?? "@",
717718
);
718719

719720
const handleNodeSearchTriggerChange = (
@@ -728,7 +729,7 @@ export const NodeSearchMenuTriggerSetting = ({
728729

729730
setNodeSearchTrigger(trigger);
730731
void extensionAPI.settings.set("node-search-trigger", trigger);
731-
setPersonalSetting(["Node search menu trigger"], trigger);
732+
setPersonalSetting([PERSONAL_KEYS.nodeSearchMenuTrigger], trigger);
732733
};
733734
return (
734735
<InputGroup

apps/roam/src/components/LeftSidebarView.tsx

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ import {
3838
setGlobalSetting,
3939
setPersonalSetting,
4040
} from "~/components/settings/utils/accessors";
41+
import {
42+
PERSONAL_KEYS,
43+
GLOBAL_KEYS,
44+
LEFT_SIDEBAR_KEYS,
45+
LEFT_SIDEBAR_SETTINGS_KEYS,
46+
} from "~/components/settings/utils/settingKeys";
4147
import type {
4248
LeftSidebarGlobalSettings,
4349
PersonalSection,
@@ -138,13 +144,20 @@ const toggleFoldedState = ({
138144
}
139145

140146
if (isGlobal) {
141-
setGlobalSetting(["Left sidebar", "Settings", "Folded"], newFolded);
147+
setGlobalSetting(
148+
[
149+
GLOBAL_KEYS.leftSidebar,
150+
LEFT_SIDEBAR_KEYS.settings,
151+
LEFT_SIDEBAR_SETTINGS_KEYS.folded,
152+
],
153+
newFolded,
154+
);
142155
} else if (sectionIndex !== undefined) {
143156
const sections =
144-
getPersonalSetting<PersonalSection[]>(["Left sidebar"]) || [];
157+
getPersonalSetting<PersonalSection[]>([PERSONAL_KEYS.leftSidebar]) || [];
145158
if (sections[sectionIndex]) {
146159
sections[sectionIndex].Settings.Folded = newFolded;
147-
setPersonalSetting(["Left sidebar"], sections);
160+
setPersonalSetting([PERSONAL_KEYS.leftSidebar], sections);
148161
}
149162
}
150163
};
@@ -314,10 +327,10 @@ const GlobalSection = ({ config }: { config: LeftSidebarConfig["global"] }) => {
314327
const buildConfig = (): LeftSidebarConfig => {
315328
// Read VALUES from accessor (handles flag routing + mismatch detection)
316329
const globalValues = getGlobalSetting<LeftSidebarGlobalSettings>([
317-
"Left sidebar",
330+
GLOBAL_KEYS.leftSidebar,
318331
]);
319332
const personalValues = getPersonalSetting<PersonalSection[]>([
320-
"Left sidebar",
333+
PERSONAL_KEYS.leftSidebar,
321334
]);
322335

323336
// Read UIDs from old system (needed for fold CRUD during dual-write)

apps/roam/src/components/QueryEditor.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ import { ALL_SELECTION_SUGGESTIONS } from "~/utils/predefinedSelections";
4646
import { getAlias } from "~/utils/parseResultSettings";
4747
import { setDiscourseNodeSetting } from "~/components/settings/utils/accessors";
4848
import { IndexSchema } from "~/components/settings/utils/zodSchema";
49+
import {
50+
DISCOURSE_NODE_KEYS,
51+
SPECIFICATION_KEYS,
52+
} from "~/components/settings/utils/settingKeys";
4953

5054
const getSourceCandidates = (cs: Condition[]): string[] =>
5155
cs.flatMap((c) =>
@@ -513,7 +517,9 @@ const QueryEditor: QueryEditorComponent = ({
513517
}
514518

515519
const path =
516-
settingKey === "index" ? ["index"] : ["specification", "query"];
520+
settingKey === "index"
521+
? [DISCOURSE_NODE_KEYS.index]
522+
: [DISCOURSE_NODE_KEYS.specification, SPECIFICATION_KEYS.query];
517523

518524
window.clearTimeout(blockPropSyncTimeoutRef.current);
519525
blockPropSyncTimeoutRef.current = window.setTimeout(() => {

apps/roam/src/components/SuggestionsBody.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ import {
2929
getFeatureFlag,
3030
getGlobalSetting,
3131
} from "~/components/settings/utils/accessors";
32+
import {
33+
GLOBAL_KEYS,
34+
SUGGESTIVE_MODE_KEYS,
35+
} from "~/components/settings/utils/settingKeys";
3236
import type { PageGroup } from "~/components/settings/utils/zodSchema";
3337
import { createReifiedRelation } from "~/utils/createReifiedBlock";
3438
import posthog from "posthog-js";
@@ -420,7 +424,10 @@ const SuggestionsBody = ({
420424

421425
useEffect(() => {
422426
const groups =
423-
getGlobalSetting<PageGroup[]>(["Suggestive mode", "Page groups"]) ?? [];
427+
getGlobalSetting<PageGroup[]>([
428+
GLOBAL_KEYS.suggestiveMode,
429+
SUGGESTIVE_MODE_KEYS.pageGroups,
430+
]) ?? [];
424431

425432
const groupsRecord = groups.reduce(
426433
(acc, group) => {

apps/roam/src/components/canvas/DiscourseNodeUtil.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import { createTextJsxFromSpans } from "./DiscourseRelationShape/helpers";
3636
import { loadImage } from "~/utils/loadImage";
3737
import { getRelationColor } from "./DiscourseRelationShape/DiscourseRelationUtil";
3838
import { getPersonalSetting } from "~/components/settings/utils/accessors";
39+
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";
3940
import DiscourseContextOverlay from "~/components/DiscourseContextOverlay";
4041
import { getDiscourseNodeColors } from "~/utils/getDiscourseNodeColors";
4142
import { render as renderToast } from "roamjs-components/components/Toast";
@@ -431,7 +432,7 @@ export class BaseDiscourseNodeUtil extends BaseBoxShapeUtil<DiscourseNodeShape>
431432
} = discourseContext.nodes[shape.type] || {};
432433
// eslint-disable-next-line react-hooks/rules-of-hooks
433434
const isOverlayEnabled = useMemo(
434-
() => getPersonalSetting<boolean>(["Overlay in canvas"]),
435+
() => getPersonalSetting<boolean>([PERSONAL_KEYS.overlayInCanvas]),
435436
[],
436437
);
437438

@@ -513,7 +514,7 @@ export class BaseDiscourseNodeUtil extends BaseBoxShapeUtil<DiscourseNodeShape>
513514
});
514515

515516
const autoCanvasRelations = getPersonalSetting<boolean>([
516-
"Auto canvas relations",
517+
PERSONAL_KEYS.autoCanvasRelations,
517518
]);
518519
if (autoCanvasRelations) {
519520
try {

apps/roam/src/components/canvas/Tldraw.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ import {
120120
} from "./canvasSyncMode";
121121
import posthog from "posthog-js";
122122
import { getPersonalSetting } from "~/components/settings/utils/accessors";
123+
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";
123124

124125
declare global {
125126
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
@@ -1454,7 +1455,7 @@ const InsideEditorAndUiContext = ({
14541455
const util = editor.getShapeUtil(shape);
14551456
if (util instanceof BaseDiscourseNodeUtil) {
14561457
const autoCanvasRelations = getPersonalSetting<boolean>([
1457-
"Auto canvas relations",
1458+
PERSONAL_KEYS.autoCanvasRelations,
14581459
]);
14591460
if (autoCanvasRelations) {
14601461
void util.createExistingRelations({

apps/roam/src/components/canvas/uiOverrides.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import { CustomDefaultToolbar } from "./CustomDefaultToolbar";
5050
import { renderModifyNodeDialog } from "~/components/ModifyNodeDialog";
5151
import { CanvasSyncMode } from "./canvasSyncMode";
5252
import { getPersonalSetting } from "~/components/settings/utils/accessors";
53+
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";
5354

5455
// const SyncModeMenuSwitchItem = ({
5556
// checked,
@@ -326,7 +327,7 @@ export const createUiOverrides = ({
326327
tools: (editor, tools) => {
327328
// Get the custom keyboard shortcut for the discourse tool
328329
const discourseToolCombo = getPersonalSetting<IKeyCombo>([
329-
"Discourse tool shortcut",
330+
PERSONAL_KEYS.discourseToolShortcut,
330331
]) || {
331332
key: "",
332333
modifiers: 0,

0 commit comments

Comments
 (0)