@bringg/dashboard-sdk 9.77.2 → 9.77.3-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.
@@ -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<TClient>[]): void;
12
+ updateStoreOnEvents(events: StorableEvent<TServer, TClient>[], subEntityEvents?: StorableSubEntityEvent<TClient>[]): 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?: {
@@ -40,6 +40,7 @@ var StorableRealtimeSubscriptions = /** @class */ (function () {
40
40
  if (subEntityEvents === void 0) { subEntityEvents = []; }
41
41
  var _loop_1 = function (event_1) {
42
42
  this_1.realtimeSubscriptions.subscribe(event_1.name, function (item) {
43
+ var _a, _b;
43
44
  item = event_1.itemExtractor ? event_1.itemExtractor(item) : item;
44
45
  var data = event_1.extraDataFunc && event_1.extraDataFunc(item);
45
46
  if (data === null || data === void 0 ? void 0 : data.ignore) {
@@ -56,10 +57,16 @@ var StorableRealtimeSubscriptions = /** @class */ (function () {
56
57
  var skipStoreUpdate = !!(data === null || data === void 0 ? void 0 : data.skipStoreUpdate);
57
58
  if (skipStoreUpdate) {
58
59
  var mappedStorableItem = _this.storableDataService.mapItem(item, data === null || data === void 0 ? void 0 : data.params);
60
+ // Cache layer: reconcile dependent cached entities even when this entity itself is
61
+ // not stored (e.g. a not-yet-cached trailer moving between cached trucks).
62
+ (_a = event_1.onAfterStoreSync) === null || _a === void 0 ? void 0 : _a.call(event_1, mappedStorableItem);
59
63
  _this.runEventCallbacks(event_1.name, mappedStorableItem, { skipStoreUpdate: skipStoreUpdate });
60
64
  }
61
65
  else {
62
66
  var mappedStorableItem = _this.storableDataService.updateInStores(item, undefined, undefined, data === null || data === void 0 ? void 0 : data.params);
67
+ // Cache layer: let the entity reconcile dependent cached entities before any consumer
68
+ // is notified, so the whole store is consistent when store events fire.
69
+ (_b = event_1.onAfterStoreSync) === null || _b === void 0 ? void 0 : _b.call(event_1, mappedStorableItem);
63
70
  _this.runEventCallbacks(event_1.name, mappedStorableItem);
64
71
  }
65
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"storable-realtime-subscriptions.js","sourceRoot":"","sources":["../../src/Data/storable-realtime-subscriptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storable-realtime-subscriptions.js","sourceRoot":"","sources":["../../src/Data/storable-realtime-subscriptions.ts"],"names":[],"mappings":"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"}
@@ -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 Enricher<TParent = any, TPayload = any> = {
13
14
  shouldEnrich: (payload: TPayload, getParent: () => TParent | undefined) => boolean;
@@ -0,0 +1,17 @@
1
+ import { Vehicle } from '@bringg/types';
2
+ import type DataStore from '../../data-store';
3
+ import type Session from '../../Services/Identity/Session';
4
+ import type StorableDataService from '../../storable-data-service';
5
+ export default class VehicleRealtimeSubscriptions {
6
+ private vehiclesStore;
7
+ private storableDataService;
8
+ private readonly storableRealtimeSubscriptions;
9
+ constructor(session: Session, vehiclesStore: DataStore<Vehicle>, storableDataService: StorableDataService<Vehicle, Vehicle>);
10
+ updateStoreOnEvents(): void;
11
+ onUpdate(callback: (vehicle: Vehicle) => void): import("../../Data/storable-types").StorableEventUnsubscribe;
12
+ onDelete(callback: (vehicle: Vehicle) => void): import("../../Data/storable-types").StorableEventUnsubscribe;
13
+ onUnassigned(callback: (vehicle: Vehicle) => void): () => void;
14
+ private reconcileTrucksOnTrailerChange;
15
+ private findTruckHoldingTrailer;
16
+ private applyTrailerToTruck;
17
+ }
@@ -0,0 +1,107 @@
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.diff); });
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
+ // A partial trailer update may omit `truck_id`; only reconcile when the payload carries it
62
+ // (explicit null = detach, a value = attach). Absent = no connection info -> leave cache as-is,
63
+ // so a partial update can't be misread as detach and wrongly clear the truck's trailer.
64
+ if (!('truck_id' in trailer)) {
65
+ return;
66
+ }
67
+ var newTruckId = (_b = trailer.truck_id) !== null && _b !== void 0 ? _b : null;
68
+ var oldTruck = this.findTruckHoldingTrailer(trailer.id);
69
+ // No connection change relative to the cache - nothing to reconcile.
70
+ if (((_c = oldTruck === null || oldTruck === void 0 ? void 0 : oldTruck.id) !== null && _c !== void 0 ? _c : null) === newTruckId) {
71
+ return;
72
+ }
73
+ (0, BringgDashboardSDK_1.getGlobals)().mobx.runInAction(function () {
74
+ if (oldTruck) {
75
+ _this.applyTrailerToTruck(oldTruck.id, null);
76
+ }
77
+ _this.applyTrailerToTruck(newTruckId, trailer);
78
+ });
79
+ };
80
+ VehicleRealtimeSubscriptions.prototype.findTruckHoldingTrailer = function (trailerId) {
81
+ return this.vehiclesStore
82
+ .getGroup(Vehicle_consts_1.VehicleGroup.IsTrailer, false)
83
+ .find(function (vehicle) { return vehicle.trailer && vehicle.trailer.id === trailerId; });
84
+ };
85
+ VehicleRealtimeSubscriptions.prototype.applyTrailerToTruck = function (truckId, trailerEntity) {
86
+ if (!truckId) {
87
+ return;
88
+ }
89
+ var truck = this.vehiclesStore.get(truckId);
90
+ // Only reconcile trucks that are actually cached; missing trucks get the correct trailer on load.
91
+ if (!truck) {
92
+ return;
93
+ }
94
+ var mobx = (0, BringgDashboardSDK_1.getGlobals)().mobx;
95
+ // Deep, plain, non-observable COPY of the trailerEntity.
96
+ // Drop the nested trailer's own `trailer` to avoid recursive nesting.
97
+ var trailerSnapshot = trailerEntity ? __assign(__assign({}, mobx.toJS(trailerEntity)), { trailer: null }) : null;
98
+ // toJS the truck too so we replace it with a fresh plain object instead of mutating the live
99
+ // observable in place; updateInStores re-observes it as the truck's own subtree.
100
+ var updatedTruck = __assign(__assign({}, mobx.toJS(truck)), { trailer: trailerSnapshot });
101
+ var mapped = this.storableDataService.updateInStores(updatedTruck);
102
+ this.storableRealtimeSubscriptions.runEventCallbacks(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, mapped);
103
+ };
104
+ return VehicleRealtimeSubscriptions;
105
+ }());
106
+ exports.default = VehicleRealtimeSubscriptions;
107
+ //# 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 storableRealtimeSubscriptions;
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
- onUpdate(callback: (vehicle: Vehicle) => StorableEventUnsubscribe): StorableEventUnsubscribe;
26
- onDelete(callback: (vehicle: Vehicle) => StorableEventUnsubscribe): StorableEventUnsubscribe;
27
- onUnassigned(callback: (vehicle: Vehicle) => StorableEventUnsubscribe): () => void;
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.storableRealtimeSubscriptions = new storable_realtime_subscriptions_1.default(session, this.vehiclesStore, this.storableDataService);
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.storableRealtimeSubscriptions.updateStoreOnEvents([
168
- { name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, isDelete: false },
169
- { name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, isDelete: true }
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.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, function (item) { return callback(item.current); });
181
+ return this.vehicleRealtimeSubscriptions.onUpdate(callback);
174
182
  };
175
183
  VehiclesApi.prototype.onDelete = function (callback) {
176
- return this.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, function (item) { return callback(item.current); });
184
+ return this.vehicleRealtimeSubscriptions.onDelete(callback);
177
185
  };
178
186
  VehiclesApi.prototype.onUnassigned = function (callback) {
179
- return this.storableRealtimeSubscriptions.onAnyEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UNASSIGNED, function (vehicle) {
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":"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"}
1
+ {"version":3,"file":"vehicles-api.js","sourceRoot":"","sources":["../../../src/Vehicle/v2/vehicles-api.ts"],"names":[],"mappings":"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"}
@@ -8311,6 +8311,7 @@ var StorableRealtimeSubscriptions = /** @class */ (function () {
8311
8311
  if (subEntityEvents === void 0) { subEntityEvents = []; }
8312
8312
  var _loop_1 = function (event_1) {
8313
8313
  this_1.realtimeSubscriptions.subscribe(event_1.name, function (item) {
8314
+ var _a, _b;
8314
8315
  item = event_1.itemExtractor ? event_1.itemExtractor(item) : item;
8315
8316
  var data = event_1.extraDataFunc && event_1.extraDataFunc(item);
8316
8317
  if (data === null || data === void 0 ? void 0 : data.ignore) {
@@ -8327,10 +8328,16 @@ var StorableRealtimeSubscriptions = /** @class */ (function () {
8327
8328
  var skipStoreUpdate = !!(data === null || data === void 0 ? void 0 : data.skipStoreUpdate);
8328
8329
  if (skipStoreUpdate) {
8329
8330
  var mappedStorableItem = _this.storableDataService.mapItem(item, data === null || data === void 0 ? void 0 : data.params);
8331
+ // Cache layer: reconcile dependent cached entities even when this entity itself is
8332
+ // not stored (e.g. a not-yet-cached trailer moving between cached trucks).
8333
+ (_a = event_1.onAfterStoreSync) === null || _a === void 0 ? void 0 : _a.call(event_1, mappedStorableItem);
8330
8334
  _this.runEventCallbacks(event_1.name, mappedStorableItem, { skipStoreUpdate: skipStoreUpdate });
8331
8335
  }
8332
8336
  else {
8333
8337
  var mappedStorableItem = _this.storableDataService.updateInStores(item, undefined, undefined, data === null || data === void 0 ? void 0 : data.params);
8338
+ // Cache layer: let the entity reconcile dependent cached entities before any consumer
8339
+ // is notified, so the whole store is consistent when store events fire.
8340
+ (_b = event_1.onAfterStoreSync) === null || _b === void 0 ? void 0 : _b.call(event_1, mappedStorableItem);
8334
8341
  _this.runEventCallbacks(event_1.name, mappedStorableItem);
8335
8342
  }
8336
8343
  }
@@ -23841,7 +23848,7 @@ var lodash_1 = __webpack_require__(96486);
23841
23848
  var BringgException_1 = __webpack_require__(43605);
23842
23849
  var Logger_1 = __importDefault(__webpack_require__(55860));
23843
23850
  var abort_1 = __webpack_require__(34179);
23844
- var version = '9.77.2';
23851
+ var version = '9.77.3-pre';
23845
23852
  function logErrorResponse(response) {
23846
23853
  var data = response.data, status = response.status;
23847
23854
  try {
@@ -33430,6 +33437,120 @@ exports["default"] = Vehicles;
33430
33437
 
33431
33438
  /***/ }),
33432
33439
 
33440
+ /***/ 25240:
33441
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
33442
+
33443
+ "use strict";
33444
+
33445
+ var __assign = (this && this.__assign) || function () {
33446
+ __assign = Object.assign || function(t) {
33447
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
33448
+ s = arguments[i];
33449
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
33450
+ t[p] = s[p];
33451
+ }
33452
+ return t;
33453
+ };
33454
+ return __assign.apply(this, arguments);
33455
+ };
33456
+ var __importDefault = (this && this.__importDefault) || function (mod) {
33457
+ return (mod && mod.__esModule) ? mod : { "default": mod };
33458
+ };
33459
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
33460
+ var BringgDashboardSDK_1 = __webpack_require__(5655);
33461
+ var storable_realtime_subscriptions_1 = __importDefault(__webpack_require__(1227));
33462
+ var Vehicle_consts_1 = __webpack_require__(84010);
33463
+ var VehicleRealtimeSubscriptions = /** @class */ (function () {
33464
+ function VehicleRealtimeSubscriptions(session, vehiclesStore, storableDataService) {
33465
+ this.vehiclesStore = vehiclesStore;
33466
+ this.storableDataService = storableDataService;
33467
+ this.storableRealtimeSubscriptions = new storable_realtime_subscriptions_1.default(session, vehiclesStore, storableDataService);
33468
+ }
33469
+ VehicleRealtimeSubscriptions.prototype.updateStoreOnEvents = function () {
33470
+ var _this = this;
33471
+ this.storableRealtimeSubscriptions.updateStoreOnEvents([
33472
+ {
33473
+ name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE,
33474
+ isDelete: false,
33475
+ extraDataFunc: function (vehicle) { return ({ skipStoreUpdate: !_this.vehiclesStore.get(vehicle.id) }); },
33476
+ // Reconcile Trailer and affected Trucks after Truck-Trailer link is changed
33477
+ // Remove if / when Trailer-Truck link changes trigger Truck/-s real-time updated events
33478
+ onAfterStoreSync: function (mapped) { return _this.reconcileTrucksOnTrailerChange(mapped); }
33479
+ },
33480
+ { name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, isDelete: true }
33481
+ ]);
33482
+ };
33483
+ VehicleRealtimeSubscriptions.prototype.onUpdate = function (callback) {
33484
+ return this.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, function (item) { return callback(item.current); });
33485
+ };
33486
+ VehicleRealtimeSubscriptions.prototype.onDelete = function (callback) {
33487
+ return this.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, function (item) { return callback(item.diff); });
33488
+ };
33489
+ VehicleRealtimeSubscriptions.prototype.onUnassigned = function (callback) {
33490
+ return this.storableRealtimeSubscriptions.onAnyEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UNASSIGNED, function (vehicle) {
33491
+ return callback(vehicle);
33492
+ });
33493
+ };
33494
+ // This should work as expected until Vehicle Update event sends full Vehicle structure
33495
+ // and StorableDataService.mapper maps real-time payload to MappedStorableItem.current
33496
+ VehicleRealtimeSubscriptions.prototype.reconcileTrucksOnTrailerChange = function (_a) {
33497
+ var _this = this;
33498
+ var _b, _c;
33499
+ var trailer = _a.current;
33500
+ // Only a trailer update can change a truck's derived `trailer` field.
33501
+ if (!(trailer === null || trailer === void 0 ? void 0 : trailer.is_trailer)) {
33502
+ return;
33503
+ }
33504
+ // A partial trailer update may omit `truck_id`; only reconcile when the payload carries it
33505
+ // (explicit null = detach, a value = attach). Absent = no connection info -> leave cache as-is,
33506
+ // so a partial update can't be misread as detach and wrongly clear the truck's trailer.
33507
+ if (!('truck_id' in trailer)) {
33508
+ return;
33509
+ }
33510
+ var newTruckId = (_b = trailer.truck_id) !== null && _b !== void 0 ? _b : null;
33511
+ var oldTruck = this.findTruckHoldingTrailer(trailer.id);
33512
+ // No connection change relative to the cache - nothing to reconcile.
33513
+ if (((_c = oldTruck === null || oldTruck === void 0 ? void 0 : oldTruck.id) !== null && _c !== void 0 ? _c : null) === newTruckId) {
33514
+ return;
33515
+ }
33516
+ (0, BringgDashboardSDK_1.getGlobals)().mobx.runInAction(function () {
33517
+ if (oldTruck) {
33518
+ _this.applyTrailerToTruck(oldTruck.id, null);
33519
+ }
33520
+ _this.applyTrailerToTruck(newTruckId, trailer);
33521
+ });
33522
+ };
33523
+ VehicleRealtimeSubscriptions.prototype.findTruckHoldingTrailer = function (trailerId) {
33524
+ return this.vehiclesStore
33525
+ .getGroup(Vehicle_consts_1.VehicleGroup.IsTrailer, false)
33526
+ .find(function (vehicle) { return vehicle.trailer && vehicle.trailer.id === trailerId; });
33527
+ };
33528
+ VehicleRealtimeSubscriptions.prototype.applyTrailerToTruck = function (truckId, trailerEntity) {
33529
+ if (!truckId) {
33530
+ return;
33531
+ }
33532
+ var truck = this.vehiclesStore.get(truckId);
33533
+ // Only reconcile trucks that are actually cached; missing trucks get the correct trailer on load.
33534
+ if (!truck) {
33535
+ return;
33536
+ }
33537
+ var mobx = (0, BringgDashboardSDK_1.getGlobals)().mobx;
33538
+ // Deep, plain, non-observable COPY of the trailerEntity.
33539
+ // Drop the nested trailer's own `trailer` to avoid recursive nesting.
33540
+ var trailerSnapshot = trailerEntity ? __assign(__assign({}, mobx.toJS(trailerEntity)), { trailer: null }) : null;
33541
+ // toJS the truck too so we replace it with a fresh plain object instead of mutating the live
33542
+ // observable in place; updateInStores re-observes it as the truck's own subtree.
33543
+ var updatedTruck = __assign(__assign({}, mobx.toJS(truck)), { trailer: trailerSnapshot });
33544
+ var mapped = this.storableDataService.updateInStores(updatedTruck);
33545
+ this.storableRealtimeSubscriptions.runEventCallbacks(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, mapped);
33546
+ };
33547
+ return VehicleRealtimeSubscriptions;
33548
+ }());
33549
+ exports["default"] = VehicleRealtimeSubscriptions;
33550
+ //# sourceMappingURL=vehicle-realtime-subscriptions.js.map
33551
+
33552
+ /***/ }),
33553
+
33433
33554
  /***/ 57020:
33434
33555
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
33435
33556
 
@@ -33488,22 +33609,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33488
33609
  Object.defineProperty(exports, "__esModule", ({ value: true }));
33489
33610
  var types_1 = __webpack_require__(63127);
33490
33611
  var lodash_1 = __webpack_require__(96486);
33491
- var storable_realtime_subscriptions_1 = __importDefault(__webpack_require__(1227));
33492
33612
  var data_entity_1 = __webpack_require__(91083);
33493
33613
  var data_store_1 = __importDefault(__webpack_require__(73135));
33494
33614
  var storable_data_service_1 = __importDefault(__webpack_require__(45297));
33495
33615
  var Vehicle_consts_1 = __webpack_require__(84010);
33616
+ var vehicle_realtime_subscriptions_1 = __importDefault(__webpack_require__(25240));
33496
33617
  var vehicles_service_1 = __importDefault(__webpack_require__(87386));
33497
33618
  var VehiclesApi = /** @class */ (function () {
33498
33619
  function VehiclesApi(session) {
33620
+ var _this = this;
33499
33621
  var groupFilters = [
33500
33622
  { groupType: Vehicle_consts_1.VehicleGroup.Team, keyFunc: function (vehicle) { return vehicle.team_id; } },
33501
33623
  { groupType: Vehicle_consts_1.VehicleGroup.IsTrailer, keyFunc: function (vehicle) { return !!vehicle.is_trailer; } }
33502
33624
  ];
33503
33625
  this.vehiclesStore = new data_store_1.default(groupFilters);
33504
33626
  this.vehiclesService = new vehicles_service_1.default(session);
33505
- this.storableDataService = new storable_data_service_1.default(this.vehiclesStore);
33506
- this.storableRealtimeSubscriptions = new storable_realtime_subscriptions_1.default(session, this.vehiclesStore, this.storableDataService);
33627
+ this.storableDataService = new storable_data_service_1.default(this.vehiclesStore, function (vehicle) { return _this.mapVehicle(vehicle); });
33628
+ this.vehicleRealtimeSubscriptions = new vehicle_realtime_subscriptions_1.default(session, this.vehiclesStore, this.storableDataService);
33507
33629
  }
33508
33630
  VehiclesApi.prototype.load = function (id, options) {
33509
33631
  var _this = this;
@@ -33600,21 +33722,26 @@ var VehiclesApi = /** @class */ (function () {
33600
33722
  return this.storableDataService.modify('create', function () { return _this.vehiclesService.create(vehicleData); });
33601
33723
  };
33602
33724
  VehiclesApi.prototype.updateStoreOnEvents = function () {
33603
- this.storableRealtimeSubscriptions.updateStoreOnEvents([
33604
- { name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, isDelete: false },
33605
- { name: Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, isDelete: true }
33606
- ]);
33725
+ this.vehicleRealtimeSubscriptions.updateStoreOnEvents();
33726
+ };
33727
+ // `trailer` is a derived field the reconciler maintains on trucks. Realtime vehicle payloads don't
33728
+ // carry it, so a plain truck update would otherwise REPLACE the cached truck and wipe its trailer.
33729
+ // Preserve the cached `trailer` whenever the incoming payload omits the key; take it from the payload
33730
+ // only when explicitly present (HTTP loads, PUT responses, reconciler writes).
33731
+ VehiclesApi.prototype.mapVehicle = function (vehicle) {
33732
+ var existing = this.vehiclesStore.get(vehicle.id);
33733
+ var current = existing && 'trailer' in existing && !('trailer' in vehicle)
33734
+ ? __assign(__assign({}, vehicle), { trailer: existing.trailer }) : vehicle;
33735
+ return { current: current, diff: existing };
33607
33736
  };
33608
33737
  VehiclesApi.prototype.onUpdate = function (callback) {
33609
- return this.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UPDATE, function (item) { return callback(item.current); });
33738
+ return this.vehicleRealtimeSubscriptions.onUpdate(callback);
33610
33739
  };
33611
33740
  VehiclesApi.prototype.onDelete = function (callback) {
33612
- return this.storableRealtimeSubscriptions.onEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_DELETE, function (item) { return callback(item.current); });
33741
+ return this.vehicleRealtimeSubscriptions.onDelete(callback);
33613
33742
  };
33614
33743
  VehiclesApi.prototype.onUnassigned = function (callback) {
33615
- return this.storableRealtimeSubscriptions.onAnyEvent(Vehicle_consts_1.REAL_TIME_EVENTS.VEHICLE_UNASSIGNED, function (vehicle) {
33616
- return callback(vehicle);
33617
- });
33744
+ return this.vehicleRealtimeSubscriptions.onUnassigned(callback);
33618
33745
  };
33619
33746
  VehiclesApi.prototype.get = function (id) {
33620
33747
  return this.vehiclesStore.get(id);