@skyvexsoftware/stratos-sdk 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -17,6 +17,8 @@ export declare const trackingSessionKeys: {
|
|
|
17
17
|
type UseTrackingSessionReturn = {
|
|
18
18
|
isTracking: boolean;
|
|
19
19
|
isPaused: boolean;
|
|
20
|
+
/** True when the flight was paused due to simulator disconnection. */
|
|
21
|
+
simDisconnected: boolean;
|
|
20
22
|
currentFlight: CurrentFlight | null;
|
|
21
23
|
pendingRecovery: RecoverableFlight | null;
|
|
22
24
|
elapsedTime: number;
|
|
@@ -51,6 +51,7 @@ export function useTrackingSession() {
|
|
|
51
51
|
queryClient.setQueryData(trackingSessionKeys.state, {
|
|
52
52
|
flight: payload.flight,
|
|
53
53
|
pendingRecovery: payload.pendingRecovery,
|
|
54
|
+
simDisconnected: payload.simDisconnected,
|
|
54
55
|
});
|
|
55
56
|
};
|
|
56
57
|
// Refetch on socket connect — catches flights started before the UI loaded
|
|
@@ -66,6 +67,7 @@ export function useTrackingSession() {
|
|
|
66
67
|
}, [socket, queryClient, refetch]);
|
|
67
68
|
const currentFlight = stateData?.flight ?? null;
|
|
68
69
|
const pendingRecovery = stateData?.pendingRecovery ?? null;
|
|
70
|
+
const simDisconnected = stateData?.simDisconnected ?? false;
|
|
69
71
|
const startFlight = useCallback(async (plan, options) => {
|
|
70
72
|
const result = await api("/start", "POST", { flightPlan: plan, options });
|
|
71
73
|
return result.data;
|
|
@@ -85,17 +87,19 @@ export function useTrackingSession() {
|
|
|
85
87
|
const recoverFlight = useCallback(async () => {
|
|
86
88
|
const result = await api("/recover", "POST");
|
|
87
89
|
if (result.success) {
|
|
88
|
-
|
|
90
|
+
// Refetch full state to ensure UI updates even if Socket.io
|
|
91
|
+
// broadcast was missed (e.g. socket not yet connected)
|
|
92
|
+
await refetch();
|
|
89
93
|
}
|
|
90
94
|
return result.success;
|
|
91
|
-
}, [
|
|
95
|
+
}, [refetch]);
|
|
92
96
|
const dismissRecovery = useCallback(async () => {
|
|
93
97
|
const result = await api("/dismiss-recovery", "POST");
|
|
94
98
|
if (result.success) {
|
|
95
|
-
|
|
99
|
+
await refetch();
|
|
96
100
|
}
|
|
97
101
|
return result.success;
|
|
98
|
-
}, [
|
|
102
|
+
}, [refetch]);
|
|
99
103
|
const flight = currentFlight;
|
|
100
104
|
const isActive = flight !== null &&
|
|
101
105
|
(flight.status === "active" || flight.status === "paused");
|
|
@@ -138,6 +142,7 @@ export function useTrackingSession() {
|
|
|
138
142
|
return {
|
|
139
143
|
isTracking: isActive,
|
|
140
144
|
isPaused: flight?.status === "paused",
|
|
145
|
+
simDisconnected,
|
|
141
146
|
currentFlight: flight,
|
|
142
147
|
pendingRecovery,
|
|
143
148
|
elapsedTime,
|
|
@@ -97,6 +97,8 @@ export type RecoverableFlight = {
|
|
|
97
97
|
export type FlightManagerPayload = {
|
|
98
98
|
flight: CurrentFlight | null;
|
|
99
99
|
pendingRecovery: RecoverableFlight | null;
|
|
100
|
+
/** True when the flight was paused due to simulator disconnection. */
|
|
101
|
+
simDisconnected: boolean;
|
|
100
102
|
timestamp: number;
|
|
101
103
|
};
|
|
102
104
|
/** Result returned from startFlight */
|