Skip to content

Commit 03d83ef

Browse files
committed
Update "useSubscribeScheduleAutoModeState()"
1 parent a94f22c commit 03d83ef

File tree

4 files changed

+43
-20
lines changed

4 files changed

+43
-20
lines changed

src/api/__tests__/use-subscriptions.spec.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@ import type {
1111
CtrlContinuousEnabledQuery,
1212
CtrlContinuousEnabledSSubscription,
1313
ScheduleAutoModeModeQuery,
14+
QScheduleAutoModeStateQuery,
15+
ScheduleAutoModeStateSSubscription,
1416
ScheduleAutoModeModeSSubscription,
1517
} from "@/graphql/codegen/generated";
1618

1719
import { useSubscribeContinuousEnabled } from "../use-continuous-enabled-subscription";
1820
import { useSubscribeRunNo } from "../use-run-no-subscription";
1921
import { useSubscribeScheduleAutoModeMode } from "../use-schedule-auto-mode-mode-subscription";
22+
import { useSubscribeScheduleAutoModeState } from "../use-schedule-auto-mode-state-subscription";
2023
import { useSubscribeState } from "../use-state-subscription";
2124
import { useSubscribeTraceIds } from "../use-trace_ids-subscription";
2225

@@ -125,3 +128,27 @@ it("useSubscribeScheduleAutoModeMode", async () => {
125128
fcSubData,
126129
);
127130
});
131+
132+
it("useSubscribeScheduleAutoModeState", async () => {
133+
type QueryData = QScheduleAutoModeStateQuery;
134+
type SubData = ScheduleAutoModeStateSSubscription;
135+
136+
const mapQuery = (d: QueryData | undefined) => d?.schedule.autoMode.state;
137+
const mapSub = (d: SubData | undefined) => d?.scheduleAutoModeState;
138+
139+
const fcScheduleAutoModeState = fc.string();
140+
const fcQueryData: fc.Arbitrary<QueryData> = fc.record({
141+
schedule: fc.record({ autoMode: fc.record({ state: fcScheduleAutoModeState }) }),
142+
});
143+
const fcSubData: fc.Arbitrary<SubData> = fc.record({
144+
scheduleAutoModeState: fcScheduleAutoModeState,
145+
});
146+
147+
await runPropertyTest(
148+
useSubscribeScheduleAutoModeState,
149+
mapQuery,
150+
mapSub,
151+
fcQueryData,
152+
fcSubData,
153+
);
154+
});
Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
import type { ComputedRef } from "vue";
2-
import { computed } from "vue";
32

43
import {
54
useQScheduleAutoModeStateQuery,
65
useScheduleAutoModeStateSSubscription,
76
} from "@/graphql/codegen/generated";
8-
import { onReady } from "@/utils/on-ready";
9-
import type { OnReady } from "@/utils/on-ready";
7+
8+
import { useQueryBackedSubscription } from "./use-query-backed-subscription";
109

1110
interface _ScheduleAutoModeStateSubscription {
12-
autoModeState: ComputedRef<string | undefined>;
11+
data: ComputedRef<string | undefined>;
1312
error: ComputedRef<Error | undefined>;
14-
subscription: ReturnType<typeof useScheduleAutoModeStateSSubscription>;
15-
query: ReturnType<typeof useQScheduleAutoModeStateQuery>;
1613
}
1714

18-
type ScheduleAutoModeStateSubscription = OnReady<_ScheduleAutoModeStateSubscription>;
15+
type ScheduleAutoModeStateSubscription = _ScheduleAutoModeStateSubscription &
16+
PromiseLike<_ScheduleAutoModeStateSubscription>;
1917

2018
export function useSubscribeScheduleAutoModeState(): ScheduleAutoModeStateSubscription {
2119
const query = useQScheduleAutoModeStateQuery({
@@ -24,16 +22,14 @@ export function useSubscribeScheduleAutoModeState(): ScheduleAutoModeStateSubscr
2422
});
2523
const subscription = useScheduleAutoModeStateSSubscription({ variables: {} });
2624

27-
const error = computed(() => subscription.error?.value || query.error?.value);
28-
29-
const autoModeState = computed(() =>
30-
error.value
31-
? undefined
32-
: subscription.data?.value?.scheduleAutoModeState ||
33-
query.data?.value?.schedule.autoMode.state,
34-
);
25+
const mapQueryData = (d: typeof query.data) => d.value?.schedule.autoMode.state;
26+
const mapSubscriptionData = (d: typeof subscription.data) =>
27+
d.value?.scheduleAutoModeState;
3528

36-
const ret = { autoModeState, error, subscription, query };
37-
38-
return onReady(ret, query);
29+
return useQueryBackedSubscription({
30+
query,
31+
subscription,
32+
mapQueryData,
33+
mapSubscriptionData,
34+
});
3935
}

src/components/schedule/auto-mode/auto-mode-button/__tests__/use-pulling.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function createMockSubscription(auto_mode_state: string): Sub {
3434
})();
3535

3636
// Thenable
37-
return onReady({ autoModeState }, ready) as Sub;
37+
return onReady({ data: autoModeState }, ready) as Sub;
3838
}
3939

4040
describe("usePulling()", () => {

src/components/schedule/auto-mode/auto-mode-button/use-pulling.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export function usePulling(): UsePullingReturn {
1515
const subscription = useSubscribeScheduleAutoModeState();
1616

1717
// e.g., "off", "auto_pulling", "auto_running"
18-
const state = subscription.autoModeState;
18+
const state = subscription.data;
1919

2020
// true if the second part of the state is "pulling"
2121
const pulling = computed(() => state.value?.split("_")[1] === "pulling");

0 commit comments

Comments
 (0)