@terreno/rtk 0.13.3 → 0.14.1

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.
Files changed (163) hide show
  1. package/dist/authSlice.d.ts +4 -4
  2. package/dist/authSlice.d.ts.map +1 -1
  3. package/dist/authSlice.js +7 -7
  4. package/dist/authSlice.js.map +1 -1
  5. package/dist/authSlice.test.js +2 -10
  6. package/dist/authSlice.test.js.map +1 -1
  7. package/dist/authSliceNative.test.js +11 -3
  8. package/dist/authSliceNative.test.js.map +1 -1
  9. package/dist/betterAuthSlice.d.ts.map +1 -1
  10. package/dist/betterAuthSlice.js +3 -2
  11. package/dist/betterAuthSlice.js.map +1 -1
  12. package/dist/betterAuthSlice.test.js +1 -25
  13. package/dist/betterAuthSlice.test.js.map +1 -1
  14. package/dist/constants.d.ts +3 -0
  15. package/dist/constants.d.ts.map +1 -1
  16. package/dist/constants.js +11 -3
  17. package/dist/constants.js.map +1 -1
  18. package/dist/constants.test.js +85 -2
  19. package/dist/constants.test.js.map +1 -1
  20. package/dist/emptyApi.d.ts +3 -1
  21. package/dist/emptyApi.d.ts.map +1 -1
  22. package/dist/emptyApi.js +7 -2
  23. package/dist/emptyApi.js.map +1 -1
  24. package/dist/index.d.ts +8 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +8 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/isolated/constants.isolated.js +7 -1
  29. package/dist/isolated/constants.isolated.js.map +1 -1
  30. package/dist/isolated/offlineMiddleware.isolated.d.ts +2 -0
  31. package/dist/isolated/offlineMiddleware.isolated.d.ts.map +1 -0
  32. package/dist/isolated/offlineMiddleware.isolated.js +516 -0
  33. package/dist/isolated/offlineMiddleware.isolated.js.map +1 -0
  34. package/dist/isolated/offlineMiddleware.native.isolated.d.ts +2 -0
  35. package/dist/isolated/offlineMiddleware.native.isolated.d.ts.map +1 -0
  36. package/dist/isolated/offlineMiddleware.native.isolated.js +70 -0
  37. package/dist/isolated/offlineMiddleware.native.isolated.js.map +1 -0
  38. package/dist/isolated/useUpgradeCheck.mobile.isolated.d.ts +2 -0
  39. package/dist/isolated/useUpgradeCheck.mobile.isolated.d.ts.map +1 -0
  40. package/dist/{useUpgradeCheck.mobile.test.js → isolated/useUpgradeCheck.mobile.isolated.js} +13 -5
  41. package/dist/isolated/useUpgradeCheck.mobile.isolated.js.map +1 -0
  42. package/dist/isolated/useUpgradeCheck.web.isolated.d.ts +2 -0
  43. package/dist/isolated/useUpgradeCheck.web.isolated.d.ts.map +1 -0
  44. package/dist/{useUpgradeCheck.test.js → isolated/useUpgradeCheck.web.isolated.js} +37 -7
  45. package/dist/isolated/useUpgradeCheck.web.isolated.js.map +1 -0
  46. package/dist/mongooseSlice.d.ts +3 -2
  47. package/dist/mongooseSlice.d.ts.map +1 -1
  48. package/dist/mongooseSlice.js +3 -4
  49. package/dist/mongooseSlice.js.map +1 -1
  50. package/dist/mongooseSlice.test.js +1 -1
  51. package/dist/mongooseSlice.test.js.map +1 -1
  52. package/dist/offlineGate.d.ts +8 -0
  53. package/dist/offlineGate.d.ts.map +1 -0
  54. package/dist/offlineGate.js +20 -0
  55. package/dist/offlineGate.js.map +1 -0
  56. package/dist/offlineGate.test.d.ts +2 -0
  57. package/dist/offlineGate.test.d.ts.map +1 -0
  58. package/dist/offlineGate.test.js +46 -0
  59. package/dist/offlineGate.test.js.map +1 -0
  60. package/dist/offlineMiddleware.d.ts +46 -0
  61. package/dist/offlineMiddleware.d.ts.map +1 -0
  62. package/dist/offlineMiddleware.js +589 -0
  63. package/dist/offlineMiddleware.js.map +1 -0
  64. package/dist/offlineMiddleware.test.d.ts +2 -0
  65. package/dist/offlineMiddleware.test.d.ts.map +1 -0
  66. package/dist/offlineMiddleware.test.js +145 -0
  67. package/dist/offlineMiddleware.test.js.map +1 -0
  68. package/dist/offlineSlice.d.ts +232 -0
  69. package/dist/offlineSlice.d.ts.map +1 -0
  70. package/dist/offlineSlice.js +65 -0
  71. package/dist/offlineSlice.js.map +1 -0
  72. package/dist/offlineSlice.test.d.ts +2 -0
  73. package/dist/offlineSlice.test.d.ts.map +1 -0
  74. package/dist/offlineSlice.test.js +153 -0
  75. package/dist/offlineSlice.test.js.map +1 -0
  76. package/dist/realtime.d.ts +123 -0
  77. package/dist/realtime.d.ts.map +1 -0
  78. package/dist/realtime.js +299 -0
  79. package/dist/realtime.js.map +1 -0
  80. package/dist/realtime.test.d.ts +2 -0
  81. package/dist/realtime.test.d.ts.map +1 -0
  82. package/dist/realtime.test.js +339 -0
  83. package/dist/realtime.test.js.map +1 -0
  84. package/dist/socket.d.ts.map +1 -1
  85. package/dist/socket.js +29 -28
  86. package/dist/socket.js.map +1 -1
  87. package/dist/sync.d.ts +35 -0
  88. package/dist/sync.d.ts.map +1 -0
  89. package/dist/sync.js +205 -0
  90. package/dist/sync.js.map +1 -0
  91. package/dist/tagGenerator.d.ts +20 -1
  92. package/dist/tagGenerator.d.ts.map +1 -1
  93. package/dist/tagGenerator.js +4 -12
  94. package/dist/tagGenerator.js.map +1 -1
  95. package/dist/useFeatureFlags.d.ts +4 -2
  96. package/dist/useFeatureFlags.d.ts.map +1 -1
  97. package/dist/useFeatureFlags.js +3 -5
  98. package/dist/useFeatureFlags.js.map +1 -1
  99. package/dist/useOfflineStatus.d.ts +33 -0
  100. package/dist/useOfflineStatus.d.ts.map +1 -0
  101. package/dist/useOfflineStatus.js +43 -0
  102. package/dist/useOfflineStatus.js.map +1 -0
  103. package/dist/useOfflineStatus.test.d.ts +2 -0
  104. package/dist/useOfflineStatus.test.d.ts.map +1 -0
  105. package/dist/useOfflineStatus.test.js +119 -0
  106. package/dist/useOfflineStatus.test.js.map +1 -0
  107. package/dist/useRealtimeDebug.d.ts +6 -0
  108. package/dist/useRealtimeDebug.d.ts.map +1 -0
  109. package/dist/useRealtimeDebug.js +41 -0
  110. package/dist/useRealtimeDebug.js.map +1 -0
  111. package/dist/useServerStatus.d.ts +29 -0
  112. package/dist/useServerStatus.d.ts.map +1 -0
  113. package/dist/useServerStatus.js +89 -0
  114. package/dist/useServerStatus.js.map +1 -0
  115. package/dist/useUpgradeCheck.d.ts +7 -3
  116. package/dist/useUpgradeCheck.d.ts.map +1 -1
  117. package/dist/useUpgradeCheck.js +27 -13
  118. package/dist/useUpgradeCheck.js.map +1 -1
  119. package/package.json +2 -2
  120. package/src/authSlice.test.ts +2 -11
  121. package/src/authSlice.ts +9 -9
  122. package/src/authSliceNative.test.ts +11 -4
  123. package/src/betterAuthSlice.test.ts +1 -25
  124. package/src/betterAuthSlice.ts +3 -2
  125. package/src/constants.test.ts +99 -1
  126. package/src/constants.ts +14 -3
  127. package/src/emptyApi.ts +11 -3
  128. package/src/index.ts +8 -0
  129. package/src/isolated/constants.isolated.ts +7 -3
  130. package/src/isolated/offlineMiddleware.isolated.ts +696 -0
  131. package/src/isolated/offlineMiddleware.native.isolated.ts +80 -0
  132. package/src/{useUpgradeCheck.mobile.test.ts → isolated/useUpgradeCheck.mobile.isolated.ts} +13 -4
  133. package/src/{useUpgradeCheck.test.ts → isolated/useUpgradeCheck.web.isolated.ts} +48 -6
  134. package/src/mongooseSlice.test.ts +1 -1
  135. package/src/mongooseSlice.ts +4 -5
  136. package/src/offlineGate.test.ts +55 -0
  137. package/src/offlineGate.ts +25 -0
  138. package/src/offlineMiddleware.test.ts +187 -0
  139. package/src/offlineMiddleware.ts +716 -0
  140. package/src/offlineSlice.test.ts +204 -0
  141. package/src/offlineSlice.ts +130 -0
  142. package/src/realtime.test.ts +404 -0
  143. package/src/realtime.ts +408 -0
  144. package/src/socket.ts +33 -32
  145. package/src/sync.ts +310 -0
  146. package/src/tagGenerator.ts +30 -18
  147. package/src/useFeatureFlags.ts +6 -6
  148. package/src/useOfflineStatus.test.ts +157 -0
  149. package/src/useOfflineStatus.ts +82 -0
  150. package/src/useRealtimeDebug.ts +51 -0
  151. package/src/useServerStatus.ts +122 -0
  152. package/src/useUpgradeCheck.ts +35 -13
  153. package/dist/isolated/useUpgradeCheck.isolated.d.ts +0 -2
  154. package/dist/isolated/useUpgradeCheck.isolated.d.ts.map +0 -1
  155. package/dist/isolated/useUpgradeCheck.isolated.js +0 -153
  156. package/dist/isolated/useUpgradeCheck.isolated.js.map +0 -1
  157. package/dist/useUpgradeCheck.mobile.test.d.ts +0 -2
  158. package/dist/useUpgradeCheck.mobile.test.d.ts.map +0 -1
  159. package/dist/useUpgradeCheck.mobile.test.js.map +0 -1
  160. package/dist/useUpgradeCheck.test.d.ts +0 -2
  161. package/dist/useUpgradeCheck.test.d.ts.map +0 -1
  162. package/dist/useUpgradeCheck.test.js.map +0 -1
  163. package/src/isolated/useUpgradeCheck.isolated.ts +0 -201
