@bringg/dashboard-sdk 9.76.2 → 9.76.5-pre
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/Data/storable-realtime-subscriptions.d.ts +1 -1
- package/dist/Data/storable-realtime-subscriptions.js +7 -0
- package/dist/Data/storable-realtime-subscriptions.js.map +1 -1
- package/dist/Data/storable-types.d.ts +3 -2
- package/dist/DeliveryWindows/v2/delivery-windows.consts.d.ts +3 -1
- package/dist/Vehicle/v2/vehicle-realtime-subscriptions.d.ts +18 -0
- package/dist/Vehicle/v2/vehicle-realtime-subscriptions.js +101 -0
- package/dist/Vehicle/v2/vehicle-realtime-subscriptions.js.map +1 -0
- package/dist/Vehicle/v2/vehicles-api.d.ts +5 -4
- package/dist/Vehicle/v2/vehicles-api.js +18 -12
- package/dist/Vehicle/v2/vehicles-api.js.map +1 -1
- package/dist/bringg-dashboard-sdk-cjs2.js +134 -13
- package/dist/bringg-dashboard-sdk-cjs2.js.map +1 -1
- package/dist/bringg-dashboard-sdk.js +14 -3
- package/dist/bringg-dashboard-sdk.min.js +1 -1
- package/dist/bringg-dashboard-sdk.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,7 +9,7 @@ export default class StorableRealtimeSubscriptions<TClient extends DataEntity, T
|
|
|
9
9
|
private readonly storableDataService;
|
|
10
10
|
private readonly eventCallbacks;
|
|
11
11
|
constructor(session: Session, dataStore: DataStore<TClient>, storableDataService: StorableDataService<TClient, TServer>);
|
|
12
|
-
updateStoreOnEvents(events: StorableEvent<TServer>[], subEntityEvents?: StorableSubEntityEvent[]): void;
|
|
12
|
+
updateStoreOnEvents(events: StorableEvent<TServer, TClient>[], subEntityEvents?: StorableSubEntityEvent[]): void;
|
|
13
13
|
onAnyEvent(event: string, callback: any): () => void;
|
|
14
14
|
onEvent(event: string, callback: (eventData: MappedStorableItem<TClient>) => void, options?: EventCallbackOptions): StorableEventUnsubscribe;
|
|
15
15
|
runEventCallbacks(event: string, data: MappedStorableItem<TClient>, meta?: {
|
|
@@ -29,6 +29,7 @@ var StorableRealtimeSubscriptions = /** @class */ (function () {
|
|
|
29
29
|
if (subEntityEvents === void 0) { subEntityEvents = []; }
|
|
30
30
|
var _loop_1 = function (event_1) {
|
|
31
31
|
this_1.realtimeSubscriptions.subscribe(event_1.name, function (item) {
|
|
32
|
+
var _a, _b;
|
|
32
33
|
item = event_1.itemExtractor ? event_1.itemExtractor(item) : item;
|
|
33
34
|
var data = event_1.extraDataFunc && event_1.extraDataFunc(item);
|
|
34
35
|
if (data === null || data === void 0 ? void 0 : data.ignore) {
|
|
@@ -45,10 +46,16 @@ var StorableRealtimeSubscriptions = /** @class */ (function () {
|
|
|
45
46
|
var skipStoreUpdate = !!(data === null || data === void 0 ? void 0 : data.skipStoreUpdate);
|
|
46
47
|
if (skipStoreUpdate) {
|
|
47
48
|
var mappedStorableItem = _this.storableDataService.mapItem(item, data === null || data === void 0 ? void 0 : data.params);
|
|
49
|
+
// Cache layer: reconcile dependent cached entities even when this entity itself is
|
|
50
|
+
// not stored (e.g. a not-yet-cached trailer moving between cached trucks).
|
|
51
|
+
(_a = event_1.onAfterStoreSync) === null || _a === void 0 ? void 0 : _a.call(event_1, mappedStorableItem);
|
|
48
52
|
_this.runEventCallbacks(event_1.name, mappedStorableItem, { skipStoreUpdate: skipStoreUpdate });
|
|
49
53
|
}
|
|
50
54
|
else {
|
|
51
55
|
var mappedStorableItem = _this.storableDataService.updateInStores(item, undefined, undefined, data === null || data === void 0 ? void 0 : data.params);
|
|
56
|
+
// Cache layer: let the entity reconcile dependent cached entities before any consumer
|
|
57
|
+
// is notified, so the whole store is consistent when store events fire.
|
|
58
|
+
(_b = event_1.onAfterStoreSync) === null || _b === void 0 ? void 0 : _b.call(event_1, mappedStorableItem);
|
|
52
59
|
_this.runEventCallbacks(event_1.name, mappedStorableItem);
|
|
53
60
|
}
|
|
54
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storable-realtime-subscriptions.js","sourceRoot":"","sources":["../../src/Data/storable-realtime-subscriptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,qFAA8D;AAG9D,iDAA+C;AAQ/C;IAWC,uCACC,OAAgB,EAChB,SAA6B,EAC7B,mBAA0D;QAE1D,IAAI,CAAC,qBAAqB,GAAG,IAAI,gCAAqB,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC1B,CAAC;IAEM,2DAAmB,GAA1B,
|
|
1
|
+
{"version":3,"file":"storable-realtime-subscriptions.js","sourceRoot":"","sources":["../../src/Data/storable-realtime-subscriptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,qFAA8D;AAG9D,iDAA+C;AAQ/C;IAWC,uCACC,OAAgB,EAChB,SAA6B,EAC7B,mBAA0D;QAE1D,IAAI,CAAC,qBAAqB,GAAG,IAAI,gCAAqB,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC1B,CAAC;IAEM,2DAAmB,GAA1B,UACC,MAAyC,EACzC,eAA8C;;QAF/C,iBAmEC;QAjEA,gCAAA,EAAA,oBAA8C;gCAEnC,OAAK;YACf,OAAK,qBAAqB,CAAC,SAAS,CAAC,OAAK,CAAC,IAAI,EAAE,UAAC,IAAa;;gBAC9D,IAAI,GAAG,OAAK,CAAC,aAAa,CAAC,CAAC,CAAC,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAE9D,IAAM,IAAI,GAAG,OAAK,CAAC,aAAa,IAAI,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAE9D,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,EAAE;oBACjB,OAAO;iBACP;gBAED,IAAI,OAAK,CAAC,QAAQ,EAAE;oBACnB,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;wBACjC,OAAO;qBACP;oBAED,IAAM,WAAW,GAAG,KAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAEvE,KAAI,CAAC,iBAAiB,CAAC,OAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;iBAC1D;qBAAM;oBACN,IAAM,eAAe,GAAG,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,CAAA,CAAC;oBAEhD,IAAI,eAAe,EAAE;wBACpB,IAAM,kBAAkB,GAAG,KAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC;wBAEhF,mFAAmF;wBACnF,2EAA2E;wBAC3E,MAAA,OAAK,CAAC,gBAAgB,wDAAG,kBAAkB,CAAC,CAAC;wBAE7C,KAAI,CAAC,iBAAiB,CAAC,OAAK,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAAE,eAAe,iBAAA,EAAE,CAAC,CAAC;qBAC5E;yBAAM;wBACN,IAAM,kBAAkB,GAAG,KAAI,CAAC,mBAAmB,CAAC,cAAc,CACjE,IAAI,EACJ,SAAS,EACT,SAAS,EACT,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CACZ,CAAC;wBAEF,sFAAsF;wBACtF,wEAAwE;wBACxE,MAAA,OAAK,CAAC,gBAAgB,wDAAG,kBAAkB,CAAC,CAAC;wBAE7C,KAAI,CAAC,iBAAiB,CAAC,OAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;qBACvD;iBACD;YACF,CAAC,CAAC,CAAC;;;;YA5CJ,KAAoB,IAAA,WAAA,SAAA,MAAM,CAAA,8BAAA;gBAArB,IAAM,OAAK,mBAAA;wBAAL,OAAK;aA6Cf;;;;;;;;;gCAEU,cAAc;YACxB,OAAK,qBAAqB,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,UAAA,kBAAkB;gBAC3E,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC,EAAhC,CAAgC,CAAC,CAAC;gBAC/E,IAAM,eAAe,GAAG,KAAI,CAAC,eAAe,CAC3C,kBAAkB,EAClB,cAAc,CAAC,OAAO,IAAI,IAAI,EAC9B,cAAc,CAAC,WAAW,EAC1B,cAAc,CAAC,KAAK,EACpB,cAAc,CAAC,QAAQ,CACvB,CAAC;gBAEF,IAAI,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,EAAE;oBAC7B,KAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;iBACrE;YACF,CAAC,CAAC,CAAC;;;;YAdJ,KAA6B,IAAA,oBAAA,SAAA,eAAe,CAAA,gDAAA;gBAAvC,IAAM,cAAc,4BAAA;wBAAd,cAAc;aAexB;;;;;;;;;IACF,CAAC;IAEM,kDAAU,GAAjB,UAAkB,KAAa,EAAE,QAAQ;QACxC,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAEM,+CAAO,GAAd,UACC,KAAa,EACb,QAA0D,EAC1D,OAAkC;QAHnC,iBAoBC;QAjBA,wBAAA,EAAA,YAAkC;QAElC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SAChC;QAED,IAAM,KAAK,GAAG,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAE,CAAC;QAEpC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,OAAO;YACN,IAAM,KAAK,GAAG,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAExD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACf,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC5C;QACF,CAAC,CAAC;IACH,CAAC;IAEM,yDAAiB,GAAxB,UAAyB,KAAa,EAAE,IAAiC,EAAE,IAAoC;QAC9G,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK;YAC/C,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,KAAI,KAAK,CAAC,OAAO,CAAC,0BAA0B,KAAK,IAAI,EAAE;gBAC/E,OAAO;aACP;YAED,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,uDAAe,GAAvB,UACC,SAAc,EACd,OAAe,EACf,WAAmB,EACnB,cAAsB,EACtB,QAAiB;;QAEjB,IAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC;QAET,IAAI,OAAO,EAAE;YACZ,IAAM,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;gBAC5C,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,UAAA,aAAa,IAAI,OAAA,aAAa,CAAC,EAAE,KAAK,SAAS,CAAC,OAAO,CAAC,EAAvC,CAAuC,CAAC;gBAC7F,CAAC,CAAC,CAAC,CAAC,CAAC;YAEN,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE;gBACvB,IAAI,QAAQ,EAAE;oBACb,IAAI,aAAK,GAAC,cAAc,IAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,KAAE,CAAC;oBAE3E,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACpE,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtD;oBAED,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;iBACjD;qBAAM;oBACN,IAAM,aAAa,GAAG,4BAAY,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;oBAEhG,IAAI;wBACH,GAAC,cAAc,IAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;2BAChF,CAAC;oBACF,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;iBACpD;aACD;iBAAM,IAAI,CAAC,QAAQ,EAAE;gBACrB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;oBAC7B,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;iBAC7B;gBAED,IAAI;oBACH,GAAC,cAAc,IAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;uBAChF,CAAC;gBAEF,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACxC;SACD;QAED,IAAI,IAAI,EAAE;YACT,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,MAAA,EAAE,CAAC;SAClC;IACF,CAAC;IAEO,iEAAyB,GAAjC,UAAkC,MAAM;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,QAAA,EAAE,EAAE,cAAM,OAAA,CAAC,EAAE,CAAC,EAAJ,CAAI,CAAC,CAAC;IAC3C,CAAC;IACF,oCAAC;AAAD,CAAC,AArLD,IAqLC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DataEntity } from '../data-entity';
|
|
2
|
-
export type StorableEvent<TServer extends DataEntity> = {
|
|
1
|
+
import { DataEntity, MappedStorableItem } from '../data-entity';
|
|
2
|
+
export type StorableEvent<TServer extends DataEntity, TClient extends DataEntity = TServer> = {
|
|
3
3
|
name: string;
|
|
4
4
|
extraDataFunc?: (item: TServer) => {
|
|
5
5
|
ignore?: boolean;
|
|
@@ -8,6 +8,7 @@ export type StorableEvent<TServer extends DataEntity> = {
|
|
|
8
8
|
};
|
|
9
9
|
itemExtractor?: (item: any) => TServer;
|
|
10
10
|
isDelete: boolean;
|
|
11
|
+
onAfterStoreSync?: (mapped: MappedStorableItem<TClient>) => void;
|
|
11
12
|
};
|
|
12
13
|
export type StorableSubEntityEvent = {
|
|
13
14
|
name: string;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { FillRatioData } from '@bringg/types';
|
|
1
2
|
export type DeliveryWindow = {
|
|
2
3
|
id: number;
|
|
3
4
|
planned_delivery_window_id: number;
|
|
4
|
-
fill_ratio
|
|
5
|
+
fill_ratio?: number;
|
|
6
|
+
fill_ratio_data: FillRatioData;
|
|
5
7
|
};
|
|
6
8
|
export type DeliveryWindowsResponse = {
|
|
7
9
|
success: boolean;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Vehicle } from '@bringg/types';
|
|
2
|
+
import type { StorableEventUnsubscribe } from '../../Data/storable-types';
|
|
3
|
+
import type DataStore from '../../data-store';
|
|
4
|
+
import type Session from '../../Services/Identity/Session';
|
|
5
|
+
import type StorableDataService from '../../storable-data-service';
|
|
6
|
+
export default class VehicleRealtimeSubscriptions {
|
|
7
|
+
private vehiclesStore;
|
|
8
|
+
private storableDataService;
|
|
9
|
+
private readonly storableRealtimeSubscriptions;
|
|
10
|
+
constructor(session: Session, vehiclesStore: DataStore<Vehicle>, storableDataService: StorableDataService<Vehicle, Vehicle>);
|
|
11
|
+
updateStoreOnEvents(): void;
|
|
12
|
+
onUpdate(callback: (vehicle: Vehicle) => void): StorableEventUnsubscribe;
|
|
13
|
+
onDelete(callback: (vehicle: Vehicle) => void): StorableEventUnsubscribe;
|
|
14
|
+
onUnassigned(callback: (vehicle: Vehicle) => void): () => void;
|
|
15
|
+
private reconcileTrucksOnTrailerChange;
|
|
16
|
+
private findTruckHoldingTrailer;
|
|
17
|
+
private applyTrailerToTruck;
|
|
18
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var BringgDashboardSDK_1 = require("../../BringgDashboardSDK");
|
|
18
|
+
var storable_realtime_subscriptions_1 = __importDefault(require("../../Data/storable-realtime-subscriptions"));
|
|
19
|
+
var Vehicle_consts_1 = require("../Vehicle.consts");
|
|
20
|
+
var VehicleRealtimeSubscriptions = /** @class */ (function () {
|
|
21
|
+
function VehicleRealtimeSubscriptions(session, vehiclesStore, storableDataService) {
|
|
22
|
+
this.vehiclesStore = vehiclesStore;
|
|
23
|
+
this.storableDataService = storableDataService;
|
|
24
|
+
this.storableRealtimeSubscriptions = new storable_realtime_subscriptions_1.default(session, vehiclesStore, storableDataService);
|
|
25
|
+
}
|
|
26
|
+
VehicleRealtimeSubscriptions.prototype.updateStoreOnEvents = function () {
|
|
27
|
+
var _this = this;
|
|
28
|
+
this.storableRealtimeSubscriptions.updateStoreOnEvents([
|
|
29
|
+
{
|
|
30
|
+
name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE,
|
|
31
|
+
isDelete: false,
|
|
32
|
+
extraDataFunc: function (vehicle) { return ({ skipStoreUpdate: !_this.vehiclesStore.get(vehicle.id) }); },
|
|
33
|
+
// Reconcile Trailer and affected Trucks after Truck-Trailer link is changed
|
|
34
|
+
// Remove if / when Trailer-Truck link changes trigger Truck/-s real-time updated events
|
|
35
|
+
onAfterStoreSync: function (mapped) { return _this.reconcileTrucksOnTrailerChange(mapped); }
|
|
36
|
+
},
|
|
37
|
+
{ name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, isDelete: true }
|
|
38
|
+
]);
|
|
39
|
+
};
|
|
40
|
+
VehicleRealtimeSubscriptions.prototype.onUpdate = function (callback) {
|
|
41
|
+
return this.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, function (item) { return callback(item.current); });
|
|
42
|
+
};
|
|
43
|
+
VehicleRealtimeSubscriptions.prototype.onDelete = function (callback) {
|
|
44
|
+
return this.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, function (item) { return callback(item.current); });
|
|
45
|
+
};
|
|
46
|
+
VehicleRealtimeSubscriptions.prototype.onUnassigned = function (callback) {
|
|
47
|
+
return this.storableRealtimeSubscriptions.onAnyEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UNASSIGNED, function (vehicle) {
|
|
48
|
+
return callback(vehicle);
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
// This should work as expected until Vehicle Update event sends full Vehicle structure
|
|
52
|
+
// and StorableDataService.mapper maps real-time payload to MappedStorableItem.current
|
|
53
|
+
VehicleRealtimeSubscriptions.prototype.reconcileTrucksOnTrailerChange = function (_a) {
|
|
54
|
+
var _this = this;
|
|
55
|
+
var _b, _c;
|
|
56
|
+
var trailer = _a.current;
|
|
57
|
+
// Only a trailer update can change a truck's derived `trailer` field.
|
|
58
|
+
if (!(trailer === null || trailer === void 0 ? void 0 : trailer.is_trailer)) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
var newTruckId = (_b = trailer.truck_id) !== null && _b !== void 0 ? _b : null;
|
|
62
|
+
var oldTruck = this.findTruckHoldingTrailer(trailer.id);
|
|
63
|
+
// No connection change relative to the cache - nothing to reconcile.
|
|
64
|
+
if (((_c = oldTruck === null || oldTruck === void 0 ? void 0 : oldTruck.id) !== null && _c !== void 0 ? _c : null) === newTruckId) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
(0, BringgDashboardSDK_1.getGlobals)().mobx.runInAction(function () {
|
|
68
|
+
if (oldTruck) {
|
|
69
|
+
_this.applyTrailerToTruck(oldTruck.id, null);
|
|
70
|
+
}
|
|
71
|
+
_this.applyTrailerToTruck(newTruckId, trailer);
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
VehicleRealtimeSubscriptions.prototype.findTruckHoldingTrailer = function (trailerId) {
|
|
75
|
+
return this.vehiclesStore
|
|
76
|
+
.getGroup(Vehicle_consts_1.VehicleGroup.IsTrailer, false)
|
|
77
|
+
.find(function (vehicle) { return vehicle.trailer && vehicle.trailer.id === trailerId; });
|
|
78
|
+
};
|
|
79
|
+
VehicleRealtimeSubscriptions.prototype.applyTrailerToTruck = function (truckId, trailerEntity) {
|
|
80
|
+
if (!truckId) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
var truck = this.vehiclesStore.get(truckId);
|
|
84
|
+
// Only reconcile trucks that are actually cached; missing trucks get the correct trailer on load.
|
|
85
|
+
if (!truck) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
var mobx = (0, BringgDashboardSDK_1.getGlobals)().mobx;
|
|
89
|
+
// Deep, plain, non-observable COPY so the truck's `trailer`.
|
|
90
|
+
// Drop the nested trailer's own `trailer` to avoid recursive nesting.
|
|
91
|
+
var trailerSnapshot = trailerEntity ? __assign(__assign({}, mobx.toJS(trailerEntity)), { trailer: null }) : null;
|
|
92
|
+
// toJS the truck too so we replace it with a fresh plain object instead of mutating the live
|
|
93
|
+
// observable in place; updateInStores re-observes it as the truck's own subtree.
|
|
94
|
+
var updatedTruck = __assign(__assign({}, mobx.toJS(truck)), { trailer: trailerSnapshot });
|
|
95
|
+
var mapped = this.storableDataService.updateInStores(updatedTruck);
|
|
96
|
+
this.storableRealtimeSubscriptions.runEventCallbacks(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, mapped);
|
|
97
|
+
};
|
|
98
|
+
return VehicleRealtimeSubscriptions;
|
|
99
|
+
}());
|
|
100
|
+
exports.default = VehicleRealtimeSubscriptions;
|
|
101
|
+
//# sourceMappingURL=vehicle-realtime-subscriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vehicle-realtime-subscriptions.js","sourceRoot":"","sources":["../../../src/Vehicle/v2/vehicle-realtime-subscriptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export default class VehiclesApi {
|
|
|
10
10
|
private readonly vehiclesStore;
|
|
11
11
|
private readonly vehiclesService;
|
|
12
12
|
private readonly storableDataService;
|
|
13
|
-
private readonly
|
|
13
|
+
private readonly vehicleRealtimeSubscriptions;
|
|
14
14
|
constructor(session: Session);
|
|
15
15
|
load(id: number, options?: DataOptions): Promise<Vehicle>;
|
|
16
16
|
loadAll(options?: DataOptions): Promise<Vehicle[]>;
|
|
@@ -22,9 +22,10 @@ export default class VehiclesApi {
|
|
|
22
22
|
batchUpdate(vehicles: Partial<VehicleDTO[]>): Promise<Vehicle[]>;
|
|
23
23
|
create(vehicleData: Partial<VehicleDTO>): Promise<Vehicle>;
|
|
24
24
|
updateStoreOnEvents(): void;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
private mapVehicle;
|
|
26
|
+
onUpdate(callback: (vehicle: Vehicle) => void): StorableEventUnsubscribe;
|
|
27
|
+
onDelete(callback: (vehicle: Vehicle) => void): StorableEventUnsubscribe;
|
|
28
|
+
onUnassigned(callback: (vehicle: Vehicle) => void): () => void;
|
|
28
29
|
get(id: number): Vehicle;
|
|
29
30
|
getAll(): Vehicle[];
|
|
30
31
|
getGroup(group: VehicleGroup, groupValue: GroupValue): Vehicle[];
|
|
@@ -52,22 +52,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
var types_1 = require("@bringg/types");
|
|
54
54
|
var lodash_1 = require("lodash");
|
|
55
|
-
var storable_realtime_subscriptions_1 = __importDefault(require("../../Data/storable-realtime-subscriptions"));
|
|
56
55
|
var data_entity_1 = require("../../data-entity");
|
|
57
56
|
var data_store_1 = __importDefault(require("../../data-store"));
|
|
58
57
|
var storable_data_service_1 = __importDefault(require("../../storable-data-service"));
|
|
59
58
|
var Vehicle_consts_1 = require("../Vehicle.consts");
|
|
59
|
+
var vehicle_realtime_subscriptions_1 = __importDefault(require("./vehicle-realtime-subscriptions"));
|
|
60
60
|
var vehicles_service_1 = __importDefault(require("./vehicles-service"));
|
|
61
61
|
var VehiclesApi = /** @class */ (function () {
|
|
62
62
|
function VehiclesApi(session) {
|
|
63
|
+
var _this = this;
|
|
63
64
|
var groupFilters = [
|
|
64
65
|
{ groupType: Vehicle_consts_1.VehicleGroup.Team, keyFunc: function (vehicle) { return vehicle.team_id; } },
|
|
65
66
|
{ groupType: Vehicle_consts_1.VehicleGroup.IsTrailer, keyFunc: function (vehicle) { return !!vehicle.is_trailer; } }
|
|
66
67
|
];
|
|
67
68
|
this.vehiclesStore = new data_store_1.default(groupFilters);
|
|
68
69
|
this.vehiclesService = new vehicles_service_1.default(session);
|
|
69
|
-
this.storableDataService = new storable_data_service_1.default(this.vehiclesStore);
|
|
70
|
-
this.
|
|
70
|
+
this.storableDataService = new storable_data_service_1.default(this.vehiclesStore, function (vehicle) { return _this.mapVehicle(vehicle); });
|
|
71
|
+
this.vehicleRealtimeSubscriptions = new vehicle_realtime_subscriptions_1.default(session, this.vehiclesStore, this.storableDataService);
|
|
71
72
|
}
|
|
72
73
|
VehiclesApi.prototype.load = function (id, options) {
|
|
73
74
|
var _this = this;
|
|
@@ -164,21 +165,26 @@ var VehiclesApi = /** @class */ (function () {
|
|
|
164
165
|
return this.storableDataService.modify('create', function () { return _this.vehiclesService.create(vehicleData); });
|
|
165
166
|
};
|
|
166
167
|
VehiclesApi.prototype.updateStoreOnEvents = function () {
|
|
167
|
-
this.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
168
|
+
this.vehicleRealtimeSubscriptions.updateStoreOnEvents();
|
|
169
|
+
};
|
|
170
|
+
// `trailer` is a derived field the reconciler maintains on trucks. Realtime vehicle payloads don't
|
|
171
|
+
// carry it, so a plain truck update would otherwise REPLACE the cached truck and wipe its trailer.
|
|
172
|
+
// Preserve the cached `trailer` whenever the incoming payload omits the key; take it from the payload
|
|
173
|
+
// only when explicitly present (HTTP loads, PUT responses, reconciler writes).
|
|
174
|
+
VehiclesApi.prototype.mapVehicle = function (vehicle) {
|
|
175
|
+
var existing = this.vehiclesStore.get(vehicle.id);
|
|
176
|
+
var current = existing && 'trailer' in existing && !('trailer' in vehicle)
|
|
177
|
+
? __assign(__assign({}, vehicle), { trailer: existing.trailer }) : vehicle;
|
|
178
|
+
return { current: current, diff: existing };
|
|
171
179
|
};
|
|
172
180
|
VehiclesApi.prototype.onUpdate = function (callback) {
|
|
173
|
-
return this.
|
|
181
|
+
return this.vehicleRealtimeSubscriptions.onUpdate(callback);
|
|
174
182
|
};
|
|
175
183
|
VehiclesApi.prototype.onDelete = function (callback) {
|
|
176
|
-
return this.
|
|
184
|
+
return this.vehicleRealtimeSubscriptions.onDelete(callback);
|
|
177
185
|
};
|
|
178
186
|
VehiclesApi.prototype.onUnassigned = function (callback) {
|
|
179
|
-
return this.
|
|
180
|
-
return callback(vehicle);
|
|
181
|
-
});
|
|
187
|
+
return this.vehicleRealtimeSubscriptions.onUnassigned(callback);
|
|
182
188
|
};
|
|
183
189
|
VehiclesApi.prototype.get = function (id) {
|
|
184
190
|
return this.vehiclesStore.get(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vehicles-api.js","sourceRoot":"","sources":["../../../src/Vehicle/v2/vehicles-api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAMuB;AACvB,iCAAyC;
|
|
1
|
+
{"version":3,"file":"vehicles-api.js","sourceRoot":"","sources":["../../../src/Vehicle/v2/vehicles-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -8299,6 +8299,7 @@ var StorableRealtimeSubscriptions = /** @class */ (function () {
|
|
|
8299
8299
|
if (subEntityEvents === void 0) { subEntityEvents = []; }
|
|
8300
8300
|
var _loop_1 = function (event_1) {
|
|
8301
8301
|
this_1.realtimeSubscriptions.subscribe(event_1.name, function (item) {
|
|
8302
|
+
var _a, _b;
|
|
8302
8303
|
item = event_1.itemExtractor ? event_1.itemExtractor(item) : item;
|
|
8303
8304
|
var data = event_1.extraDataFunc && event_1.extraDataFunc(item);
|
|
8304
8305
|
if (data === null || data === void 0 ? void 0 : data.ignore) {
|
|
@@ -8315,10 +8316,16 @@ var StorableRealtimeSubscriptions = /** @class */ (function () {
|
|
|
8315
8316
|
var skipStoreUpdate = !!(data === null || data === void 0 ? void 0 : data.skipStoreUpdate);
|
|
8316
8317
|
if (skipStoreUpdate) {
|
|
8317
8318
|
var mappedStorableItem = _this.storableDataService.mapItem(item, data === null || data === void 0 ? void 0 : data.params);
|
|
8319
|
+
// Cache layer: reconcile dependent cached entities even when this entity itself is
|
|
8320
|
+
// not stored (e.g. a not-yet-cached trailer moving between cached trucks).
|
|
8321
|
+
(_a = event_1.onAfterStoreSync) === null || _a === void 0 ? void 0 : _a.call(event_1, mappedStorableItem);
|
|
8318
8322
|
_this.runEventCallbacks(event_1.name, mappedStorableItem, { skipStoreUpdate: skipStoreUpdate });
|
|
8319
8323
|
}
|
|
8320
8324
|
else {
|
|
8321
8325
|
var mappedStorableItem = _this.storableDataService.updateInStores(item, undefined, undefined, data === null || data === void 0 ? void 0 : data.params);
|
|
8326
|
+
// Cache layer: let the entity reconcile dependent cached entities before any consumer
|
|
8327
|
+
// is notified, so the whole store is consistent when store events fire.
|
|
8328
|
+
(_b = event_1.onAfterStoreSync) === null || _b === void 0 ? void 0 : _b.call(event_1, mappedStorableItem);
|
|
8322
8329
|
_this.runEventCallbacks(event_1.name, mappedStorableItem);
|
|
8323
8330
|
}
|
|
8324
8331
|
}
|
|
@@ -23748,7 +23755,7 @@ var lodash_1 = __webpack_require__(96486);
|
|
|
23748
23755
|
var BringgException_1 = __webpack_require__(43605);
|
|
23749
23756
|
var Logger_1 = __importDefault(__webpack_require__(55860));
|
|
23750
23757
|
var abort_1 = __webpack_require__(34179);
|
|
23751
|
-
var version = '9.76.
|
|
23758
|
+
var version = '9.76.5-pre';
|
|
23752
23759
|
function logErrorResponse(response) {
|
|
23753
23760
|
var data = response.data, status = response.status;
|
|
23754
23761
|
try {
|
|
@@ -33245,6 +33252,114 @@ exports["default"] = Vehicles;
|
|
|
33245
33252
|
|
|
33246
33253
|
/***/ }),
|
|
33247
33254
|
|
|
33255
|
+
/***/ 25240:
|
|
33256
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
33257
|
+
|
|
33258
|
+
"use strict";
|
|
33259
|
+
|
|
33260
|
+
var __assign = (this && this.__assign) || function () {
|
|
33261
|
+
__assign = Object.assign || function(t) {
|
|
33262
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
33263
|
+
s = arguments[i];
|
|
33264
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
33265
|
+
t[p] = s[p];
|
|
33266
|
+
}
|
|
33267
|
+
return t;
|
|
33268
|
+
};
|
|
33269
|
+
return __assign.apply(this, arguments);
|
|
33270
|
+
};
|
|
33271
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
33272
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
33273
|
+
};
|
|
33274
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
33275
|
+
var BringgDashboardSDK_1 = __webpack_require__(5655);
|
|
33276
|
+
var storable_realtime_subscriptions_1 = __importDefault(__webpack_require__(1227));
|
|
33277
|
+
var Vehicle_consts_1 = __webpack_require__(84010);
|
|
33278
|
+
var VehicleRealtimeSubscriptions = /** @class */ (function () {
|
|
33279
|
+
function VehicleRealtimeSubscriptions(session, vehiclesStore, storableDataService) {
|
|
33280
|
+
this.vehiclesStore = vehiclesStore;
|
|
33281
|
+
this.storableDataService = storableDataService;
|
|
33282
|
+
this.storableRealtimeSubscriptions = new storable_realtime_subscriptions_1.default(session, vehiclesStore, storableDataService);
|
|
33283
|
+
}
|
|
33284
|
+
VehicleRealtimeSubscriptions.prototype.updateStoreOnEvents = function () {
|
|
33285
|
+
var _this = this;
|
|
33286
|
+
this.storableRealtimeSubscriptions.updateStoreOnEvents([
|
|
33287
|
+
{
|
|
33288
|
+
name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE,
|
|
33289
|
+
isDelete: false,
|
|
33290
|
+
extraDataFunc: function (vehicle) { return ({ skipStoreUpdate: !_this.vehiclesStore.get(vehicle.id) }); },
|
|
33291
|
+
// Reconcile Trailer and affected Trucks after Truck-Trailer link is changed
|
|
33292
|
+
// Remove if / when Trailer-Truck link changes trigger Truck/-s real-time updated events
|
|
33293
|
+
onAfterStoreSync: function (mapped) { return _this.reconcileTrucksOnTrailerChange(mapped); }
|
|
33294
|
+
},
|
|
33295
|
+
{ name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, isDelete: true }
|
|
33296
|
+
]);
|
|
33297
|
+
};
|
|
33298
|
+
VehicleRealtimeSubscriptions.prototype.onUpdate = function (callback) {
|
|
33299
|
+
return this.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, function (item) { return callback(item.current); });
|
|
33300
|
+
};
|
|
33301
|
+
VehicleRealtimeSubscriptions.prototype.onDelete = function (callback) {
|
|
33302
|
+
return this.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, function (item) { return callback(item.current); });
|
|
33303
|
+
};
|
|
33304
|
+
VehicleRealtimeSubscriptions.prototype.onUnassigned = function (callback) {
|
|
33305
|
+
return this.storableRealtimeSubscriptions.onAnyEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UNASSIGNED, function (vehicle) {
|
|
33306
|
+
return callback(vehicle);
|
|
33307
|
+
});
|
|
33308
|
+
};
|
|
33309
|
+
// This should work as expected until Vehicle Update event sends full Vehicle structure
|
|
33310
|
+
// and StorableDataService.mapper maps real-time payload to MappedStorableItem.current
|
|
33311
|
+
VehicleRealtimeSubscriptions.prototype.reconcileTrucksOnTrailerChange = function (_a) {
|
|
33312
|
+
var _this = this;
|
|
33313
|
+
var _b, _c;
|
|
33314
|
+
var trailer = _a.current;
|
|
33315
|
+
// Only a trailer update can change a truck's derived `trailer` field.
|
|
33316
|
+
if (!(trailer === null || trailer === void 0 ? void 0 : trailer.is_trailer)) {
|
|
33317
|
+
return;
|
|
33318
|
+
}
|
|
33319
|
+
var newTruckId = (_b = trailer.truck_id) !== null && _b !== void 0 ? _b : null;
|
|
33320
|
+
var oldTruck = this.findTruckHoldingTrailer(trailer.id);
|
|
33321
|
+
// No connection change relative to the cache - nothing to reconcile.
|
|
33322
|
+
if (((_c = oldTruck === null || oldTruck === void 0 ? void 0 : oldTruck.id) !== null && _c !== void 0 ? _c : null) === newTruckId) {
|
|
33323
|
+
return;
|
|
33324
|
+
}
|
|
33325
|
+
(0, BringgDashboardSDK_1.getGlobals)().mobx.runInAction(function () {
|
|
33326
|
+
if (oldTruck) {
|
|
33327
|
+
_this.applyTrailerToTruck(oldTruck.id, null);
|
|
33328
|
+
}
|
|
33329
|
+
_this.applyTrailerToTruck(newTruckId, trailer);
|
|
33330
|
+
});
|
|
33331
|
+
};
|
|
33332
|
+
VehicleRealtimeSubscriptions.prototype.findTruckHoldingTrailer = function (trailerId) {
|
|
33333
|
+
return this.vehiclesStore
|
|
33334
|
+
.getGroup(Vehicle_consts_1.VehicleGroup.IsTrailer, false)
|
|
33335
|
+
.find(function (vehicle) { return vehicle.trailer && vehicle.trailer.id === trailerId; });
|
|
33336
|
+
};
|
|
33337
|
+
VehicleRealtimeSubscriptions.prototype.applyTrailerToTruck = function (truckId, trailerEntity) {
|
|
33338
|
+
if (!truckId) {
|
|
33339
|
+
return;
|
|
33340
|
+
}
|
|
33341
|
+
var truck = this.vehiclesStore.get(truckId);
|
|
33342
|
+
// Only reconcile trucks that are actually cached; missing trucks get the correct trailer on load.
|
|
33343
|
+
if (!truck) {
|
|
33344
|
+
return;
|
|
33345
|
+
}
|
|
33346
|
+
var mobx = (0, BringgDashboardSDK_1.getGlobals)().mobx;
|
|
33347
|
+
// Deep, plain, non-observable COPY so the truck's `trailer`.
|
|
33348
|
+
// Drop the nested trailer's own `trailer` to avoid recursive nesting.
|
|
33349
|
+
var trailerSnapshot = trailerEntity ? __assign(__assign({}, mobx.toJS(trailerEntity)), { trailer: null }) : null;
|
|
33350
|
+
// toJS the truck too so we replace it with a fresh plain object instead of mutating the live
|
|
33351
|
+
// observable in place; updateInStores re-observes it as the truck's own subtree.
|
|
33352
|
+
var updatedTruck = __assign(__assign({}, mobx.toJS(truck)), { trailer: trailerSnapshot });
|
|
33353
|
+
var mapped = this.storableDataService.updateInStores(updatedTruck);
|
|
33354
|
+
this.storableRealtimeSubscriptions.runEventCallbacks(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, mapped);
|
|
33355
|
+
};
|
|
33356
|
+
return VehicleRealtimeSubscriptions;
|
|
33357
|
+
}());
|
|
33358
|
+
exports["default"] = VehicleRealtimeSubscriptions;
|
|
33359
|
+
//# sourceMappingURL=vehicle-realtime-subscriptions.js.map
|
|
33360
|
+
|
|
33361
|
+
/***/ }),
|
|
33362
|
+
|
|
33248
33363
|
/***/ 57020:
|
|
33249
33364
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
33250
33365
|
|
|
@@ -33303,22 +33418,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
33303
33418
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
33304
33419
|
var types_1 = __webpack_require__(63127);
|
|
33305
33420
|
var lodash_1 = __webpack_require__(96486);
|
|
33306
|
-
var storable_realtime_subscriptions_1 = __importDefault(__webpack_require__(1227));
|
|
33307
33421
|
var data_entity_1 = __webpack_require__(91083);
|
|
33308
33422
|
var data_store_1 = __importDefault(__webpack_require__(73135));
|
|
33309
33423
|
var storable_data_service_1 = __importDefault(__webpack_require__(45297));
|
|
33310
33424
|
var Vehicle_consts_1 = __webpack_require__(84010);
|
|
33425
|
+
var vehicle_realtime_subscriptions_1 = __importDefault(__webpack_require__(25240));
|
|
33311
33426
|
var vehicles_service_1 = __importDefault(__webpack_require__(87386));
|
|
33312
33427
|
var VehiclesApi = /** @class */ (function () {
|
|
33313
33428
|
function VehiclesApi(session) {
|
|
33429
|
+
var _this = this;
|
|
33314
33430
|
var groupFilters = [
|
|
33315
33431
|
{ groupType: Vehicle_consts_1.VehicleGroup.Team, keyFunc: function (vehicle) { return vehicle.team_id; } },
|
|
33316
33432
|
{ groupType: Vehicle_consts_1.VehicleGroup.IsTrailer, keyFunc: function (vehicle) { return !!vehicle.is_trailer; } }
|
|
33317
33433
|
];
|
|
33318
33434
|
this.vehiclesStore = new data_store_1.default(groupFilters);
|
|
33319
33435
|
this.vehiclesService = new vehicles_service_1.default(session);
|
|
33320
|
-
this.storableDataService = new storable_data_service_1.default(this.vehiclesStore);
|
|
33321
|
-
this.
|
|
33436
|
+
this.storableDataService = new storable_data_service_1.default(this.vehiclesStore, function (vehicle) { return _this.mapVehicle(vehicle); });
|
|
33437
|
+
this.vehicleRealtimeSubscriptions = new vehicle_realtime_subscriptions_1.default(session, this.vehiclesStore, this.storableDataService);
|
|
33322
33438
|
}
|
|
33323
33439
|
VehiclesApi.prototype.load = function (id, options) {
|
|
33324
33440
|
var _this = this;
|
|
@@ -33415,21 +33531,26 @@ var VehiclesApi = /** @class */ (function () {
|
|
|
33415
33531
|
return this.storableDataService.modify('create', function () { return _this.vehiclesService.create(vehicleData); });
|
|
33416
33532
|
};
|
|
33417
33533
|
VehiclesApi.prototype.updateStoreOnEvents = function () {
|
|
33418
|
-
this.
|
|
33419
|
-
|
|
33420
|
-
|
|
33421
|
-
|
|
33534
|
+
this.vehicleRealtimeSubscriptions.updateStoreOnEvents();
|
|
33535
|
+
};
|
|
33536
|
+
// `trailer` is a derived field the reconciler maintains on trucks. Realtime vehicle payloads don't
|
|
33537
|
+
// carry it, so a plain truck update would otherwise REPLACE the cached truck and wipe its trailer.
|
|
33538
|
+
// Preserve the cached `trailer` whenever the incoming payload omits the key; take it from the payload
|
|
33539
|
+
// only when explicitly present (HTTP loads, PUT responses, reconciler writes).
|
|
33540
|
+
VehiclesApi.prototype.mapVehicle = function (vehicle) {
|
|
33541
|
+
var existing = this.vehiclesStore.get(vehicle.id);
|
|
33542
|
+
var current = existing && 'trailer' in existing && !('trailer' in vehicle)
|
|
33543
|
+
? __assign(__assign({}, vehicle), { trailer: existing.trailer }) : vehicle;
|
|
33544
|
+
return { current: current, diff: existing };
|
|
33422
33545
|
};
|
|
33423
33546
|
VehiclesApi.prototype.onUpdate = function (callback) {
|
|
33424
|
-
return this.
|
|
33547
|
+
return this.vehicleRealtimeSubscriptions.onUpdate(callback);
|
|
33425
33548
|
};
|
|
33426
33549
|
VehiclesApi.prototype.onDelete = function (callback) {
|
|
33427
|
-
return this.
|
|
33550
|
+
return this.vehicleRealtimeSubscriptions.onDelete(callback);
|
|
33428
33551
|
};
|
|
33429
33552
|
VehiclesApi.prototype.onUnassigned = function (callback) {
|
|
33430
|
-
return this.
|
|
33431
|
-
return callback(vehicle);
|
|
33432
|
-
});
|
|
33553
|
+
return this.vehicleRealtimeSubscriptions.onUnassigned(callback);
|
|
33433
33554
|
};
|
|
33434
33555
|
VehiclesApi.prototype.get = function (id) {
|
|
33435
33556
|
return this.vehiclesStore.get(id);
|