Skip to content

Commit eb19055

Browse files
authored
ENG-1240 - Hide query metadata by default (#685)
* Enhance query metadata settings and toggle functionality - Introduced a new setting for hiding metadata in query results, allowing users to control its visibility. - Updated QueryBuilder and QuerySettings components to utilize the new hideMetadata setting. - Added a command palette option to toggle the visibility of query metadata, improving user experience. - Refactored settings retrieval to ensure consistent handling of the hideMetadata state across components. * Align hideMetadata fallback behavior with other settings accessors.
1 parent 5267dea commit eb19055

4 files changed

Lines changed: 37 additions & 5 deletions

File tree

apps/roam/src/components/QueryBuilder.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +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";
2829

2930
type QueryPageComponent = (props: {
3031
pageUid: string;
@@ -37,7 +38,9 @@ type Props = Parameters<QueryPageComponent>[0];
3738
const QueryBuilder = ({ pageUid, isEditBlock, showAlias }: Props) => {
3839
const extensionAPI = useExtensionAPI();
3940
const hideMetadata = useMemo(
40-
() => !!extensionAPI && !!extensionAPI.settings.get("hide-metadata"),
41+
() =>
42+
(extensionAPI?.settings.get(HIDE_METADATA_KEY) as boolean | undefined) ??
43+
true,
4144
[extensionAPI],
4245
);
4346
const tree = useMemo(() => getBasicTreeByParentUid(pageUid), [pageUid]);

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,21 @@ import { getSettings } from "~/utils/parseResultSettings";
66
import { DEFAULT_PAGE_SIZE_KEY, HIDE_METADATA_KEY } from "~/data/userSettings";
77
import DefaultFilters from "./DefaultFilters";
88
import QueryPagesPanel from "./QueryPagesPanel";
9+
import { setSetting } from "~/utils/extensionSettings";
910

1011
const QuerySettings = ({
1112
extensionAPI,
1213
}: {
1314
extensionAPI: OnloadArgs["extensionAPI"];
1415
}) => {
15-
const { globalPageSize } = getSettings(extensionAPI);
16+
const { globalPageSize, hideMetadata } = getSettings(extensionAPI);
1617
return (
1718
<div className="flex flex-col gap-4 p-1">
1819
<Checkbox
19-
defaultChecked={extensionAPI.settings.get(HIDE_METADATA_KEY) as boolean}
20+
defaultChecked={hideMetadata}
2021
onChange={(e) => {
2122
const target = e.target as HTMLInputElement;
22-
extensionAPI.settings.set(HIDE_METADATA_KEY, target.checked);
23+
void setSetting<boolean>(HIDE_METADATA_KEY, target.checked);
2324
}}
2425
labelElement={
2526
<>
@@ -40,7 +41,7 @@ const QuerySettings = ({
4041
<NumericInput
4142
defaultValue={globalPageSize.toString()}
4243
onValueChange={(value) =>
43-
extensionAPI.settings.set(DEFAULT_PAGE_SIZE_KEY, value)
44+
void extensionAPI.settings.set(DEFAULT_PAGE_SIZE_KEY, value)
4445
}
4546
/>
4647
</Label>

apps/roam/src/utils/parseResultSettings.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import getSettingValuesFromTree from "roamjs-components/util/getSettingValuesFro
1111
import {
1212
DEFAULT_FILTERS_KEY,
1313
DEFAULT_PAGE_SIZE_KEY,
14+
HIDE_METADATA_KEY,
1415
} from "~/data/userSettings";
1516
import getTextByBlockUid from "roamjs-components/queries/getTextByBlockUid";
1617

@@ -81,6 +82,8 @@ export const getSettings = (extensionAPI?: OnloadArgs["extensionAPI"]) => {
8182
),
8283
globalPageSize:
8384
Number(extensionAPI?.settings.get(DEFAULT_PAGE_SIZE_KEY)) || 10,
85+
hideMetadata:
86+
(extensionAPI?.settings.get(HIDE_METADATA_KEY) as boolean) ?? true,
8487
};
8588
};
8689

apps/roam/src/utils/registerCommandPaletteCommands.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
getOverlayHandler,
1717
onPageRefObserverChange,
1818
} from "./pageRefObserverHandlers";
19+
import { HIDE_METADATA_KEY } from "~/data/userSettings";
1920

2021
export const registerCommandPaletteCommands = (onloadArgs: OnloadArgs) => {
2122
const { extensionAPI } = onloadArgs;
@@ -161,6 +162,26 @@ export const registerCommandPaletteCommands = (onloadArgs: OnloadArgs) => {
161162
});
162163
};
163164

165+
const toggleQueryMetadata = async () => {
166+
const currentValue =
167+
(extensionAPI.settings.get(HIDE_METADATA_KEY) as boolean) ?? true;
168+
const newValue = !currentValue;
169+
try {
170+
await extensionAPI.settings.set(HIDE_METADATA_KEY, newValue);
171+
} catch (error) {
172+
const e = error as Error;
173+
renderToast({
174+
id: "query-metadata-toggle-error",
175+
content: `Failed to toggle query metadata: ${e.message}`,
176+
});
177+
return;
178+
}
179+
renderToast({
180+
id: "query-metadata-toggle",
181+
content: `Query metadata ${newValue ? "hidden" : "shown"}`,
182+
});
183+
};
184+
164185
const addCommand = (label: string, callback: () => void) => {
165186
return extensionAPI.ui.commandPalette.addCommand({
166187
label,
@@ -177,6 +198,10 @@ export const registerCommandPaletteCommands = (onloadArgs: OnloadArgs) => {
177198
"DG: Toggle - Discourse context overlay",
178199
toggleDiscourseContextOverlay,
179200
);
201+
void addCommand(
202+
"DG: Toggle - Hide query metadata",
203+
() => void toggleQueryMetadata(),
204+
);
180205
void addCommand("DG: Query block - Create", createQueryBlock);
181206
void addCommand("DG: Query block - Refresh", refreshCurrentQueryBuilder);
182207
};

0 commit comments

Comments
 (0)