@@ -0,0 +1,51 @@
1
+ import {useEffect, useState} from "react";
2
+ import {useSelector} from "react-redux";
3
+
4
+ import {isWebsocketsDebugEnabled, setRealtimeDebug} from "./constants";
5
+ import {selectIsOnlineSafe} from "./offlineSlice";
6
+
7
+ interface RealtimeHealthResponse {
8
+ debug?: boolean;
9
+ }
10
+
11
+ /**
12
+ * Syncs websocket debug logging with the backend RealtimeApp debug flag.
13
+ * Also respects WEBSOCKETS_DEBUG from app config via isWebsocketsDebugEnabled().
14
+ */
15
+ export const useRealtimeDebug = (baseUrl: string, refreshKey?: unknown): boolean => {
16
+ const [debugEnabled, setDebugEnabled] = useState(isWebsocketsDebugEnabled);
17
+ const isOnline = useSelector(selectIsOnlineSafe);
18
+
19
+ useEffect(() => {
20
+ if (!isOnline) {
21
+ return;
22
+ }
23
+
24
+ let cancelled = false;
25
+
26
+ const loadDebugFlag = async (): Promise<void> => {
27
+ try {
28
+ const response = await fetch(`${baseUrl}/realtime/health`);
29
+ if (!response.ok) {
30
+ return;
31
+ }
32
+ const data = (await response.json()) as RealtimeHealthResponse;
33
+ if (cancelled) {
34
+ return;
35
+ }
36
+ setRealtimeDebug(data.debug === true);
37
+ setDebugEnabled(isWebsocketsDebugEnabled());
38
+ } catch {
39
+ // Health endpoint unavailable — keep env-based debug only
40
+ }
41
+ };
42
+
43
+ void loadDebugFlag();
44
+
45
+ return (): void => {
46
+ cancelled = true;
47
+ };
48
+ }, [baseUrl, refreshKey, isOnline]);
49
+
50
+ return debugEnabled;
51
+ };
@@ -0,0 +1,122 @@
1
+ import {useCallback, useEffect, useRef} from "react";
2
+ import {useDispatch} from "react-redux";
3
+
4
+ import {baseUrl} from "./constants";
5
+ import {setOnlineStatus} from "./offlineSlice";
6
+ import {type OfflineStatus, useOfflineStatus} from "./useOfflineStatus";
7
+
8
+ const DEFAULT_POLL_INTERVAL_MS = 5_000;
9
+ const OFFLINE_POLL_INTERVAL_MS = 3_000;
10
+
11
+ export interface ServerStatusOptions {
12
+ /** URL to poll for server health. Defaults to `${baseUrl}/health`. */
13
+ healthUrl?: string;
14
+ /** Polling interval in ms while online. Default 5000. */
15
+ pollIntervalMs?: number;
16
+ /** Polling interval in ms while offline. Default 3000. */
17
+ offlinePollIntervalMs?: number;
18
+ /** Skip polling entirely (e.g. when not authenticated). */
19
+ skip?: boolean;
20
+ }
21
+
22
+ export type ServerStatus = OfflineStatus;
23
+
24
+ /**
25
+ * Polls the API server health endpoint to determine actual server reachability.
26
+ * Dispatches setOnlineStatus(true/false) into the offline slice so the rest
27
+ * of the offline middleware (queue, optimistic updates, replay) reacts.
28
+ *
29
+ * Use this instead of useOfflineStatus when you want real server-connectivity
30
+ * detection rather than just browser navigator.onLine.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const {isOnline, queueLength, isSyncing, isLocalOnly} = useServerStatus({
35
+ * skip: !userId,
36
+ * });
37
+ * ```
38
+ */
39
+ export const useServerStatus = (options: ServerStatusOptions = {}): ServerStatus => {
40
+ const {
41
+ healthUrl = `${baseUrl}/health`,
42
+ pollIntervalMs = DEFAULT_POLL_INTERVAL_MS,
43
+ offlinePollIntervalMs = OFFLINE_POLL_INTERVAL_MS,
44
+ skip = false,
45
+ } = options;
46
+
47
+ const offlineStatus = useOfflineStatus();
48
+ const dispatch = useDispatch();
49
+
50
+ const isOnlineRef = useRef(offlineStatus.isOnline);
51
+ isOnlineRef.current = offlineStatus.isOnline;
52
+
53
+ // Ping the server health endpoint; dispatch status changes
54
+ const checkHealth = useCallback(async (): Promise<void> => {
55
+ try {
56
+ const controller = new AbortController();
57
+ const timeout = setTimeout(() => controller.abort(), 4_000);
58
+
59
+ const response = await fetch(healthUrl, {
60
+ cache: "no-store",
61
+ method: "GET",
62
+ signal: controller.signal,
63
+ });
64
+ clearTimeout(timeout);
65
+
66
+ if (response.ok && !isOnlineRef.current) {
67
+ dispatch(setOnlineStatus(true));
68
+ } else if (!response.ok && isOnlineRef.current) {
69
+ dispatch(setOnlineStatus(false));
70
+ }
71
+ } catch {
72
+ if (isOnlineRef.current) {
73
+ dispatch(setOnlineStatus(false));
74
+ }
75
+ }
76
+ }, [healthUrl, dispatch]);
77
+
78
+ // Poll at different intervals depending on online/offline state
79
+ useEffect(() => {
80
+ if (skip || typeof window === "undefined") {
81
+ return;
82
+ }
83
+
84
+ // Check immediately on mount
85
+ void checkHealth();
86
+
87
+ const interval = offlineStatus.isOnline ? pollIntervalMs : offlinePollIntervalMs;
88
+ const id = setInterval(() => {
89
+ void checkHealth();
90
+ }, interval);
91
+
92
+ return (): void => {
93
+ clearInterval(id);
94
+ };
95
+ }, [skip, checkHealth, offlineStatus.isOnline, pollIntervalMs, offlinePollIntervalMs]);
96
+
97
+ // Also respond to browser online/offline events for instant detection
98
+ useEffect(() => {
99
+ if (skip || typeof window === "undefined") {
100
+ return;
101
+ }
102
+
103
+ const handleOffline = (): void => {
104
+ dispatch(setOnlineStatus(false));
105
+ };
106
+
107
+ const handleOnline = (): void => {
108
+ // Don't trust the browser event alone — verify with health check
109
+ void checkHealth();
110
+ };
111
+
112
+ window.addEventListener("online", handleOnline);
113
+ window.addEventListener("offline", handleOffline);
114
+
115
+ return (): void => {
116
+ window.removeEventListener("online", handleOnline);
117
+ window.removeEventListener("offline", handleOffline);
118
+ };
119
+ }, [skip, dispatch, checkHealth]);
120
+
121
+ return offlineStatus;
122
+ };
@@ -1,6 +1,10 @@
1
1
  import Constants from "expo-constants";
