@adventurelabs/scout-core 1.0.109 → 1.0.111
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.
- package/dist/hooks/useScoutRefresh.js +99 -26
- package/dist/store/scout.d.ts +6 -1
- package/dist/store/scout.js +5 -1
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { useEffect, useCallback, useRef } from "react";
|
|
1
|
+
import { useEffect, useCallback, useRef, useMemo } from "react";
|
|
2
2
|
import { useAppDispatch } from "../store/hooks";
|
|
3
3
|
import { useStore } from "react-redux";
|
|
4
|
-
import { EnumScoutStateStatus, setHerdModules, setStatus, setHerdModulesLoadingState, setHerdModulesLoadedInMs, setHerdModulesApiDuration, setUserApiDuration, setDataProcessingDuration, setUser, setDataSource, setDataSourceInfo, } from "../store/scout";
|
|
4
|
+
import { EnumScoutStateStatus, setHerdModules, setStatus, setHerdModulesLoadingState, setHerdModulesLoadedInMs, setHerdModulesApiDuration, setUserApiDuration, setDataProcessingDuration, setCacheLoadDuration, setUser, setDataSource, setDataSourceInfo, } from "../store/scout";
|
|
5
5
|
import { EnumHerdModulesLoadingState } from "../types/herd_module";
|
|
6
6
|
import { server_load_herd_modules } from "../helpers/herds";
|
|
7
|
-
import { server_get_user } from "../helpers/users";
|
|
8
7
|
import { scoutCache } from "../helpers/cache";
|
|
9
8
|
import { EnumDataSource } from "../types/data_source";
|
|
9
|
+
import { createBrowserClient } from "@supabase/ssr";
|
|
10
10
|
/**
|
|
11
11
|
* Hook for refreshing scout data with detailed timing measurements and cache-first loading
|
|
12
12
|
*
|
|
@@ -36,6 +36,10 @@ export function useScoutRefresh(options = {}) {
|
|
|
36
36
|
const dispatch = useAppDispatch();
|
|
37
37
|
const store = useStore();
|
|
38
38
|
const refreshInProgressRef = useRef(false);
|
|
39
|
+
// Create Supabase client directly to avoid circular dependency
|
|
40
|
+
const supabase = useMemo(() => {
|
|
41
|
+
return createBrowserClient(process.env.NEXT_PUBLIC_SUPABASE_URL || "", process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || "");
|
|
42
|
+
}, []);
|
|
39
43
|
// Refs to store timing measurements
|
|
40
44
|
const timingRefs = useRef({
|
|
41
45
|
startTime: 0,
|
|
@@ -87,10 +91,67 @@ export function useScoutRefresh(options = {}) {
|
|
|
87
91
|
}
|
|
88
92
|
return true;
|
|
89
93
|
}, []);
|
|
94
|
+
// Helper function to find differences between herd modules for debugging
|
|
95
|
+
const findHerdModulesDifferences = useCallback((newData, currentData) => {
|
|
96
|
+
if (!Array.isArray(newData) || !Array.isArray(currentData)) {
|
|
97
|
+
return `Array type mismatch: new=${Array.isArray(newData)}, current=${Array.isArray(currentData)}`;
|
|
98
|
+
}
|
|
99
|
+
if (newData.length !== currentData.length) {
|
|
100
|
+
return `Array length mismatch: new=${newData.length}, current=${currentData.length}`;
|
|
101
|
+
}
|
|
102
|
+
const differences = [];
|
|
103
|
+
for (let i = 0; i < newData.length; i++) {
|
|
104
|
+
const newHerd = newData[i];
|
|
105
|
+
const currentHerd = currentData[i];
|
|
106
|
+
if (!newHerd || !currentHerd) {
|
|
107
|
+
differences.push(`Herd ${i}: null/undefined mismatch`);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
// Check top-level fields
|
|
111
|
+
const fieldsToCheck = [
|
|
112
|
+
"timestamp_last_refreshed",
|
|
113
|
+
"total_events",
|
|
114
|
+
"total_events_with_filters",
|
|
115
|
+
"events_page_index",
|
|
116
|
+
];
|
|
117
|
+
fieldsToCheck.forEach((field) => {
|
|
118
|
+
if (newHerd[field] !== currentHerd[field]) {
|
|
119
|
+
differences.push(`Herd ${i}.${field}: ${currentHerd[field]} → ${newHerd[field]}`);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
// Check array lengths for nested data
|
|
123
|
+
const arrayFields = [
|
|
124
|
+
"devices",
|
|
125
|
+
"events",
|
|
126
|
+
"plans",
|
|
127
|
+
"zones",
|
|
128
|
+
"sessions",
|
|
129
|
+
"layers",
|
|
130
|
+
"providers",
|
|
131
|
+
];
|
|
132
|
+
arrayFields.forEach((field) => {
|
|
133
|
+
const newArray = newHerd[field];
|
|
134
|
+
const currentArray = currentHerd[field];
|
|
135
|
+
if (Array.isArray(newArray) && Array.isArray(currentArray)) {
|
|
136
|
+
if (newArray.length !== currentArray.length) {
|
|
137
|
+
differences.push(`Herd ${i}.${field}[]: length ${currentArray.length} → ${newArray.length}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return differences.length > 0
|
|
143
|
+
? differences.join(", ")
|
|
144
|
+
: "No significant differences found";
|
|
145
|
+
}, []);
|
|
90
146
|
// Helper function to conditionally dispatch only if data has changed
|
|
91
|
-
const conditionalDispatch = useCallback((newData, currentData, actionCreator, dataType) => {
|
|
147
|
+
const conditionalDispatch = useCallback((newData, currentData, actionCreator, dataType, enableDebugging = false) => {
|
|
92
148
|
if (!deepEqual(newData, currentData)) {
|
|
93
149
|
console.log(`[useScoutRefresh] ${dataType} data changed, updating store`);
|
|
150
|
+
// Add debugging for herd modules to see what actually changed
|
|
151
|
+
if (enableDebugging && dataType.includes("Herd modules")) {
|
|
152
|
+
const differences = findHerdModulesDifferences(newData, currentData);
|
|
153
|
+
console.log(`[useScoutRefresh] ${dataType} differences: ${differences}`);
|
|
154
|
+
}
|
|
94
155
|
dispatch(actionCreator(newData));
|
|
95
156
|
return true;
|
|
96
157
|
}
|
|
@@ -98,7 +159,7 @@ export function useScoutRefresh(options = {}) {
|
|
|
98
159
|
console.log(`[useScoutRefresh] ${dataType} data unchanged, skipping store update`);
|
|
99
160
|
return false;
|
|
100
161
|
}
|
|
101
|
-
}, [dispatch, deepEqual]);
|
|
162
|
+
}, [dispatch, deepEqual, findHerdModulesDifferences]);
|
|
102
163
|
// Helper function to handle IndexedDB errors - memoized for stability
|
|
103
164
|
const handleIndexedDbError = useCallback(async (error, operation, retryFn) => {
|
|
104
165
|
if (error instanceof Error &&
|
|
@@ -140,6 +201,7 @@ export function useScoutRefresh(options = {}) {
|
|
|
140
201
|
const cacheResult = await scoutCache.getHerdModules();
|
|
141
202
|
cacheLoadDuration = Date.now() - cacheStartTime;
|
|
142
203
|
timingRefs.current.cacheLoadDuration = cacheLoadDuration;
|
|
204
|
+
dispatch(setCacheLoadDuration(cacheLoadDuration));
|
|
143
205
|
if (cacheResult.data && cacheResult.data.length > 0) {
|
|
144
206
|
cachedHerdModules = cacheResult.data;
|
|
145
207
|
console.log(`[useScoutRefresh] Loaded ${cachedHerdModules.length} herd modules from cache in ${cacheLoadDuration}ms (age: ${Math.round(cacheResult.age / 1000)}s, stale: ${cacheResult.isStale})`);
|
|
@@ -151,23 +213,13 @@ export function useScoutRefresh(options = {}) {
|
|
|
151
213
|
cacheAge: cacheResult.age,
|
|
152
214
|
isStale: cacheResult.isStale,
|
|
153
215
|
}));
|
|
154
|
-
// Conditionally update the store with cached data if different
|
|
216
|
+
// Conditionally update the store with cached data if business data is different
|
|
155
217
|
// Get current state at execution time to avoid dependency issues
|
|
156
218
|
const currentHerdModules = store.getState().scout.herd_modules;
|
|
157
|
-
const herdModulesChanged = conditionalDispatch(cachedHerdModules, currentHerdModules, setHerdModules, "Herd modules (cache)");
|
|
219
|
+
const herdModulesChanged = conditionalDispatch(cachedHerdModules, currentHerdModules, setHerdModules, "Herd modules (cache)", true);
|
|
158
220
|
if (herdModulesChanged) {
|
|
159
221
|
dispatch(setHerdModulesLoadingState(EnumHerdModulesLoadingState.SUCCESSFULLY_LOADED));
|
|
160
222
|
}
|
|
161
|
-
// Always load user data from API
|
|
162
|
-
const userStartTime = Date.now();
|
|
163
|
-
const res_new_user = await server_get_user();
|
|
164
|
-
const userApiDuration = Date.now() - userStartTime;
|
|
165
|
-
timingRefs.current.userApiDuration = userApiDuration;
|
|
166
|
-
dispatch(setUserApiDuration(userApiDuration));
|
|
167
|
-
if (res_new_user && res_new_user.data) {
|
|
168
|
-
const currentUser = store.getState().scout.user;
|
|
169
|
-
conditionalDispatch(res_new_user.data, currentUser, setUser, "User (initial)");
|
|
170
|
-
}
|
|
171
223
|
// If cache is fresh, we still background fetch but don't wait
|
|
172
224
|
if (!cacheResult.isStale) {
|
|
173
225
|
console.log("[useScoutRefresh] Cache is fresh, background fetching fresh data...");
|
|
@@ -177,8 +229,22 @@ export function useScoutRefresh(options = {}) {
|
|
|
177
229
|
console.log("[useScoutRefresh] Starting background fetch...");
|
|
178
230
|
const backgroundStartTime = Date.now();
|
|
179
231
|
const [backgroundHerdModulesResult, backgroundUserResult] = await Promise.all([
|
|
180
|
-
|
|
181
|
-
|
|
232
|
+
(async () => {
|
|
233
|
+
const start = Date.now();
|
|
234
|
+
const result = await server_load_herd_modules();
|
|
235
|
+
const duration = Date.now() - start;
|
|
236
|
+
timingRefs.current.herdModulesDuration = duration;
|
|
237
|
+
dispatch(setHerdModulesApiDuration(duration));
|
|
238
|
+
return result;
|
|
239
|
+
})(),
|
|
240
|
+
(async () => {
|
|
241
|
+
const start = Date.now();
|
|
242
|
+
const { data } = await supabase.auth.getUser();
|
|
243
|
+
const duration = Date.now() - start;
|
|
244
|
+
timingRefs.current.userApiDuration = duration;
|
|
245
|
+
dispatch(setUserApiDuration(duration));
|
|
246
|
+
return { data: data.user, status: "success" };
|
|
247
|
+
})(),
|
|
182
248
|
]);
|
|
183
249
|
const backgroundDuration = Date.now() - backgroundStartTime;
|
|
184
250
|
console.log(`[useScoutRefresh] Background fetch completed in ${backgroundDuration}ms`);
|
|
@@ -200,11 +266,13 @@ export function useScoutRefresh(options = {}) {
|
|
|
200
266
|
}
|
|
201
267
|
});
|
|
202
268
|
}
|
|
203
|
-
// Conditionally update store with fresh background data
|
|
269
|
+
// Conditionally update store with fresh background data using normalized comparison
|
|
204
270
|
const currentHerdModules = store.getState().scout.herd_modules;
|
|
205
271
|
const currentUser = store.getState().scout.user;
|
|
206
|
-
conditionalDispatch(backgroundHerdModulesResult.data, currentHerdModules, setHerdModules, "Herd modules (background)");
|
|
207
|
-
|
|
272
|
+
conditionalDispatch(backgroundHerdModulesResult.data, currentHerdModules, setHerdModules, "Herd modules (background)", true);
|
|
273
|
+
if (backgroundUserResult && backgroundUserResult.data) {
|
|
274
|
+
conditionalDispatch(backgroundUserResult.data, currentUser, setUser, "User (background)");
|
|
275
|
+
}
|
|
208
276
|
// Update data source to DATABASE
|
|
209
277
|
dispatch(setDataSource(EnumDataSource.DATABASE));
|
|
210
278
|
dispatch(setDataSourceInfo({
|
|
@@ -254,10 +322,14 @@ export function useScoutRefresh(options = {}) {
|
|
|
254
322
|
(async () => {
|
|
255
323
|
const start = Date.now();
|
|
256
324
|
console.log(`[useScoutRefresh] Starting user request at ${new Date(start).toISOString()}`);
|
|
257
|
-
const
|
|
325
|
+
const { data } = await supabase.auth.getUser();
|
|
258
326
|
const duration = Date.now() - start;
|
|
259
327
|
console.log(`[useScoutRefresh] User request completed in ${duration}ms`);
|
|
260
|
-
return {
|
|
328
|
+
return {
|
|
329
|
+
result: { data: data.user, status: "success" },
|
|
330
|
+
duration,
|
|
331
|
+
start,
|
|
332
|
+
};
|
|
261
333
|
})(),
|
|
262
334
|
]);
|
|
263
335
|
const parallelDuration = Date.now() - parallelStartTime;
|
|
@@ -306,11 +378,11 @@ export function useScoutRefresh(options = {}) {
|
|
|
306
378
|
await scoutCache.setHerdModules(compatible_new_herd_modules, cacheTtlMs);
|
|
307
379
|
});
|
|
308
380
|
}
|
|
309
|
-
// Step 4: Conditionally update store with fresh data
|
|
381
|
+
// Step 4: Conditionally update store with fresh data using normalized comparison
|
|
310
382
|
const dataProcessingStartTime = Date.now();
|
|
311
383
|
const currentHerdModules = store.getState().scout.herd_modules;
|
|
312
384
|
const currentUser = store.getState().scout.user;
|
|
313
|
-
const herdModulesChanged = conditionalDispatch(compatible_new_herd_modules, currentHerdModules, setHerdModules, "Herd modules (fresh API)");
|
|
385
|
+
const herdModulesChanged = conditionalDispatch(compatible_new_herd_modules, currentHerdModules, setHerdModules, "Herd modules (fresh API)", true);
|
|
314
386
|
const userChanged = conditionalDispatch(res_new_user.data, currentUser, setUser, "User (fresh API)");
|
|
315
387
|
if (herdModulesChanged) {
|
|
316
388
|
dispatch(setHerdModulesLoadingState(EnumHerdModulesLoadingState.SUCCESSFULLY_LOADED));
|
|
@@ -359,6 +431,7 @@ export function useScoutRefresh(options = {}) {
|
|
|
359
431
|
}, [
|
|
360
432
|
dispatch,
|
|
361
433
|
store,
|
|
434
|
+
supabase,
|
|
362
435
|
onRefreshComplete,
|
|
363
436
|
cacheFirst,
|
|
364
437
|
cacheTtlMs,
|
package/dist/store/scout.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface ScoutState {
|
|
|
14
14
|
herd_modules_api_duration_ms: number | null;
|
|
15
15
|
user_api_duration_ms: number | null;
|
|
16
16
|
data_processing_duration_ms: number | null;
|
|
17
|
+
cache_load_duration_ms: number | null;
|
|
17
18
|
active_herd_id: string | null;
|
|
18
19
|
active_device_id: string | null;
|
|
19
20
|
lastRefreshed: number;
|
|
@@ -54,6 +55,10 @@ export declare const scoutSlice: import("@reduxjs/toolkit").Slice<ScoutState, {
|
|
|
54
55
|
payload: any;
|
|
55
56
|
type: string;
|
|
56
57
|
}) => void;
|
|
58
|
+
setCacheLoadDuration: (state: import("immer").WritableDraft<ScoutState>, action: {
|
|
59
|
+
payload: any;
|
|
60
|
+
type: string;
|
|
61
|
+
}) => void;
|
|
57
62
|
setActiveHerdId: (state: import("immer").WritableDraft<ScoutState>, action: {
|
|
58
63
|
payload: any;
|
|
59
64
|
type: string;
|
|
@@ -155,6 +160,6 @@ export declare const scoutSlice: import("@reduxjs/toolkit").Slice<ScoutState, {
|
|
|
155
160
|
type: string;
|
|
156
161
|
}) => void;
|
|
157
162
|
}, "scout", "scout", import("@reduxjs/toolkit").SliceSelectors<ScoutState>>;
|
|
158
|
-
export declare const setHerdModules: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModules">, setStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setStatus">, setHerdModulesLoadingState: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesLoadingState">, setHerdModulesLoadedInMs: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesLoadedInMs">, setHerdModulesApiDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesApiDuration">, setUserApiDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setUserApiDuration">, setDataProcessingDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setDataProcessingDuration">, setActiveHerdId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setActiveHerdId">, setActiveDeviceId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setActiveDeviceId">, setDataSource: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setDataSource">, setDataSourceInfo: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setDataSourceInfo">, appendEventsToHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/appendEventsToHerdModule">, replaceEventsForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/replaceEventsForHerdModule">, updateEventValuesForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateEventValuesForHerdModule">, updatePageIndexForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updatePageIndexForHerdModule">, appendPlansToHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/appendPlansToHerdModule">, setUser: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setUser">, addTag: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addTag">, deleteTag: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/deleteTag">, updateTag: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateTag">, addNewDeviceToHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addNewDeviceToHerdModule">, updateDeviceForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateDeviceForHerdModule">, addDevice: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addDevice">, deleteDevice: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/deleteDevice">, updateDevice: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateDevice">, addPlan: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addPlan">, deletePlan: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/deletePlan">, updatePlan: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updatePlan">, addSessionToStore: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addSessionToStore">, deleteSessionFromStore: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/deleteSessionFromStore">, updateSessionInStore: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateSessionInStore">, setActiveHerdGpsTrackersConnectivity: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setActiveHerdGpsTrackersConnectivity">;
|
|
163
|
+
export declare const setHerdModules: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModules">, setStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setStatus">, setHerdModulesLoadingState: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesLoadingState">, setHerdModulesLoadedInMs: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesLoadedInMs">, setHerdModulesApiDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesApiDuration">, setUserApiDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setUserApiDuration">, setDataProcessingDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setDataProcessingDuration">, setCacheLoadDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setCacheLoadDuration">, setActiveHerdId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setActiveHerdId">, setActiveDeviceId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setActiveDeviceId">, setDataSource: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setDataSource">, setDataSourceInfo: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setDataSourceInfo">, appendEventsToHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/appendEventsToHerdModule">, replaceEventsForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/replaceEventsForHerdModule">, updateEventValuesForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateEventValuesForHerdModule">, updatePageIndexForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updatePageIndexForHerdModule">, appendPlansToHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/appendPlansToHerdModule">, setUser: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setUser">, addTag: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addTag">, deleteTag: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/deleteTag">, updateTag: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateTag">, addNewDeviceToHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addNewDeviceToHerdModule">, updateDeviceForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateDeviceForHerdModule">, addDevice: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addDevice">, deleteDevice: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/deleteDevice">, updateDevice: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateDevice">, addPlan: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addPlan">, deletePlan: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/deletePlan">, updatePlan: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updatePlan">, addSessionToStore: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/addSessionToStore">, deleteSessionFromStore: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/deleteSessionFromStore">, updateSessionInStore: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/updateSessionInStore">, setActiveHerdGpsTrackersConnectivity: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setActiveHerdGpsTrackersConnectivity">;
|
|
159
164
|
declare const _default: import("redux").Reducer<ScoutState>;
|
|
160
165
|
export default _default;
|
package/dist/store/scout.js
CHANGED
|
@@ -15,6 +15,7 @@ const initialState = {
|
|
|
15
15
|
herd_modules_api_duration_ms: null,
|
|
16
16
|
user_api_duration_ms: null,
|
|
17
17
|
data_processing_duration_ms: null,
|
|
18
|
+
cache_load_duration_ms: null,
|
|
18
19
|
lastRefreshed: 0,
|
|
19
20
|
active_herd_id: null,
|
|
20
21
|
active_device_id: null,
|
|
@@ -50,6 +51,9 @@ export const scoutSlice = createSlice({
|
|
|
50
51
|
setDataProcessingDuration: (state, action) => {
|
|
51
52
|
state.data_processing_duration_ms = action.payload;
|
|
52
53
|
},
|
|
54
|
+
setCacheLoadDuration: (state, action) => {
|
|
55
|
+
state.cache_load_duration_ms = action.payload;
|
|
56
|
+
},
|
|
53
57
|
setActiveHerdId: (state, action) => {
|
|
54
58
|
state.active_herd_id = action.payload;
|
|
55
59
|
state.active_herd_gps_trackers_connectivity = {};
|
|
@@ -265,5 +269,5 @@ export const scoutSlice = createSlice({
|
|
|
265
269
|
},
|
|
266
270
|
});
|
|
267
271
|
// Action creators are generated for each case reducer function
|
|
268
|
-
export const { setHerdModules, setStatus, setHerdModulesLoadingState, setHerdModulesLoadedInMs, setHerdModulesApiDuration, setUserApiDuration, setDataProcessingDuration, setActiveHerdId, setActiveDeviceId, setDataSource, setDataSourceInfo, appendEventsToHerdModule, replaceEventsForHerdModule, updateEventValuesForHerdModule, updatePageIndexForHerdModule, appendPlansToHerdModule, setUser, addTag, deleteTag, updateTag, addNewDeviceToHerdModule, updateDeviceForHerdModule, addDevice, deleteDevice, updateDevice, addPlan, deletePlan, updatePlan, addSessionToStore, deleteSessionFromStore, updateSessionInStore, setActiveHerdGpsTrackersConnectivity, } = scoutSlice.actions;
|
|
272
|
+
export const { setHerdModules, setStatus, setHerdModulesLoadingState, setHerdModulesLoadedInMs, setHerdModulesApiDuration, setUserApiDuration, setDataProcessingDuration, setCacheLoadDuration, setActiveHerdId, setActiveDeviceId, setDataSource, setDataSourceInfo, appendEventsToHerdModule, replaceEventsForHerdModule, updateEventValuesForHerdModule, updatePageIndexForHerdModule, appendPlansToHerdModule, setUser, addTag, deleteTag, updateTag, addNewDeviceToHerdModule, updateDeviceForHerdModule, addDevice, deleteDevice, updateDevice, addPlan, deletePlan, updatePlan, addSessionToStore, deleteSessionFromStore, updateSessionInStore, setActiveHerdGpsTrackersConnectivity, } = scoutSlice.actions;
|
|
269
273
|
export default scoutSlice.reducer;
|