@adventurelabs/scout-core 1.0.131 → 1.0.133
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.
|
@@ -28,12 +28,14 @@ export function useScoutRealtimeDevices(scoutSupabase) {
|
|
|
28
28
|
case "UPDATE":
|
|
29
29
|
operation = EnumRealtimeOperation.UPDATE;
|
|
30
30
|
if (data.record) {
|
|
31
|
+
console.log("[Devices] Device updated:", data.record);
|
|
31
32
|
dispatch(updateDevice(data.record));
|
|
32
33
|
}
|
|
33
34
|
break;
|
|
34
35
|
case "DELETE":
|
|
35
36
|
operation = EnumRealtimeOperation.DELETE;
|
|
36
37
|
if (data.old_record) {
|
|
38
|
+
console.log("[Devices] Device deleted:", data.old_record);
|
|
37
39
|
dispatch(deleteDevice(data.old_record));
|
|
38
40
|
}
|
|
39
41
|
break;
|
|
@@ -1,26 +1,41 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { useAppDispatch } from "../store/hooks";
|
|
2
3
|
import { useEffect, useRef, useCallback, useState } from "react";
|
|
4
|
+
import { upsertVersionSoftware, deleteVersionSoftwareById, } from "../store/scout";
|
|
3
5
|
import { EnumRealtimeOperation } from "../types/realtime";
|
|
4
6
|
export function useScoutRealtimeVersionsSoftware(scoutSupabase) {
|
|
5
7
|
const channels = useRef([]);
|
|
8
|
+
const dispatch = useAppDispatch();
|
|
6
9
|
const [newVersionsItems, setNewVersionsItems] = useState([]);
|
|
7
10
|
// Handle versions software broadcasts
|
|
8
11
|
const handleVersionsSoftwareBroadcast = useCallback((payload) => {
|
|
9
|
-
|
|
12
|
+
console.log("[VersionsSoftware] Broadcast received:", payload.payload.operation);
|
|
13
|
+
const data = payload.payload;
|
|
10
14
|
const versionData = data.record || data.old_record;
|
|
11
|
-
if (!versionData)
|
|
15
|
+
if (!versionData)
|
|
12
16
|
return;
|
|
13
|
-
}
|
|
14
17
|
let operation;
|
|
15
18
|
switch (data.operation) {
|
|
16
19
|
case "INSERT":
|
|
17
20
|
operation = EnumRealtimeOperation.INSERT;
|
|
21
|
+
if (data.record) {
|
|
22
|
+
console.log("[VersionsSoftware] New version received:", data.record);
|
|
23
|
+
dispatch(upsertVersionSoftware(data.record));
|
|
24
|
+
}
|
|
18
25
|
break;
|
|
19
26
|
case "UPDATE":
|
|
20
27
|
operation = EnumRealtimeOperation.UPDATE;
|
|
28
|
+
if (data.record) {
|
|
29
|
+
console.log("[VersionsSoftware] Version updated:", data.record);
|
|
30
|
+
dispatch(upsertVersionSoftware(data.record));
|
|
31
|
+
}
|
|
21
32
|
break;
|
|
22
33
|
case "DELETE":
|
|
23
34
|
operation = EnumRealtimeOperation.DELETE;
|
|
35
|
+
if (data.old_record) {
|
|
36
|
+
console.log("[VersionsSoftware] Version deleted:", data.old_record);
|
|
37
|
+
dispatch(deleteVersionSoftwareById(data.old_record.id));
|
|
38
|
+
}
|
|
24
39
|
break;
|
|
25
40
|
default:
|
|
26
41
|
return;
|
|
@@ -31,7 +46,7 @@ export function useScoutRealtimeVersionsSoftware(scoutSupabase) {
|
|
|
31
46
|
operation,
|
|
32
47
|
};
|
|
33
48
|
setNewVersionsItems((prev) => [realtimeData, ...prev]);
|
|
34
|
-
}, []);
|
|
49
|
+
}, [dispatch]);
|
|
35
50
|
// Clear new items
|
|
36
51
|
const clearNewItems = useCallback(() => {
|
|
37
52
|
setNewVersionsItems([]);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
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, setHerdModulesApiServerProcessingDuration, setHerdModulesApiTotalRequestDuration, setUserApiDuration, setDataProcessingDuration, setCacheLoadDuration, setUser, setDataSource, setDataSourceInfo, } from "../store/scout";
|
|
4
|
+
import { EnumScoutStateStatus, setHerdModules, setStatus, setHerdModulesLoadingState, setHerdModulesLoadedInMs, setHerdModulesApiServerProcessingDuration, setHerdModulesApiTotalRequestDuration, setUserApiDuration, setDataProcessingDuration, setCacheLoadDuration, setUser, setDataSource, setDataSourceInfo, setVersionsSoftware, } 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_versions_software } from "../helpers/versions_software";
|
|
7
8
|
import { scoutCache } from "../helpers/cache";
|
|
8
9
|
import { EnumDataSource } from "../types/data_source";
|
|
9
10
|
import { createBrowserClient } from "@supabase/ssr";
|
|
@@ -87,7 +88,10 @@ export function useScoutRefresh(options = {}) {
|
|
|
87
88
|
if (cacheFirst) {
|
|
88
89
|
const cacheStartTime = Date.now();
|
|
89
90
|
try {
|
|
90
|
-
const cacheResult = await
|
|
91
|
+
const [cacheResult, versionsCacheResult] = await Promise.all([
|
|
92
|
+
scoutCache.getHerdModules(),
|
|
93
|
+
scoutCache.getVersionsSoftware(),
|
|
94
|
+
]);
|
|
91
95
|
cacheLoadDuration = Date.now() - cacheStartTime;
|
|
92
96
|
timingRefs.current.cacheLoadDuration = cacheLoadDuration;
|
|
93
97
|
dispatch(setCacheLoadDuration(cacheLoadDuration));
|
|
@@ -106,13 +110,18 @@ export function useScoutRefresh(options = {}) {
|
|
|
106
110
|
console.log(`[useScoutRefresh] Updating store with cached herd modules`);
|
|
107
111
|
dispatch(setHerdModules(cachedHerdModules));
|
|
108
112
|
dispatch(setHerdModulesLoadingState(EnumHerdModulesLoadingState.SUCCESSFULLY_LOADED));
|
|
113
|
+
// Load cached software versions if available
|
|
114
|
+
if (versionsCacheResult.data && !versionsCacheResult.isStale) {
|
|
115
|
+
console.log(`[useScoutRefresh] Loaded ${versionsCacheResult.data.length} software versions from cache`);
|
|
116
|
+
dispatch(setVersionsSoftware(versionsCacheResult.data));
|
|
117
|
+
}
|
|
109
118
|
// If cache is fresh, we still background fetch but don't wait
|
|
110
119
|
if (!cacheResult.isStale) {
|
|
111
120
|
// Background fetch fresh data without blocking
|
|
112
121
|
(async () => {
|
|
113
122
|
try {
|
|
114
123
|
const backgroundStartTime = Date.now();
|
|
115
|
-
const [backgroundHerdModulesResult, backgroundUserResult] = await Promise.all([
|
|
124
|
+
const [backgroundHerdModulesResult, backgroundUserResult, backgroundVersionsResult,] = await Promise.all([
|
|
116
125
|
(async () => {
|
|
117
126
|
const start = Date.now();
|
|
118
127
|
const result = await server_load_herd_modules();
|
|
@@ -136,22 +145,45 @@ export function useScoutRefresh(options = {}) {
|
|
|
136
145
|
dispatch(setUserApiDuration(duration));
|
|
137
146
|
return { data: data.user, status: "success" };
|
|
138
147
|
})(),
|
|
148
|
+
(async () => {
|
|
149
|
+
const start = Date.now();
|
|
150
|
+
const result = await server_get_versions_software();
|
|
151
|
+
const duration = Date.now() - start;
|
|
152
|
+
return { ...result, duration };
|
|
153
|
+
})(),
|
|
139
154
|
]);
|
|
140
155
|
const backgroundDuration = Date.now() - backgroundStartTime;
|
|
141
156
|
// Validate background responses
|
|
142
|
-
if (backgroundHerdModulesResult.
|
|
157
|
+
if (backgroundHerdModulesResult.status === "success" &&
|
|
158
|
+
backgroundHerdModulesResult.data &&
|
|
143
159
|
Array.isArray(backgroundHerdModulesResult.data) &&
|
|
144
160
|
backgroundUserResult &&
|
|
145
161
|
backgroundUserResult.data) {
|
|
146
162
|
// Update cache with fresh data
|
|
147
163
|
try {
|
|
148
|
-
await
|
|
164
|
+
await Promise.all([
|
|
165
|
+
scoutCache.setHerdModules(backgroundHerdModulesResult.data, cacheTtlMs),
|
|
166
|
+
backgroundVersionsResult &&
|
|
167
|
+
backgroundVersionsResult.status === "success" &&
|
|
168
|
+
backgroundVersionsResult.data
|
|
169
|
+
? scoutCache.setVersionsSoftware(backgroundVersionsResult.data, cacheTtlMs)
|
|
170
|
+
: Promise.resolve(),
|
|
171
|
+
]);
|
|
149
172
|
}
|
|
150
173
|
catch (cacheError) {
|
|
151
174
|
console.warn("[useScoutRefresh] Background cache save failed:", cacheError);
|
|
152
175
|
await handleIndexedDbError(cacheError, "background cache save", async () => {
|
|
176
|
+
const promises = [];
|
|
153
177
|
if (backgroundHerdModulesResult.data) {
|
|
154
|
-
|
|
178
|
+
promises.push(scoutCache.setHerdModules(backgroundHerdModulesResult.data, cacheTtlMs));
|
|
179
|
+
}
|
|
180
|
+
if (backgroundVersionsResult &&
|
|
181
|
+
backgroundVersionsResult.status === "success" &&
|
|
182
|
+
backgroundVersionsResult.data) {
|
|
183
|
+
promises.push(scoutCache.setVersionsSoftware(backgroundVersionsResult.data, cacheTtlMs));
|
|
184
|
+
}
|
|
185
|
+
if (promises.length > 0) {
|
|
186
|
+
await Promise.all(promises);
|
|
155
187
|
}
|
|
156
188
|
});
|
|
157
189
|
}
|
|
@@ -162,6 +194,13 @@ export function useScoutRefresh(options = {}) {
|
|
|
162
194
|
console.log(`[useScoutRefresh] Updating store with background user data`);
|
|
163
195
|
dispatch(setUser(backgroundUserResult.data));
|
|
164
196
|
}
|
|
197
|
+
// Update software versions if successful
|
|
198
|
+
if (backgroundVersionsResult &&
|
|
199
|
+
backgroundVersionsResult.status === "success" &&
|
|
200
|
+
backgroundVersionsResult.data) {
|
|
201
|
+
console.log(`[useScoutRefresh] Updating store with background software versions`);
|
|
202
|
+
dispatch(setVersionsSoftware(backgroundVersionsResult.data));
|
|
203
|
+
}
|
|
165
204
|
// Update data source to DATABASE
|
|
166
205
|
dispatch(setDataSource(EnumDataSource.DATABASE));
|
|
167
206
|
dispatch(setDataSourceInfo({
|
|
@@ -195,7 +234,7 @@ export function useScoutRefresh(options = {}) {
|
|
|
195
234
|
}
|
|
196
235
|
// Step 2: Load fresh data from API
|
|
197
236
|
const parallelStartTime = Date.now();
|
|
198
|
-
const [herdModulesResult, userResult] = await Promise.all([
|
|
237
|
+
const [herdModulesResult, userResult, versionsResult] = await Promise.all([
|
|
199
238
|
(async () => {
|
|
200
239
|
const start = Date.now();
|
|
201
240
|
const result = await server_load_herd_modules();
|
|
@@ -213,6 +252,16 @@ export function useScoutRefresh(options = {}) {
|
|
|
213
252
|
start,
|
|
214
253
|
};
|
|
215
254
|
})(),
|
|
255
|
+
(async () => {
|
|
256
|
+
const start = Date.now();
|
|
257
|
+
const result = await server_get_versions_software();
|
|
258
|
+
const duration = Date.now() - start;
|
|
259
|
+
return {
|
|
260
|
+
result,
|
|
261
|
+
duration,
|
|
262
|
+
start,
|
|
263
|
+
};
|
|
264
|
+
})(),
|
|
216
265
|
]);
|
|
217
266
|
const parallelDuration = Date.now() - parallelStartTime;
|
|
218
267
|
console.log(`[useScoutRefresh] Parallel API requests completed in ${parallelDuration}ms`);
|
|
@@ -256,7 +305,15 @@ export function useScoutRefresh(options = {}) {
|
|
|
256
305
|
// Step 3: Update cache with fresh data
|
|
257
306
|
const cacheSaveStartTime = Date.now();
|
|
258
307
|
try {
|
|
259
|
-
|
|
308
|
+
const cachePromises = [
|
|
309
|
+
scoutCache.setHerdModules(compatible_new_herd_modules, cacheTtlMs),
|
|
310
|
+
];
|
|
311
|
+
// Cache software versions if available
|
|
312
|
+
if (versionsResult.result.status === "success" &&
|
|
313
|
+
versionsResult.result.data) {
|
|
314
|
+
cachePromises.push(scoutCache.setVersionsSoftware(versionsResult.result.data, cacheTtlMs));
|
|
315
|
+
}
|
|
316
|
+
await Promise.all(cachePromises);
|
|
260
317
|
const cacheSaveDuration = Date.now() - cacheSaveStartTime;
|
|
261
318
|
timingRefs.current.cacheSaveDuration = cacheSaveDuration;
|
|
262
319
|
console.log(`[useScoutRefresh] Cache updated in ${cacheSaveDuration}ms with TTL: ${Math.round(cacheTtlMs / 1000)}s`);
|
|
@@ -264,7 +321,14 @@ export function useScoutRefresh(options = {}) {
|
|
|
264
321
|
catch (cacheError) {
|
|
265
322
|
console.warn("[useScoutRefresh] Cache save failed:", cacheError);
|
|
266
323
|
await handleIndexedDbError(cacheError, "cache save", async () => {
|
|
267
|
-
|
|
324
|
+
const retryPromises = [
|
|
325
|
+
scoutCache.setHerdModules(compatible_new_herd_modules, cacheTtlMs),
|
|
326
|
+
];
|
|
327
|
+
if (versionsResult.result.status === "success" &&
|
|
328
|
+
versionsResult.result.data) {
|
|
329
|
+
retryPromises.push(scoutCache.setVersionsSoftware(versionsResult.result.data, cacheTtlMs));
|
|
330
|
+
}
|
|
331
|
+
await Promise.all(retryPromises);
|
|
268
332
|
});
|
|
269
333
|
}
|
|
270
334
|
// Step 4: Conditionally update store with fresh data, skip timestamp-only changes
|
|
@@ -274,6 +338,12 @@ export function useScoutRefresh(options = {}) {
|
|
|
274
338
|
dispatch(setHerdModules(compatible_new_herd_modules));
|
|
275
339
|
console.log(`[useScoutRefresh] Updating store with fresh user data`);
|
|
276
340
|
dispatch(setUser(res_new_user.data));
|
|
341
|
+
// Update software versions
|
|
342
|
+
if (versionsResult.result.status === "success" &&
|
|
343
|
+
versionsResult.result.data) {
|
|
344
|
+
console.log(`[useScoutRefresh] Updating store with fresh software versions`);
|
|
345
|
+
dispatch(setVersionsSoftware(versionsResult.result.data));
|
|
346
|
+
}
|
|
277
347
|
dispatch(setHerdModulesLoadingState(EnumHerdModulesLoadingState.SUCCESSFULLY_LOADED));
|
|
278
348
|
const dataProcessingDuration = Date.now() - dataProcessingStartTime;
|
|
279
349
|
timingRefs.current.dataProcessingDuration = dataProcessingDuration;
|
package/dist/store/scout.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IUser } from "../types/db";
|
|
1
|
+
import { IUser, IVersionsSoftware } from "../types/db";
|
|
2
2
|
import { IHerdModule, EnumHerdModulesLoadingState } from "../types/herd_module";
|
|
3
3
|
import { EnumDataSource, IDataSourceInfo } from "../types/data_source";
|
|
4
4
|
import { MapDeviceIdToConnectivity } from "../types/connectivity";
|
|
@@ -23,6 +23,7 @@ export interface ScoutState {
|
|
|
23
23
|
data_source: EnumDataSource;
|
|
24
24
|
data_source_info: IDataSourceInfo | null;
|
|
25
25
|
active_herd_gps_trackers_connectivity: MapDeviceIdToConnectivity;
|
|
26
|
+
versions_software: IVersionsSoftware[];
|
|
26
27
|
}
|
|
27
28
|
export interface RootState {
|
|
28
29
|
scout: ScoutState;
|
|
@@ -172,7 +173,19 @@ export declare const scoutSlice: import("@reduxjs/toolkit").Slice<ScoutState, {
|
|
|
172
173
|
payload: any;
|
|
173
174
|
type: string;
|
|
174
175
|
}) => void;
|
|
176
|
+
setVersionsSoftware: (state: import("immer").WritableDraft<ScoutState>, action: {
|
|
177
|
+
payload: any;
|
|
178
|
+
type: string;
|
|
179
|
+
}) => void;
|
|
180
|
+
upsertVersionSoftware: (state: import("immer").WritableDraft<ScoutState>, action: {
|
|
181
|
+
payload: any;
|
|
182
|
+
type: string;
|
|
183
|
+
}) => void;
|
|
184
|
+
deleteVersionSoftwareById: (state: import("immer").WritableDraft<ScoutState>, action: {
|
|
185
|
+
payload: any;
|
|
186
|
+
type: string;
|
|
187
|
+
}) => void;
|
|
175
188
|
}, "scout", "scout", import("@reduxjs/toolkit").SliceSelectors<ScoutState>>;
|
|
176
|
-
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">, setHerdModulesApiServerProcessingDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesApiServerProcessingDuration">, setHerdModulesApiTotalRequestDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesApiTotalRequestDuration">, 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">, appendArtifactsToHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/appendArtifactsToHerdModule">, replaceArtifactsForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/replaceArtifactsForHerdModule">, 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">;
|
|
189
|
+
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">, setHerdModulesApiServerProcessingDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesApiServerProcessingDuration">, setHerdModulesApiTotalRequestDuration: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setHerdModulesApiTotalRequestDuration">, 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">, appendArtifactsToHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/appendArtifactsToHerdModule">, replaceArtifactsForHerdModule: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/replaceArtifactsForHerdModule">, 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">, setVersionsSoftware: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/setVersionsSoftware">, upsertVersionSoftware: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/upsertVersionSoftware">, deleteVersionSoftwareById: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "scout/deleteVersionSoftwareById">;
|
|
177
190
|
declare const _default: import("redux").Reducer<ScoutState>;
|
|
178
191
|
export default _default;
|
package/dist/store/scout.js
CHANGED
|
@@ -25,6 +25,7 @@ const initialState = {
|
|
|
25
25
|
data_source: EnumDataSource.UNKNOWN,
|
|
26
26
|
data_source_info: null,
|
|
27
27
|
active_herd_gps_trackers_connectivity: {},
|
|
28
|
+
versions_software: [],
|
|
28
29
|
};
|
|
29
30
|
export const scoutSlice = createSlice({
|
|
30
31
|
name: "scout",
|
|
@@ -284,8 +285,27 @@ export const scoutSlice = createSlice({
|
|
|
284
285
|
setActiveHerdGpsTrackersConnectivity: (state, action) => {
|
|
285
286
|
state.active_herd_gps_trackers_connectivity = action.payload;
|
|
286
287
|
},
|
|
288
|
+
setVersionsSoftware: (state, action) => {
|
|
289
|
+
state.versions_software = action.payload;
|
|
290
|
+
},
|
|
291
|
+
upsertVersionSoftware: (state, action) => {
|
|
292
|
+
const version = action.payload;
|
|
293
|
+
const existingIndex = state.versions_software.findIndex((v) => v.id === version.id);
|
|
294
|
+
if (existingIndex !== -1) {
|
|
295
|
+
// Update existing version
|
|
296
|
+
state.versions_software[existingIndex] = version;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
// Add new version
|
|
300
|
+
state.versions_software = [version, ...state.versions_software];
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
deleteVersionSoftwareById: (state, action) => {
|
|
304
|
+
const versionId = action.payload;
|
|
305
|
+
state.versions_software = state.versions_software.filter((version) => version.id !== versionId);
|
|
306
|
+
},
|
|
287
307
|
},
|
|
288
308
|
});
|
|
289
309
|
// Action creators are generated for each case reducer function
|
|
290
|
-
export const { setHerdModules, setStatus, setHerdModulesLoadingState, setHerdModulesLoadedInMs, setHerdModulesApiServerProcessingDuration, setHerdModulesApiTotalRequestDuration, setUserApiDuration, setDataProcessingDuration, setCacheLoadDuration, setActiveHerdId, setActiveDeviceId, setDataSource, setDataSourceInfo, appendEventsToHerdModule, replaceEventsForHerdModule, appendArtifactsToHerdModule, replaceArtifactsForHerdModule, updateEventValuesForHerdModule, updatePageIndexForHerdModule, appendPlansToHerdModule, setUser, addTag, deleteTag, updateTag, addNewDeviceToHerdModule, updateDeviceForHerdModule, addDevice, deleteDevice, updateDevice, addPlan, deletePlan, updatePlan, addSessionToStore, deleteSessionFromStore, updateSessionInStore, setActiveHerdGpsTrackersConnectivity, } = scoutSlice.actions;
|
|
310
|
+
export const { setHerdModules, setStatus, setHerdModulesLoadingState, setHerdModulesLoadedInMs, setHerdModulesApiServerProcessingDuration, setHerdModulesApiTotalRequestDuration, setUserApiDuration, setDataProcessingDuration, setCacheLoadDuration, setActiveHerdId, setActiveDeviceId, setDataSource, setDataSourceInfo, appendEventsToHerdModule, replaceEventsForHerdModule, appendArtifactsToHerdModule, replaceArtifactsForHerdModule, updateEventValuesForHerdModule, updatePageIndexForHerdModule, appendPlansToHerdModule, setUser, addTag, deleteTag, updateTag, addNewDeviceToHerdModule, updateDeviceForHerdModule, addDevice, deleteDevice, updateDevice, addPlan, deletePlan, updatePlan, addSessionToStore, deleteSessionFromStore, updateSessionInStore, setActiveHerdGpsTrackersConnectivity, setVersionsSoftware, upsertVersionSoftware, deleteVersionSoftwareById, } = scoutSlice.actions;
|
|
291
311
|
export default scoutSlice.reducer;
|