2
2
  import {useCallback, useEffect, useRef, useState} from "react";
3
- import {AppState, Linking} from "react-native";
3
+ // Use a namespace import + lazy property access so per-test `mock.module` swaps
4
+ // reach the runtime values. A destructured `import {AppState, Linking}` fails
5
+ // bun's static-export check against react-native's CJS getter exports under the
6
+ // version pinned in CI.
7
+ import * as ReactNative from "react-native";
4
8
 
5
9
  import {useLazyGetVersionCheckQuery} from "./emptyApi";
6
10
  import {IsWeb} from "./platform";
@@ -38,14 +42,18 @@ interface UseUpgradeCheckResult {
38
42
  * - `isWarning` — the build is below the warning threshold; the caller
39
43
  * can render a dismissible `Banner` or similar prompt.
40
44
  *
41
- * By default a single check runs on mount. Pass `pollingIntervalMs` and/or
42
- * `recheckOnForeground` to keep long-lived sessions up to date.
45
+ * The polling interval is server-driven: the first successful `/version-check`
46
+ * response returns `pollingIntervalMs` from the backend's VersionConfig and the
47
+ * hook uses that value for all subsequent intervals. Pass `pollingIntervalMs` in
48
+ * options as a local fallback that is active until the first server response
49
+ * arrives. Pass `recheckOnForeground` to also re-check when the app/tab
50
+ * returns to the foreground.
43
51
  *
44
- * @param options - Optional polling and foreground re-check configuration.
52
+ * @param options - Optional fallback polling interval and foreground re-check configuration.
45
53
  * @returns Current upgrade status, messages, and an `onUpdate` callback.
46
54
  */
47
55
  export const useUpgradeCheck = (options?: UseUpgradeCheckOptions): UseUpgradeCheckResult => {
48
- const {pollingIntervalMs, recheckOnForeground = false} = options ?? {};
56
+ const {pollingIntervalMs: fallbackPollingIntervalMs, recheckOnForeground = false} = options ?? {};
49
57
 
50
58
  const [isRequired, setIsRequired] = useState(false);
51
59
  const [isWarning, setIsWarning] = useState(false);
@@ -53,9 +61,13 @@ export const useUpgradeCheck = (options?: UseUpgradeCheckOptions): UseUpgradeChe
53
61
  const [warningMessage, setWarningMessage] = useState<string>();
54
62
  const [updateUrl, setUpdateUrl] = useState<string>();
55
63
  const [warningCheckCount, setWarningCheckCount] = useState(0);
64
+ // Starts with the local fallback; updated to the server-configured value after the first response.
65
+ const [activePollingIntervalMs, setActivePollingIntervalMs] = useState<number | undefined>(
66
+ fallbackPollingIntervalMs
67
+ );
56
68
  const [triggerVersionCheck] = useLazyGetVersionCheckQuery();
57
69
  const buildNumber = Constants.expoConfig?.extra?.buildNumber as number | undefined;
58
- const appState = useRef(AppState.currentState);
70
+ const appState = useRef(ReactNative.AppState.currentState);
59
71
 
60
72
  // Process version-check response inline via .unwrap() so every poll trigger
61
73
  // is handled, even when RTK Query returns a structurally-shared cached response
@@ -68,7 +80,12 @@ export const useUpgradeCheck = (options?: UseUpgradeCheckOptions): UseUpgradeChe
68
80
  triggerVersionCheck({platform, version: buildNumber})
69
81
  .unwrap()
70
82
  .then((data) => {
71
- const {message, status, updateUrl: responseUpdateUrl} = data;
83
+ const {
84
+ message,
85
+ pollingIntervalMs: serverPollingIntervalMs,
86
+ status,
87
+ updateUrl: responseUpdateUrl,
88
+ } = data;
72
89
 
73
90
  if (status === "required") {
74
91
  setIsRequired(true);
@@ -86,6 +103,11 @@ export const useUpgradeCheck = (options?: UseUpgradeCheckOptions): UseUpgradeChe
86
103
  if (responseUpdateUrl) {
87
104
  setUpdateUrl(responseUpdateUrl);
88
105
  }
106
+
107
+ // Adopt the server-configured polling interval once it's available.
108
+ if (serverPollingIntervalMs !== undefined) {
109
+ setActivePollingIntervalMs(serverPollingIntervalMs);
110
+ }
89
111
  })
90
112
  .catch((error: unknown) => {
91
113
  console.debug("Version check failed, continuing normally", error);
@@ -98,7 +120,7 @@ export const useUpgradeCheck = (options?: UseUpgradeCheckOptions): UseUpgradeChe
98
120
  return;
99
121
  }
100
122
  if (updateUrl) {
101
- void Linking.openURL(updateUrl).catch((err: unknown) => {
123
+ void ReactNative.Linking.openURL(updateUrl).catch((err: unknown) => {
102
124
  console.warn("Failed to open update URL", err);
103
125
  });
104
126
  } else {
@@ -111,21 +133,21 @@ export const useUpgradeCheck = (options?: UseUpgradeCheckOptions): UseUpgradeChe
111
133
  runCheck();
112
134
  }, [runCheck]);
113
135
 
114
- // Periodic re-check at the configured interval
136
+ // Periodic re-check using the server-driven interval (falls back to the local prop until first response).
115
137
  useEffect(() => {
116
- if (!pollingIntervalMs) {
138
+ if (!activePollingIntervalMs) {
117
139
  return;
118
140
  }
119
- const interval = setInterval(runCheck, pollingIntervalMs);
141
+ const interval = setInterval(runCheck, activePollingIntervalMs);
120
142
  return () => clearInterval(interval);
121
- }, [runCheck, pollingIntervalMs]);
143
+ }, [runCheck, activePollingIntervalMs]);
122
144
 
123
145
  // Re-check when app/tab returns to foreground
124
146
  useEffect(() => {
125
147
  if (!recheckOnForeground) {
126
148
  return;
127
149
  }
128
- const subscription = AppState.addEventListener("change", (nextAppState) => {
150
+ const subscription = ReactNative.AppState.addEventListener("change", (nextAppState) => {
129
151
  const wasBackground = /inactive|background/.test(appState.current);
130
152
  const isNowActive = nextAppState === "active";
131
153
 
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=useUpgradeCheck.isolated.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUpgradeCheck.isolated.d.ts","sourceRoot":"","sources":["../../src/isolated/useUpgradeCheck.isolated.ts"],"names":[],"mappings":""}
@@ -1,153 +0,0 @@
1
- /**
2
- * Isolated tests for useUpgradeCheck mobile-only paths.
3
- *
4
- * These run in a separate bun process because they need IsWeb=false,
5
- * which cannot be changed per-test (bun snapshots module exports).
6
- */
7
- import { afterEach, beforeEach, describe, expect, it, mock } from "bun:test";
8
- import { act, renderHook, waitFor } from "@testing-library/react-native";
9
- // ---------------------------------------------------------------------------
10
- // Mutable refs
11
- // ---------------------------------------------------------------------------
12
- let mockBuildNumber = 42;
13
- const mockUnwrap = mock(() => Promise.resolve({ status: "warning", updateUrl: "https://example.com/update" }));
14
- const mockTrigger = mock((..._args) => ({ unwrap: mockUnwrap }));
15
- mock.module("../emptyApi", () => ({
16
- useLazyGetVersionCheckQuery: () => [mockTrigger],
17
- }));
18
- // IsWeb = false so we exercise the mobile onUpdate paths
19
- mock.module("../platform", () => ({
20
- IsWeb: false,
21
- }));
22
- let appStateListeners = [];
23
- const mockRemove = mock(() => { });
24
- const mockAddEventListener = mock((_event, handler) => {
25
- appStateListeners.push(handler);
26
- return { remove: mockRemove };
27
- });
28
- const mockOpenURL = mock(() => Promise.resolve(true));
29
- mock.module("react-native", () => ({
30
- AppState: {
31
- addEventListener: mockAddEventListener,
32
- currentState: "active",
33
- },
34
- Linking: { openURL: mockOpenURL },
35
- Platform: { OS: "ios" },
36
- StyleSheet: { create: (s) => s },
37
- }));
38
- mock.module("expo-constants", () => ({
39
- default: {
40
- get expoConfig() {
41
- return { extra: { buildNumber: mockBuildNumber } };
42
- },
43
- },
44
- }));
45
- mock.module("expo-secure-store", () => ({
46
- deleteItemAsync: async () => { },
47
- getItemAsync: async () => null,
48
- setItemAsync: async () => { },
49
- }));
50
- mock.module("@react-native-async-storage/async-storage", () => ({
51
- default: {
52
- getItem: async () => null,
53
- removeItem: async () => { },
54
- setItem: async () => { },
55
- },
56
- }));
57
- mock.module("expo-network", () => ({
58
- getNetworkStateAsync: async () => ({ isConnected: true }),
59
- }));
60
- // Import after all mock.module calls
61
- import { useUpgradeCheck } from "../useUpgradeCheck";
62
- const flushPromises = () => new Promise((r) => setTimeout(r, 0));
63
- // ---------------------------------------------------------------------------
64
- // Setup / teardown
65
- // ---------------------------------------------------------------------------
66
- const warnCalls = [];
67
- const originalWarn = console.warn;
68
- const originalDebug = console.debug;
69
- beforeEach(() => {
70
- mockBuildNumber = 42;
71
- appStateListeners = [];
72
- mockUnwrap.mockClear();
73
- mockUnwrap.mockImplementation(() => Promise.resolve({ status: "warning", updateUrl: "https://example.com/update" }));
74
- mockTrigger.mockClear();
75
- mockTrigger.mockImplementation((..._args) => ({ unwrap: mockUnwrap }));
76
- mockRemove.mockClear();
77
- mockAddEventListener.mockClear();
78
- mockAddEventListener.mockImplementation((_event, handler) => {
79
- appStateListeners.push(handler);
80
- return { remove: mockRemove };
81
- });
82
- mockOpenURL.mockClear();
83
- mockOpenURL.mockImplementation(() => Promise.resolve(true));
84
- warnCalls.length = 0;
85
- console.warn = (...args) => {
86
- warnCalls.push(args);
87
- };
88
- console.debug = () => { };
89
- });
90
- afterEach(() => {
91
- console.warn = originalWarn;
92
- console.debug = originalDebug;
93
- });
94
- // ---------------------------------------------------------------------------
95
- // Tests
96
- // ---------------------------------------------------------------------------
97
- describe("useUpgradeCheck (mobile)", () => {
98
- it("canUpdate is true when updateUrl is set", async () => {
99
- const { result } = renderHook(() => useUpgradeCheck());
100
- await act(async () => {
101
- await flushPromises();
102
- });
103
- await waitFor(() => {
104
- expect(result.current.canUpdate).toBe(true);
105
- });
106
- });
107
- it("canUpdate is false when no updateUrl", () => {
108
- mockUnwrap.mockImplementation(() => new Promise(() => { }));
109
- const { result } = renderHook(() => useUpgradeCheck());
110
- expect(result.current.canUpdate).toBe(false);
111
- });
112
- it("onUpdate calls Linking.openURL with updateUrl", async () => {
113
- const { result } = renderHook(() => useUpgradeCheck());
114
- await act(async () => {
115
- await flushPromises();
116
- });
117
- await waitFor(() => {
118
- expect(result.current.canUpdate).toBe(true);
119
- });
120
- act(() => {
121
- result.current.onUpdate();
122
- });
123
- expect(mockOpenURL).toHaveBeenCalledWith("https://example.com/update");
124
- });
125
- it("onUpdate logs warning when no updateUrl on mobile", () => {
126
- mockUnwrap.mockImplementation(() => Promise.resolve({ status: "ok" }));
127
- const { result } = renderHook(() => useUpgradeCheck());
128
- act(() => {
129
- result.current.onUpdate();
130
- });
131
- const noUrlWarn = warnCalls.find((args) => typeof args[0] === "string" && args[0].includes("no update URL"));
132
- expect(noUrlWarn).toBeDefined();
133
- });
134
- it("onUpdate logs a warning when Linking.openURL rejects", async () => {
135
- const openError = new Error("link failed");
136
- mockOpenURL.mockImplementation(() => Promise.reject(openError));
137
- const { result } = renderHook(() => useUpgradeCheck());
138
- await act(async () => {
139
- await flushPromises();
140
- });
141
- await waitFor(() => {
142
- expect(result.current.canUpdate).toBe(true);
143
- });
144
- await act(async () => {
145
- result.current.onUpdate();
146
- await flushPromises();
147
- });
148
- expect(mockOpenURL).toHaveBeenCalledWith("https://example.com/update");
149
- const failureWarn = warnCalls.find((args) => typeof args[0] === "string" && args[0].includes("Failed to open update URL"));
150
- expect(failureWarn).toBeDefined();
151
- });
152
- });
153
- //# sourceMappingURL=useUpgradeCheck.isolated.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUpgradeCheck.isolated.js","sourceRoot":"","sources":["../../src/isolated/useUpgradeCheck.isolated.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=useUpgradeCheck.mobile.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUpgradeCheck.mobile.test.d.ts","sourceRoot":"","sources":["../src/useUpgradeCheck.mobile.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUpgradeCheck.mobile.test.js","sourceRoot":"","sources":["../src/useUpgradeCheck.mobile.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=useUpgradeCheck.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUpgradeCheck.test.d.ts","sourceRoot":"","sources":["../src/useUpgradeCheck.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUpgradeCheck.test.js","sourceRoot":"","sources":["../src/useUpgradeCheck.test.ts"],"names":[],"mappings":"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"}