Skip to content
Closed
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
10 changes: 7 additions & 3 deletions apps/roam/src/components/DiscourseNodeMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ import { getNewDiscourseNodeText } from "~/utils/formatUtils";
import { OnloadArgs } from "roamjs-components/types";
import { formatHexColor } from "./settings/DiscourseNodeCanvasSettings";
import posthog from "posthog-js";
import {
getPersonalSetting,
} from "~/components/settings/utils/accessors";

type Props = {
textarea?: HTMLTextAreaElement;
Expand Down Expand Up @@ -415,9 +418,10 @@ export const NodeMenuTriggerComponent = ({
const [isActive, setIsActive] = useState(false);
const [comboKey, setComboKey] = useState<IKeyCombo>(
() =>
(extensionAPI.settings.get(
"personal-node-menu-trigger",
) as IKeyCombo) || { modifiers: 0, key: "" },
getPersonalSetting<IKeyCombo>(["Personal node menu trigger"]) || {
modifiers: 0,
key: "",
},
);

const handleKeyDown = useCallback(
Expand Down
7 changes: 5 additions & 2 deletions apps/roam/src/components/DiscourseNodeSearchMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@
import getDiscourseNodes, { DiscourseNode } from "~/utils/getDiscourseNodes";
import getDiscourseNodeFormatExpression from "~/utils/getDiscourseNodeFormatExpression";
import { Result } from "~/utils/types";
import { getSetting } from "~/utils/extensionSettings";
import MiniSearch from "minisearch";
import {
getPersonalSetting,
setPersonalSetting,

Check warning on line 30 in apps/roam/src/components/DiscourseNodeSearchMenu.tsx

View workflow job for this annotation

GitHub Actions / eslint (apps/roam)

[eslint (apps/roam)] apps/roam/src/components/DiscourseNodeSearchMenu.tsx#L30

'setPersonalSetting' is defined but never used @typescript-eslint/no-unused-vars
Raw output
   30:3   warning  'setPersonalSetting' is defined but never used                                                                                                                      @typescript-eslint/no-unused-vars
} from "~/components/settings/utils/accessors";

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

const handleNodeSearchTriggerChange = (
Expand Down
16 changes: 11 additions & 5 deletions apps/roam/src/components/settings/DefaultFilters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
import type { OnloadArgs } from "roamjs-components/types";
import type { Filters } from "roamjs-components/components/Filter";
import posthog from "posthog-js";
import {
getPersonalSetting,
setPersonalSetting,
} from "~/components/settings/utils/accessors";

//
// TODO - REWORK THIS COMPONENT
Expand Down Expand Up @@ -105,10 +109,10 @@
const [filters, setFilters] = useState(() =>
Object.fromEntries(
Object.entries(
(extensionAPI.settings.get("default-filters") as Record<
string,
StoredFilters
>) || {},
getPersonalSetting<Record<string, StoredFilters>>([
"Query",
"Default filters",
]) as Record<string, StoredFilters>,
).map(([k, v]) => [
k,
{
Expand Down Expand Up @@ -146,7 +150,9 @@
]),
),
);
}, [filters]);
void extensionAPI.settings.set("default-filters", serialized);
setPersonalSetting(["Query", "Default filters"], serialized);

Check warning on line 154 in apps/roam/src/components/settings/DefaultFilters.tsx

View workflow job for this annotation

GitHub Actions / eslint (apps/roam)

[eslint (apps/roam)] apps/roam/src/components/settings/DefaultFilters.tsx#L154

Unsafe argument of type `any` assigned to a parameter of type `json` @typescript-eslint/no-unsafe-argument
Raw output
  154:54  warning  Unsafe argument of type `any` assigned to a parameter of type `json`                                                                                                @typescript-eslint/no-unsafe-argument
}, [extensionAPI.settings, filters]);
return (
<div
style={{
Expand Down
6 changes: 5 additions & 1 deletion apps/roam/src/components/settings/KeyboardShortcutInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
import Description from "roamjs-components/components/Description";
import { DISCOURSE_TOOL_SHORTCUT_KEY } from "~/data/userSettings";

import {
getPersonalSetting
} from "~/components/settings/utils/accessors";

type KeyboardShortcutInputProps = {
onloadArgs: OnloadArgs;
settingKey: string;
Expand Down Expand Up @@ -74,7 +78,7 @@
const [isActive, setIsActive] = useState(false);
const [comboKey, setComboKey] = useState<IKeyCombo>(
() =>
(extensionAPI.settings.get(settingKey) as IKeyCombo) || {
getPersonalSetting<IKeyCombo>([blockPropKey]) || {

Check warning on line 81 in apps/roam/src/components/settings/KeyboardShortcutInput.tsx

View workflow job for this annotation

GitHub Actions / eslint (apps/roam)

[eslint (apps/roam)] apps/roam/src/components/settings/KeyboardShortcutInput.tsx#L81

Unsafe argument of type `any[]` assigned to a parameter of type `string[]` @typescript-eslint/no-unsafe-argument
Raw output
  81:37  warning  Unsafe argument of type `any[]` assigned to a parameter of type `string[]`  @typescript-eslint/no-unsafe-argument
modifiers: 0,
key: "",
},
Expand Down
30 changes: 16 additions & 14 deletions apps/roam/src/components/settings/QueryPagesPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,16 @@ import { Button, InputGroup } from "@blueprintjs/core";
import posthog from "posthog-js";
import React, { useState } from "react";
import type { OnloadArgs } from "roamjs-components/types";
import {
getPersonalSetting,
setPersonalSetting,
} from "~/components/settings/utils/accessors";

export const getQueryPages = (extensionAPI: OnloadArgs["extensionAPI"]) => {
const value = extensionAPI.settings.get("query-pages") as
| string[]
| string
| Record<string, string>;
return typeof value === "string"
? [value]
: Array.isArray(value)
? value
: typeof value === "object" && value !== null
? Object.keys(value)
: ["queries/*"];
export const getQueryPages = (
extensionAPI: OnloadArgs["extensionAPI"],
): string[] => {
void extensionAPI;
return getPersonalSetting<string[]>(["Query", "Query pages"]) as string[];
};

const QueryPagesPanel = ({
Expand All @@ -24,6 +21,11 @@ const QueryPagesPanel = ({
}) => {
const [texts, setTexts] = useState(() => getQueryPages(extensionAPI));
const [value, setValue] = useState("");
const persistQueryPages = (newTexts: string[]) => {
setPersonalSetting(["Query", "Query pages"], newTexts);
void extensionAPI.settings.set("query-pages", newTexts);
};

return (
<div
className="flex flex-col"
Expand All @@ -45,7 +47,7 @@ const QueryPagesPanel = ({
onClick={() => {
const newTexts = [...texts, value];
setTexts(newTexts);
extensionAPI.settings.set("query-pages", newTexts);
persistQueryPages(newTexts);
setValue("");
posthog.capture("Query Page: Page Format Added", {
newType: value,
Expand All @@ -70,7 +72,7 @@ const QueryPagesPanel = ({
onClick={() => {
const newTexts = texts.filter((_, jndex) => index !== jndex);
setTexts(newTexts);
extensionAPI.settings.set("query-pages", newTexts);
persistQueryPages(newTexts);
}}
/>
</div>
Expand Down
5 changes: 0 additions & 5 deletions apps/roam/src/components/settings/QuerySettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { Label } from "@blueprintjs/core";
import Description from "roamjs-components/components/Description";
import { DEFAULT_PAGE_SIZE_KEY, HIDE_METADATA_KEY } from "~/data/userSettings";
import DefaultFilters from "./DefaultFilters";
import { getQueryPages } from "./QueryPagesPanel";
import {
PersonalFlagPanel,
PersonalNumberPanel,
Expand Down Expand Up @@ -34,9 +33,6 @@ const QuerySettings = ({
title="Default page size"
description="The default page size used for query results"
settingKeys={["Query", "Default page size"]}
initialValue={
Number(extensionAPI.settings.get(DEFAULT_PAGE_SIZE_KEY)) || 10
}
onChange={(value) => {
void extensionAPI.settings.set(DEFAULT_PAGE_SIZE_KEY, value);
posthog.capture("Query Settings: Default Page Size Changed", {
Expand All @@ -48,7 +44,6 @@ const QuerySettings = ({
title="Query pages"
description="The title formats of pages that you would like to serve as pages that generate queries"
settingKeys={["Query", "Query pages"]}
initialValue={getQueryPages(extensionAPI)}
onChange={(values) => {
void extensionAPI.settings.set("query-pages", values);
}}
Expand Down
3 changes: 2 additions & 1 deletion apps/roam/src/components/settings/utils/accessors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,8 @@ const getLegacyPersonalLeftSidebarSetting = (): Record<string, unknown> => {
};

const getLegacyPersonalSetting = (keys: string[]): unknown => {
const mappedOldKey = PERSONAL_OLD_KEY_MAP.get(pathKey(keys));
const path = pathKey(keys);
const mappedOldKey = PERSONAL_OLD_KEY_MAP.get(path);
if (mappedOldKey) {
return getSetting<unknown>(
mappedOldKey,
Expand Down
15 changes: 8 additions & 7 deletions apps/roam/src/utils/initializeObserversAndListeners.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ import {
import { renderNodeTagPopupButton } from "./renderNodeTagPopup";
import { renderImageToolsMenu } from "./renderImageToolsMenu";
import { formatHexColor } from "~/components/settings/DiscourseNodeCanvasSettings";
import { getSetting } from "./extensionSettings";
import { mountLeftSidebar } from "~/components/LeftSidebarView";
import { getUidAndBooleanSetting } from "./getExportSettings";
import { getCleanTagText } from "~/components/settings/NodeConfig";
Expand Down Expand Up @@ -263,12 +262,13 @@ export const initObservers = async ({
key: "trigger",
defaultValue: "\\",
}).trim();
const personalTriggerCombo =
(onloadArgs.extensionAPI.settings.get(
"personal-node-menu-trigger",
) as IKeyCombo) || undefined;
const personalTriggerCombo = getPersonalSetting<IKeyCombo>([
"Personal node menu trigger",
]);
const personalTrigger = personalTriggerCombo?.key;
const personalModifiers = getModifiersFromCombo(personalTriggerCombo);
const personalModifiers = personalTriggerCombo
? getModifiersFromCombo(personalTriggerCombo)
: [];

const leftSidebarObserver = createHTMLObserver({
tag: "DIV",
Expand Down Expand Up @@ -330,7 +330,8 @@ export const initObservers = async ({
}
};

const customTrigger = getSetting("node-search-trigger", "@");
const customTrigger =
getPersonalSetting<string>(["Node search menu trigger"]) ?? "@";

const discourseNodeSearchTriggerListener = (e: Event) => {
const evt = e as KeyboardEvent;
Expand Down
21 changes: 9 additions & 12 deletions apps/roam/src/utils/setQueryPages.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
import { OnloadArgs } from "roamjs-components/types";
import {
getPersonalSetting,
setPersonalSetting,
} from "~/components/settings/utils/accessors";

export const setQueryPages = (onloadArgs: OnloadArgs) => {
const queryPages = onloadArgs.extensionAPI.settings.get("query-pages");
const queryPageArray = Array.isArray(queryPages)
? queryPages
: typeof queryPages === "object"
? []
: typeof queryPages === "string" && queryPages
? [queryPages]
: [];
const queryPages = getPersonalSetting<string[]>(["Query", "Query pages"]);
const queryPageArray = Array.isArray(queryPages) ? queryPages : [];
if (!queryPageArray.includes("discourse-graph/queries/*")) {
onloadArgs.extensionAPI.settings.set("query-pages", [
...queryPageArray,
"discourse-graph/queries/*",
]);
const updated = [...queryPageArray, "discourse-graph/queries/*"];
void onloadArgs.extensionAPI.settings.set("query-pages", updated);
setPersonalSetting(["Query", "Query pages"], updated);
}
};
Loading