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
3 changes: 2 additions & 1 deletion apps/roam/src/components/DiscourseContextOverlay.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import useInViewport from "react-in-viewport/dist/es/lib/useInViewport";
import normalizePageTitle from "roamjs-components/queries/normalizePageTitle";
import deriveDiscourseNodeAttribute from "~/utils/deriveDiscourseNodeAttribute";
import { getDiscourseNodeSetting } from "~/components/settings/utils/accessors";
import { DISCOURSE_NODE_KEYS } from "~/components/settings/utils/settingKeys";
import nanoid from "nanoid";
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
import getDiscourseContextResults from "~/utils/getDiscourseContextResults";
Expand Down Expand Up @@ -181,7 +182,7 @@ const useDiscourseContext = (uid: string, tag: string) => {
if (discourseNode) {
const attribute =
getDiscourseNodeSetting<string>(discourseNode.type, [
"overlay",
DISCOURSE_NODE_KEYS.overlay,
]) || "Overlay";
return deriveDiscourseNodeAttribute({
uid: uid,
Expand Down
3 changes: 2 additions & 1 deletion apps/roam/src/components/DiscourseFloatingMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { FeedbackWidget } from "./BirdEatsBugs";
import { render as renderSettings } from "~/components/settings/Settings";
import posthog from "posthog-js";
import { getPersonalSetting } from "./settings/utils/accessors";
import { PERSONAL_KEYS } from "./settings/utils/settingKeys";

type DiscourseFloatingMenuProps = {
// CSS placement class
Expand Down Expand Up @@ -129,7 +130,7 @@ export const installDiscourseFloatingMenu = (
floatingMenuAnchor.id = ANCHOR_ID;
document.getElementById("app")?.appendChild(floatingMenuAnchor);
}
if (getPersonalSetting<boolean>(["Hide feedback button"])) {
if (getPersonalSetting<boolean>([PERSONAL_KEYS.hideFeedbackButton])) {
floatingMenuAnchor.classList.add("hidden");
}
ReactDOM.render(
Expand Down
9 changes: 6 additions & 3 deletions apps/roam/src/components/DiscourseNodeMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import {
getPersonalSetting,
setPersonalSetting,
} from "~/components/settings/utils/accessors";
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";

type Props = {
textarea?: HTMLTextAreaElement;
Expand Down Expand Up @@ -426,7 +427,9 @@ export const NodeMenuTriggerComponent = ({
const [isActive, setIsActive] = useState(false);
const [comboKey, setComboKey] = useState<IKeyCombo>(
() =>
getPersonalSetting<IKeyCombo>(["Personal node menu trigger"]) || {
getPersonalSetting<IKeyCombo>([
PERSONAL_KEYS.personalNodeMenuTrigger,
]) || {
modifiers: 0,
key: "",
},
Expand All @@ -442,7 +445,7 @@ export const NodeMenuTriggerComponent = ({
const combo = { key: comboObj.key, modifiers: comboObj.modifiers };
setComboKey(combo);
void extensionAPI.settings.set("personal-node-menu-trigger", combo);
setPersonalSetting(["Personal node menu trigger"], combo);
setPersonalSetting([PERSONAL_KEYS.personalNodeMenuTrigger], combo);
},
[extensionAPI],
);
Expand All @@ -464,7 +467,7 @@ export const NodeMenuTriggerComponent = ({
onClick={() => {
setComboKey({ modifiers: 0, key: "" });
void extensionAPI.settings.set("personal-node-menu-trigger", "");
setPersonalSetting(["Personal node menu trigger"], "");
setPersonalSetting([PERSONAL_KEYS.personalNodeMenuTrigger], "");
}}
minimal
/>
Expand Down
5 changes: 3 additions & 2 deletions apps/roam/src/components/DiscourseNodeSearchMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import {
getPersonalSetting,
setPersonalSetting,
} from "~/components/settings/utils/accessors";
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";

type Props = {
textarea: HTMLTextAreaElement;
Expand Down Expand Up @@ -713,7 +714,7 @@ export const NodeSearchMenuTriggerSetting = ({
}) => {
const extensionAPI = onloadArgs.extensionAPI;
const [nodeSearchTrigger, setNodeSearchTrigger] = useState<string>(
getPersonalSetting<string>(["Node search menu trigger"]) ?? "@",
getPersonalSetting<string>([PERSONAL_KEYS.nodeSearchMenuTrigger]) ?? "@",
);

const handleNodeSearchTriggerChange = (
Expand All @@ -728,7 +729,7 @@ export const NodeSearchMenuTriggerSetting = ({

setNodeSearchTrigger(trigger);
void extensionAPI.settings.set("node-search-trigger", trigger);
setPersonalSetting(["Node search menu trigger"], trigger);
setPersonalSetting([PERSONAL_KEYS.nodeSearchMenuTrigger], trigger);
};
return (
<InputGroup
Expand Down
23 changes: 18 additions & 5 deletions apps/roam/src/components/LeftSidebarView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ import {
setGlobalSetting,
setPersonalSetting,
} from "~/components/settings/utils/accessors";
import {
PERSONAL_KEYS,
GLOBAL_KEYS,
LEFT_SIDEBAR_KEYS,
LEFT_SIDEBAR_SETTINGS_KEYS,
} from "~/components/settings/utils/settingKeys";
import type {
LeftSidebarGlobalSettings,
PersonalSection,
Expand Down Expand Up @@ -138,13 +144,20 @@ const toggleFoldedState = ({
}

if (isGlobal) {
setGlobalSetting(["Left sidebar", "Settings", "Folded"], newFolded);
setGlobalSetting(
[
GLOBAL_KEYS.leftSidebar,
LEFT_SIDEBAR_KEYS.settings,
LEFT_SIDEBAR_SETTINGS_KEYS.folded,
],
newFolded,
);
} else if (sectionIndex !== undefined) {
const sections =
getPersonalSetting<PersonalSection[]>(["Left sidebar"]) || [];
getPersonalSetting<PersonalSection[]>([PERSONAL_KEYS.leftSidebar]) || [];
if (sections[sectionIndex]) {
sections[sectionIndex].Settings.Folded = newFolded;
setPersonalSetting(["Left sidebar"], sections);
setPersonalSetting([PERSONAL_KEYS.leftSidebar], sections);
}
}
};
Expand Down Expand Up @@ -314,10 +327,10 @@ const GlobalSection = ({ config }: { config: LeftSidebarConfig["global"] }) => {
const buildConfig = (): LeftSidebarConfig => {
// Read VALUES from accessor (handles flag routing + mismatch detection)
const globalValues = getGlobalSetting<LeftSidebarGlobalSettings>([
"Left sidebar",
GLOBAL_KEYS.leftSidebar,
]);
const personalValues = getPersonalSetting<PersonalSection[]>([
"Left sidebar",
PERSONAL_KEYS.leftSidebar,
]);

// Read UIDs from old system (needed for fold CRUD during dual-write)
Expand Down
8 changes: 7 additions & 1 deletion apps/roam/src/components/QueryEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ import { ALL_SELECTION_SUGGESTIONS } from "~/utils/predefinedSelections";
import { getAlias } from "~/utils/parseResultSettings";
import { setDiscourseNodeSetting } from "~/components/settings/utils/accessors";
import { IndexSchema } from "~/components/settings/utils/zodSchema";
import {
DISCOURSE_NODE_KEYS,
SPECIFICATION_KEYS,
} from "~/components/settings/utils/settingKeys";

const getSourceCandidates = (cs: Condition[]): string[] =>
cs.flatMap((c) =>
Expand Down Expand Up @@ -513,7 +517,9 @@ const QueryEditor: QueryEditorComponent = ({
}

const path =
settingKey === "index" ? ["index"] : ["specification", "query"];
settingKey === "index"
? [DISCOURSE_NODE_KEYS.index]
: [DISCOURSE_NODE_KEYS.specification, SPECIFICATION_KEYS.query];

window.clearTimeout(blockPropSyncTimeoutRef.current);
blockPropSyncTimeoutRef.current = window.setTimeout(() => {
Expand Down
9 changes: 8 additions & 1 deletion apps/roam/src/components/SuggestionsBody.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ import {
getFeatureFlag,
getGlobalSetting,
} from "~/components/settings/utils/accessors";
import {
GLOBAL_KEYS,
SUGGESTIVE_MODE_KEYS,
} from "~/components/settings/utils/settingKeys";
import type { PageGroup } from "~/components/settings/utils/zodSchema";
import { createReifiedRelation } from "~/utils/createReifiedBlock";
import posthog from "posthog-js";
Expand Down Expand Up @@ -420,7 +424,10 @@ const SuggestionsBody = ({

useEffect(() => {
const groups =
getGlobalSetting<PageGroup[]>(["Suggestive mode", "Page groups"]) ?? [];
getGlobalSetting<PageGroup[]>([
GLOBAL_KEYS.suggestiveMode,
SUGGESTIVE_MODE_KEYS.pageGroups,
]) ?? [];

const groupsRecord = groups.reduce(
(acc, group) => {
Expand Down
5 changes: 3 additions & 2 deletions apps/roam/src/components/canvas/DiscourseNodeUtil.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import { createTextJsxFromSpans } from "./DiscourseRelationShape/helpers";
import { loadImage } from "~/utils/loadImage";
import { getRelationColor } from "./DiscourseRelationShape/DiscourseRelationUtil";
import { getPersonalSetting } from "~/components/settings/utils/accessors";
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";
import DiscourseContextOverlay from "~/components/DiscourseContextOverlay";
import { getDiscourseNodeColors } from "~/utils/getDiscourseNodeColors";
import { render as renderToast } from "roamjs-components/components/Toast";
Expand Down Expand Up @@ -431,7 +432,7 @@ export class BaseDiscourseNodeUtil extends BaseBoxShapeUtil<DiscourseNodeShape>
} = discourseContext.nodes[shape.type] || {};
// eslint-disable-next-line react-hooks/rules-of-hooks
const isOverlayEnabled = useMemo(
() => getPersonalSetting<boolean>(["Overlay in canvas"]),
() => getPersonalSetting<boolean>([PERSONAL_KEYS.overlayInCanvas]),
[],
);

Expand Down Expand Up @@ -513,7 +514,7 @@ export class BaseDiscourseNodeUtil extends BaseBoxShapeUtil<DiscourseNodeShape>
});

const autoCanvasRelations = getPersonalSetting<boolean>([
"Auto canvas relations",
PERSONAL_KEYS.autoCanvasRelations,
]);
if (autoCanvasRelations) {
try {
Expand Down
3 changes: 2 additions & 1 deletion apps/roam/src/components/canvas/Tldraw.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ import {
} from "./canvasSyncMode";
import posthog from "posthog-js";
import { getPersonalSetting } from "~/components/settings/utils/accessors";
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";

declare global {
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
Expand Down Expand Up @@ -1454,7 +1455,7 @@ const InsideEditorAndUiContext = ({
const util = editor.getShapeUtil(shape);
if (util instanceof BaseDiscourseNodeUtil) {
const autoCanvasRelations = getPersonalSetting<boolean>([
"Auto canvas relations",
PERSONAL_KEYS.autoCanvasRelations,
]);
if (autoCanvasRelations) {
void util.createExistingRelations({
Expand Down
3 changes: 2 additions & 1 deletion apps/roam/src/components/canvas/uiOverrides.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import { CustomDefaultToolbar } from "./CustomDefaultToolbar";
import { renderModifyNodeDialog } from "~/components/ModifyNodeDialog";
import { CanvasSyncMode } from "./canvasSyncMode";
import { getPersonalSetting } from "~/components/settings/utils/accessors";
import { PERSONAL_KEYS } from "~/components/settings/utils/settingKeys";

// const SyncModeMenuSwitchItem = ({
// checked,
Expand Down Expand Up @@ -326,7 +327,7 @@ export const createUiOverrides = ({
tools: (editor, tools) => {
// Get the custom keyboard shortcut for the discourse tool
const discourseToolCombo = getPersonalSetting<IKeyCombo>([
"Discourse tool shortcut",
PERSONAL_KEYS.discourseToolShortcut,
]) || {
key: "",
modifiers: 0,
Expand Down
13 changes: 10 additions & 3 deletions apps/roam/src/components/settings/DefaultFilters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ import {
getPersonalSetting,
setPersonalSetting,
} from "~/components/settings/utils/accessors";
import {
PERSONAL_KEYS,
QUERY_KEYS,
} from "~/components/settings/utils/settingKeys";

//
// TODO - REWORK THIS COMPONENT
Expand Down Expand Up @@ -110,8 +114,8 @@ const DefaultFilters = ({
Object.fromEntries(
Object.entries(
getPersonalSetting<Record<string, StoredFilters>>([
"Query",
"Default filters",
PERSONAL_KEYS.query,
QUERY_KEYS.defaultFilters,
]) ?? {},
).map(([k, v]) => [
k,
Expand Down Expand Up @@ -148,7 +152,10 @@ const DefaultFilters = ({
]),
);
void extensionAPI.settings.set("default-filters", serialized);
setPersonalSetting(["Query", "Default filters"], serialized);
setPersonalSetting(
[PERSONAL_KEYS.query, QUERY_KEYS.defaultFilters],
serialized,
);
}, [filters]);
return (
<div
Expand Down
7 changes: 4 additions & 3 deletions apps/roam/src/components/settings/DiscourseNodeAttributes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import getFirstChildUidByBlockUid from "roamjs-components/queries/getFirstChildU
import updateBlock from "roamjs-components/writes/updateBlock";
import deleteBlock from "roamjs-components/writes/deleteBlock";
import { setDiscourseNodeSetting } from "~/components/settings/utils/accessors";
import { DISCOURSE_NODE_KEYS } from "~/components/settings/utils/settingKeys";

type Attribute = {
uid: string;
Expand Down Expand Up @@ -82,7 +83,7 @@ const NodeAttributes = ({
const syncToBlockProps = () => {
setDiscourseNodeSetting(
nodeType,
["attributes"],
[DISCOURSE_NODE_KEYS.attributes],
toRecord(attributesRef.current),
);
};
Expand All @@ -107,7 +108,7 @@ const NodeAttributes = ({
setAttributes(updated);
setDiscourseNodeSetting(
nodeType,
["attributes"],
[DISCOURSE_NODE_KEYS.attributes],
toRecord(updated),
);
})
Expand Down Expand Up @@ -145,7 +146,7 @@ const NodeAttributes = ({
setNewAttribute("");
setDiscourseNodeSetting(
nodeType,
["attributes"],
[DISCOURSE_NODE_KEYS.attributes],
toRecord(updated),
);
});
Expand Down
Loading