Skip to content

Commit 4516dfc

Browse files
committed
port query settings
1 parent 6527b2d commit 4516dfc

20 files changed

Lines changed: 80 additions & 238 deletions

apps/roam/src/components/ModifyNodeDialog.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -283,12 +283,8 @@ const ModifyNodeDialog = ({
283283
}
284284

285285
if (keyImageOption === "query-builder") {
286-
const parentUid = resolveQueryBuilderRef({
287-
queryRef: qbAlias,
288-
extensionAPI,
289-
});
286+
const parentUid = resolveQueryBuilderRef({ queryRef: qbAlias });
290287
const results = await runQuery({
291-
extensionAPI,
292288
parentUid,
293289
// due to query format
294290
// eslint-disable-next-line @typescript-eslint/naming-convention

apps/roam/src/components/QueryBuilder.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { Column } from "~/utils/types";
2525
import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle";
2626
import posthog from "posthog-js";
2727
import parseResultSettings from "~/utils/parseResultSettings";
28-
import { HIDE_METADATA_KEY } from "~/data/userSettings";
28+
import { getPersonalSetting } from "~/components/settings/utils/accessors";
2929

3030
type QueryPageComponent = (props: {
3131
pageUid: string;
@@ -36,12 +36,10 @@ type QueryPageComponent = (props: {
3636
type Props = Parameters<QueryPageComponent>[0];
3737

3838
const QueryBuilder = ({ pageUid, isEditBlock, showAlias }: Props) => {
39-
const extensionAPI = useExtensionAPI();
4039
const hideMetadata = useMemo(
4140
() =>
42-
(extensionAPI?.settings.get(HIDE_METADATA_KEY) as boolean | undefined) ??
43-
true,
44-
[extensionAPI],
41+
getPersonalSetting<boolean>(["Query", "Hide Query Metadata"]) ?? true,
42+
[],
4543
);
4644
const tree = useMemo(() => getBasicTreeByParentUid(pageUid), [pageUid]);
4745
const [isEdit, _setIsEdit] = useState(

apps/roam/src/components/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export { render as renderQueryDrawer } from "./QueryDrawer";
1515
export { openQueryDrawer as QueryDrawer } from "./QueryDrawer";
1616
export { default as QueryEditor } from "./QueryEditor";
1717
export { default as QueryBuilder } from "./QueryBuilder";
18-
export { default as QueryPagesPanel } from "./settings/QueryPagesPanel";
1918
export { default as ResizableDrawer } from "./ResizableDrawer";
2019
export { default as ResultsView } from "./results-view/ResultsView";
2120
export { default as Timeline } from "./results-view/Timeline";

apps/roam/src/components/results-view/ResultsView.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,9 +288,8 @@ const ResultsView: ResultsViewComponent = ({
288288
exportIsOpen = false,
289289
toggleExport,
290290
}) => {
291-
const extensionAPI = useExtensionAPI();
292291
const settings = useMemo(
293-
() => parseResultSettings(parentUid, columns, extensionAPI),
292+
() => parseResultSettings(parentUid, columns),
294293
[parentUid],
295294
);
296295
const [activeSort, setActiveSort] = useState(settings.activeSort);

apps/roam/src/components/settings/DefaultFilters.tsx

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { Button, Intent, InputGroup } from "@blueprintjs/core";
22
import React, { useEffect, useState } from "react";
3-
import type { OnloadArgs } from "roamjs-components/types";
43
import type { Filters } from "roamjs-components/components/Filter";
4+
import {
5+
getPersonalSetting,
6+
setPersonalSetting,
7+
} from "./utils/accessors";
58

69
//
710
// TODO - REWORK THIS COMPONENT
@@ -95,19 +98,15 @@ const Filter = ({
9598
);
9699
};
97100

98-
const DefaultFilters = ({
99-
extensionAPI,
100-
}: {
101-
extensionAPI: OnloadArgs["extensionAPI"];
102-
}) => {
101+
const DefaultFilters = () => {
103102
const [newColumn, setNewColumn] = useState("");
104103
const [filters, setFilters] = useState(() =>
105104
Object.fromEntries(
106105
Object.entries(
107-
(extensionAPI.settings.get("default-filters") as Record<
108-
string,
109-
StoredFilters
110-
>) || {},
106+
getPersonalSetting<Record<string, StoredFilters>>([
107+
"Query",
108+
"Default Filters",
109+
]) || {},
111110
).map(([k, v]) => [
112111
k,
113112
{
@@ -123,8 +122,8 @@ const DefaultFilters = ({
123122
);
124123

125124
useEffect(() => {
126-
extensionAPI.settings.set(
127-
"default-filters",
125+
setPersonalSetting(
126+
["Query", "Default Filters"],
128127
Object.fromEntries(
129128
Object.entries(filters).map(([k, v]) => [
130129
k,
@@ -198,7 +197,6 @@ const DefaultFilters = ({
198197
},
199198
};
200199
setFilters(newFilters);
201-
// extensionAPI.settings.set("default-filters", newFilters);
202200
setNewColumn("");
203201
}}
204202
/>

apps/roam/src/components/settings/QueryPagesPanel.tsx

Lines changed: 0 additions & 82 deletions
This file was deleted.

apps/roam/src/components/settings/QuerySettings.tsx

Lines changed: 26 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,43 @@
11
import React from "react";
2-
import { OnloadArgs } from "roamjs-components/types";
3-
import { Label, NumericInput, Checkbox } from "@blueprintjs/core";
2+
import { Label } from "@blueprintjs/core";
43
import Description from "roamjs-components/components/Description";
5-
import { getSettings } from "~/utils/parseResultSettings";
6-
import { DEFAULT_PAGE_SIZE_KEY, HIDE_METADATA_KEY } from "~/data/userSettings";
74
import DefaultFilters from "./DefaultFilters";
8-
import QueryPagesPanel from "./QueryPagesPanel";
9-
import { setSetting } from "~/utils/extensionSettings";
5+
import {
6+
PersonalFlagPanel,
7+
PersonalNumberPanel,
8+
PersonalMultiTextPanel,
9+
} from "./components/BlockPropSettingPanels";
1010

11-
const QuerySettings = ({
12-
extensionAPI,
13-
}: {
14-
extensionAPI: OnloadArgs["extensionAPI"];
15-
}) => {
16-
const { globalPageSize, hideMetadata } = getSettings(extensionAPI);
11+
const QuerySettings = () => {
1712
return (
1813
<div className="flex flex-col gap-4 p-1">
19-
<Checkbox
20-
defaultChecked={hideMetadata}
21-
onChange={(e) => {
22-
const target = e.target as HTMLInputElement;
23-
void setSetting<boolean>(HIDE_METADATA_KEY, target.checked);
24-
}}
25-
labelElement={
26-
<>
27-
Hide Query Metadata
28-
<Description
29-
description={
30-
"Hide the Roam blocks that are used to power each query"
31-
}
32-
/>
33-
</>
34-
}
14+
<PersonalFlagPanel
15+
title="Hide Query Metadata"
16+
description="Hide the Roam blocks that are used to power each query"
17+
settingKeys={["Query", "Hide Query Metadata"]}
18+
defaultValue={false}
19+
/>
20+
<PersonalNumberPanel
21+
title="Default Page Size"
22+
description="The default page size used for query results"
23+
settingKeys={["Query", "Default Page Size"]}
24+
defaultValue={10}
25+
min={1}
26+
/>
27+
<PersonalMultiTextPanel
28+
title="Query Pages"
29+
description="The title formats of pages that you would like to serve as pages that generate queries"
30+
settingKeys={["Query", "Query Pages"]}
31+
defaultValue={[]}
3532
/>
36-
<Label>
37-
Default Page Size
38-
<Description
39-
description={"The default page size used for query results"}
40-
/>
41-
<NumericInput
42-
defaultValue={globalPageSize.toString()}
43-
onValueChange={(value) =>
44-
void extensionAPI.settings.set(DEFAULT_PAGE_SIZE_KEY, value)
45-
}
46-
/>
47-
</Label>
48-
<Label>
49-
Query Pages
50-
<Description
51-
description={
52-
"The title formats of pages that you would like to serve as pages that generate queries"
53-
}
54-
/>
55-
<QueryPagesPanel extensionAPI={extensionAPI} />
56-
</Label>
5733
<Label>
5834
Default Filters
5935
<Description
6036
description={
6137
"Any filters that should be applied to your results by default"
6238
}
6339
/>
64-
<DefaultFilters extensionAPI={extensionAPI} />
40+
<DefaultFilters />
6541
</Label>
6642
</div>
6743
);

apps/roam/src/components/settings/Settings.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ export const SettingsDialog = ({
148148
id="query-settings"
149149
title="Queries"
150150
className="overflow-y-auto"
151-
panel={<QuerySettings extensionAPI={extensionAPI} />}
151+
panel={<QuerySettings />}
152152
/>
153153
<Tab
154154
id="left-sidebar-personal-settings"

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,11 @@ export const setDiscourseNodeSetting = (
292292
setBlockPropsByUid(pageUid, keys, value);
293293
};
294294

295+
export const getQueryPages = (): string[] => {
296+
const value = getPersonalSetting<string[]>(["Query", "Query Pages"]);
297+
return Array.isArray(value) && value.length > 0 ? value : ["queries/*"];
298+
};
299+
295300
export const getAllDiscourseNodes = (): DiscourseNodeSettings[] => {
296301
const results = window.roamAlphaAPI.q(`
297302
[:find ?uid ?title

apps/roam/src/data/userSettings.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
export const DEFAULT_PAGE_SIZE_KEY = "default-page-size";
21
export const DEFAULT_CANVAS_PAGE_FORMAT_KEY = "default-canvas-page-format";
3-
export const HIDE_METADATA_KEY = "hide-metadata";
4-
export const DEFAULT_FILTERS_KEY = "default-filters";
52
export const QUERY_BUILDER_SETTINGS_KEY = "query-builder-settings";
63
export const AUTO_CANVAS_RELATIONS_KEY = "auto-canvas-relations";
74
export const DISCOURSE_TOOL_SHORTCUT_KEY = "discourse-tool-shortcut";

0 commit comments

Comments
 (0)