Skip to content

Commit e72e578

Browse files
committed
add ability to enable/disabled queries by type
1 parent b722e2f commit e72e578

7 files changed

+105
-7
lines changed

src/lib/hooks/create-resource-query.svelte.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type { Resource } from '@viamrobotics/sdk';
77
import { toStore, fromStore } from 'svelte/store';
88
import { usePolling } from './use-polling.svelte';
99
import { useQueryLogger } from '../query-logger';
10+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1011

1112
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1213
export type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
@@ -36,6 +37,7 @@ export const createResourceQuery = <T extends Resource, K extends keyof T>(
3637
| [options?: (() => QueryOptions) | QueryOptions]
3738
): { current: QueryObserverResult<ResolvedReturnType<T[K]>> } => {
3839
const debug = useQueryLogger();
40+
const enabledQueries = useEnabledQueries();
3941

4042
let [args, options] = additional;
4143

@@ -62,7 +64,10 @@ export const createResourceQuery = <T extends Resource, K extends keyof T>(
6264
methodName,
6365
...(_args ? [_args] : []),
6466
],
65-
enabled: client.current !== undefined && _options?.enabled !== false,
67+
enabled:
68+
client.current !== undefined &&
69+
_options?.enabled !== false &&
70+
enabledQueries.resourceQueries,
6671
retry: false,
6772
queryFn: async () => {
6873
const clientFunc = client.current?.[method];

src/lib/hooks/create-resource-stream.svelte.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
import type { Resource } from '@viamrobotics/sdk';
88
import { toStore, fromStore } from 'svelte/store';
99
import { useQueryLogger } from '../query-logger';
10+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1011

1112
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1213
export type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
@@ -39,6 +40,7 @@ export const createResourceStream = <T extends Resource, K extends keyof T>(
3940
| [options?: (() => QueryOptions) | QueryOptions]
4041
): { current: QueryResult<StreamItemType<T[K]>> } => {
4142
const debug = useQueryLogger();
43+
const enabledQueries = useEnabledQueries();
4244

4345
let [args, options] = additional;
4446

@@ -94,7 +96,10 @@ export const createResourceStream = <T extends Resource, K extends keyof T>(
9496
const queryOptions = $derived(
9597
createQueryOptions({
9698
queryKey,
97-
enabled: client.current !== undefined && _options?.enabled !== false,
99+
enabled:
100+
client.current !== undefined &&
101+
_options?.enabled !== false &&
102+
enabledQueries.resourceQueries,
98103
queryFn: streamedQuery<StreamItemType<T[K]>>({
99104
queryFn: processStream,
100105
..._options,

src/lib/hooks/create-robot-query.svelte.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type { RobotClient } from '@viamrobotics/sdk';
88
import { toStore, fromStore } from 'svelte/store';
99
import { usePolling } from './use-polling.svelte';
1010
import { useQueryLogger } from '$lib/query-logger';
11+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1112

1213
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1314
export type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
@@ -37,6 +38,7 @@ export const createRobotQuery = <T extends RobotClient, K extends keyof T>(
3738
| [options?: (() => QueryOptions) | QueryOptions]
3839
): { current: QueryObserverResult<ResolvedReturnType<T[K]>> } => {
3940
const debug = useQueryLogger();
41+
const enabledQueries = useEnabledQueries();
4042
let [args, options] = additional;
4143

4244
if (options === undefined && args !== undefined) {
@@ -60,7 +62,10 @@ export const createRobotQuery = <T extends RobotClient, K extends keyof T>(
6062
methodName,
6163
...(_args ? [_args] : []),
6264
],
63-
enabled: client.current !== undefined && _options?.enabled !== false,
65+
enabled:
66+
client.current !== undefined &&
67+
_options?.enabled !== false &&
68+
enabledQueries.robotQueries,
6469
retry: false,
6570
queryFn: async () => {
6671
const clientFunc = client.current?.[method];

src/lib/hooks/create-stream-client.svelte.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ import {
88
} from '@tanstack/svelte-query';
99
import { fromStore, toStore } from 'svelte/store';
1010
import { useQueryLogger } from '../query-logger';
11+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1112

1213
export const createStreamClient = (
1314
partID: () => string,
1415
resourceName: () => string
1516
) => {
1617
const debug = useQueryLogger();
18+
const enabledQueries = useEnabledQueries();
1719
let mediaStream = $state.raw<MediaStream | null>(null);
1820

1921
const client = useRobotClient(partID);
@@ -55,7 +57,7 @@ export const createStreamClient = (
5557
'stream',
5658
'getOptions',
5759
],
58-
enabled: streamClient !== undefined,
60+
enabled: streamClient !== undefined && enabledQueries.streams,
5961
retry: false,
6062
refetchOnWindowFocus: false,
6163
queryFn: async () => {

src/lib/hooks/machine-status.svelte.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import type { PartID } from '$lib/part';
1010
import type { RobotClient } from '@viamrobotics/sdk';
1111
import { usePolling } from './use-polling.svelte';
1212
import { useQueryLogger } from '$lib/query-logger';
13+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1314

1415
const key = Symbol('machine-status-context');
1516

@@ -23,11 +24,12 @@ interface Context {
2324
export const provideMachineStatusContext = (refetchInterval: () => number) => {
2425
const clients = useRobotClients();
2526
const debug = useQueryLogger();
27+
const enabledQueries = useEnabledQueries();
2628

2729
const options = $derived(
2830
Object.entries(clients.current).map(([partID, client]) => {
2931
return queryOptions({
30-
enabled: client !== undefined,
32+
enabled: client !== undefined && enabledQueries.machineStatus,
3133
queryKey: [
3234
'viam-svelte-sdk',
3335
'partID',

src/lib/hooks/resource-names.svelte.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import type { PartID } from '../part';
1111
import { useMachineStatuses } from './machine-status.svelte';
1212
import { useQueryLogger } from '$lib/query-logger';
1313
import { useDebounce } from 'runed';
14+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1415

1516
const key = Symbol('resources-context');
1617

@@ -85,7 +86,7 @@ export const provideResourceNamesContext = () => {
8586
const machineStatuses = useMachineStatuses();
8687
const clients = useRobotClients();
8788
const debug = useQueryLogger();
88-
89+
const enabledQueries = useEnabledQueries();
8990
const partIDs = $derived(Object.keys(clients.current));
9091
const options = $derived.by(() => {
9192
const results = [];
@@ -96,7 +97,9 @@ export const provideResourceNamesContext = () => {
9697
const options = queryOptions({
9798
refetchOnMount: false,
9899
enabled:
99-
client !== undefined && machineStatus?.state === MachineState.Running,
100+
client !== undefined &&
101+
machineStatus?.state === MachineState.Running &&
102+
enabledQueries.resourceNames,
100103
queryKey: [
101104
'viam-svelte-sdk',
102105
'partID',
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
export const useEnabledQueries = () => {
2+
let machineStatus = $state(true);
3+
let resourceNames = $state(true);
4+
let resourceQueries = $state(true);
5+
let robotQueries = $state(true);
6+
let streams = $state(true);
7+
8+
const enableResourceQueries = () => {
9+
resourceQueries = true;
10+
};
11+
12+
const disableResourceQueries = () => {
13+
resourceQueries = false;
14+
};
15+
16+
const enableMachineStatus = () => {
17+
machineStatus = true;
18+
};
19+
20+
const disableMachineStatus = () => {
21+
machineStatus = false;
22+
};
23+
24+
const enableResourceNames = () => {
25+
resourceNames = true;
26+
};
27+
28+
const disableResourceNames = () => {
29+
resourceNames = false;
30+
};
31+
32+
const enableRobotQueries = () => {
33+
robotQueries = true;
34+
};
35+
36+
const disableRobotQueries = () => {
37+
robotQueries = false;
38+
};
39+
40+
const enableStreams = () => {
41+
streams = true;
42+
};
43+
44+
const disableStreams = () => {
45+
streams = false;
46+
};
47+
48+
return {
49+
get resourceQueries() {
50+
return resourceQueries;
51+
},
52+
get machineStatus() {
53+
return machineStatus;
54+
},
55+
get resourceNames() {
56+
return resourceNames;
57+
},
58+
get robotQueries() {
59+
return robotQueries;
60+
},
61+
get streams() {
62+
return streams;
63+
},
64+
65+
enableResourceQueries,
66+
disableResourceQueries,
67+
enableMachineStatus,
68+
disableMachineStatus,
69+
enableResourceNames,
70+
disableResourceNames,
71+
enableRobotQueries,
72+
disableRobotQueries,
73+
enableStreams,
74+
disableStreams,
75+
};
76+
};

0 commit comments

Comments
 (0)