@skyvexsoftware/stratos-sdk 0.3.1 → 0.5.0

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.
@@ -107,34 +107,26 @@ export function useTrackingSession() {
107
107
  setElapsedTime(flight?.elapsedMs ?? 0);
108
108
  return;
109
109
  }
110
- const tick = () => {
111
- const start = flight?.timeCaptureStartAt;
112
- const end = flight?.timeCaptureEndAt;
113
- const paused = flight?.totalPausedMs ?? 0;
114
- if (!start) {
115
- setElapsedTime(0);
116
- }
117
- else if (end) {
118
- setElapsedTime(end - start - paused);
119
- }
120
- else if (flight?.status === "paused" && flight.pausedAt) {
121
- setElapsedTime(flight.pausedAt - start - paused);
122
- }
123
- else {
124
- setElapsedTime(Date.now() - start - paused);
125
- }
126
- };
127
- tick();
128
- const interval = setInterval(tick, 1000);
110
+ // Server broadcasts elapsedMs every ~15s. Between broadcasts,
111
+ // tick locally at 1x to keep the UI smooth. The next broadcast
112
+ // corrects any drift (sim-rate-adjusted time is already baked
113
+ // into elapsedMs by the server).
114
+ const serverElapsed = flight?.elapsedMs ?? 0;
115
+ const isPaused = flight?.status === "paused";
116
+ const timeCaptureStarted = flight?.timeCaptureStartAt !== null;
117
+ // Don't interpolate until time capture has started — timer should
118
+ // stay at 0 while on the ground before pushback/takeoff.
119
+ if (isPaused || !timeCaptureStarted) {
120
+ setElapsedTime(serverElapsed);
121
+ return;
122
+ }
123
+ const broadcastTime = Date.now();
124
+ setElapsedTime(serverElapsed);
125
+ const interval = setInterval(() => {
126
+ setElapsedTime(serverElapsed + (Date.now() - broadcastTime));
127
+ }, 1000);
129
128
  return () => clearInterval(interval);
130
- }, [
131
- flight?.timeCaptureStartAt,
132
- flight?.timeCaptureEndAt,
133
- flight?.totalPausedMs,
134
- flight?.status,
135
- flight?.pausedAt,
136
- isActive,
137
- ]);
129
+ }, [flight?.elapsedMs, flight?.status, flight?.timeCaptureStartAt, isActive]);
138
130
  return {
139
131
  isTracking: isActive,
140
132
  isPaused: flight?.status === "paused",
@@ -38,6 +38,7 @@ export type CurrentFlight = {
38
38
  timeCaptureMode: "block" | "air";
39
39
  timeCaptureStartAt: number | null;
40
40
  timeCaptureEndAt: number | null;
41
+ lastTickTime: number | null;
41
42
  currentPhase: FlightPhase;
42
43
  latitude: number;
43
44
  longitude: number;
@@ -70,6 +70,10 @@ export type FlightData = {
70
70
  engine2PctRpm: number;
71
71
  engine3PctRpm: number;
72
72
  engine4PctRpm: number;
73
+ engine1On: boolean;
74
+ engine2On: boolean;
75
+ engine3On: boolean;
76
+ engine4On: boolean;
73
77
  fuelTotalQuantityWeight: number;
74
78
  fuelUsed: number;
75
79
  windDirection: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyvexsoftware/stratos-sdk",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "description": "Plugin SDK for Stratos — types, hooks, and UI components",
5
5
  "author": {
6
6
  "name": "Skyvex Software",