@sumaris-net/ngx-components 18.5.0-alpha1 → 18.5.0-alpha3
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/esm2022/src/app/core/graphql/graphql.service.mjs +10 -9
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +2 -2
- package/esm2022/src/app/core/services/network.service.mjs +8 -11
- package/esm2022/src/app/core/services/network.utils.mjs +8 -10
- package/fesm2022/sumaris-net.ngx-components.mjs +23 -28
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +20 -20
- package/src/app/core/graphql/graphql.service.d.ts +5 -5
- package/src/app/core/services/network.service.d.ts +0 -1
- package/src/app/core/services/network.utils.d.ts +1 -1
|
@@ -2,6 +2,7 @@ import { HttpUtils } from '../../shared/http/http.utils';
|
|
|
2
2
|
import { Peer } from './model/peer.model';
|
|
3
3
|
import { Network } from '@capacitor/network';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
|
+
import { Capacitor } from '@capacitor/core';
|
|
5
6
|
export class NetworkUtils {
|
|
6
7
|
static async getNodeInfo(http, peer, opts) {
|
|
7
8
|
if (!peer)
|
|
@@ -13,6 +14,9 @@ export class NetworkUtils {
|
|
|
13
14
|
}
|
|
14
15
|
return HttpUtils.getJson(http, peerUrl + '/api/node/info', opts);
|
|
15
16
|
}
|
|
17
|
+
static isPluginAvailable() {
|
|
18
|
+
return Capacitor.isPluginAvailable('Network');
|
|
19
|
+
}
|
|
16
20
|
static statusChanges() {
|
|
17
21
|
return new Observable((subscriber) => {
|
|
18
22
|
const handler = Network.addListener('networkStatusChange', (status) => subscriber.next(status));
|
|
@@ -21,17 +25,11 @@ export class NetworkUtils {
|
|
|
21
25
|
};
|
|
22
26
|
});
|
|
23
27
|
}
|
|
24
|
-
static getStatus() {
|
|
25
|
-
return Network.getStatus();
|
|
26
|
-
}
|
|
27
28
|
static async getConnectionType() {
|
|
28
|
-
|
|
29
|
-
return (await Network.getStatus())?.connectionType;
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
console.error('[network] Failed to get connection type: ' + (err.message || err), err);
|
|
33
|
-
return 'unknown';
|
|
29
|
+
if (NetworkUtils.isPluginAvailable()) {
|
|
30
|
+
return (await Network.getStatus())?.connectionType || 'unknown';
|
|
34
31
|
}
|
|
32
|
+
return 'unknown';
|
|
35
33
|
}
|
|
36
34
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxFQUFvQyxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWlDNUMsTUFBTSxPQUFPLFlBQVk7SUFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQ3RCLElBQWdCLEVBQ2hCLElBQW1CLEVBQ25CLElBT0M7UUFFRCxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFbkQsSUFBSSxPQUFPLEdBQUcsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsSUFBZSxDQUFDO1FBQ2pFLHdCQUF3QjtRQUN4QixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUI7UUFDdEIsT0FBTyxTQUFTLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxVQUFVLENBQW1CLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDckQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQXdCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNsSCxPQUFPLEdBQUcsRUFBRTtnQkFDVixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixJQUFJLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDckMsT0FBTyxDQUFDLE1BQU0sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsY0FBYyxJQUFJLFNBQVMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBIdHRwVXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvaHR0cC9odHRwLnV0aWxzJztcbmltcG9ydCB7IFBlZXIgfSBmcm9tICcuL21vZGVsL3BlZXIubW9kZWwnO1xuaW1wb3J0IHsgTm9kZUZlYXR1cmUgfSBmcm9tICcuL21vZGVsL25vZGUtZmVhdHVyZS5tb2RlbCc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdHVzLCBDb25uZWN0aW9uVHlwZSwgTmV0d29yayB9IGZyb20gJ0BjYXBhY2l0b3IvbmV0d29yayc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXBhY2l0b3IgfSBmcm9tICdAY2FwYWNpdG9yL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVJbmZvIHtcbiAgc29mdHdhcmVOYW1lOiBzdHJpbmc7XG4gIHNvZnR3YXJlVmVyc2lvbjogc3RyaW5nO1xuICBub2RlTGFiZWw/OiBzdHJpbmc7XG4gIG5vZGVOYW1lPzogc3RyaW5nO1xuICBmZWF0dXJlcz86IE5vZGVGZWF0dXJlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwTWFuaWZlc3Qge1xuICAvLyBtYW5kYXRvcnlcbiAgbWFuaWZlc3RfdmVyc2lvbjogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcblxuICAvLyBBcHAgc3RhcnQgKHJlcXVpcmVkIGJ5IHBsYXRmb3JtIHNlcnZpY2UpXG4gIHN0YXJ0X3VybDogc3RyaW5nO1xuXG4gIC8vIG9wdGlvbmFsXG4gIHNob3J0X25hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB2ZXJzaW9uX25hbWU/OiBzdHJpbmc7XG4gIGF1dGhvcj86IHN0cmluZztcbiAgZGVmYXVsdF9sb2NhbGU/OiBzdHJpbmc7XG5cbiAgLy8gb3B0aW9uYWwgVUlcbiAgaWNvbnM/OiBhbnkgfCBhbnlbXTtcbiAgYmFja2dyb3VuZF9jb2xvcj86IHN0cmluZztcbiAgdGhlbWVfY29sb3I/OiBzdHJpbmc7XG4gIGRpc3BsYXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBOZXR3b3JrVXRpbHMge1xuICBzdGF0aWMgYXN5bmMgZ2V0Tm9kZUluZm8oXG4gICAgaHR0cDogSHR0cENsaWVudCxcbiAgICBwZWVyOiBzdHJpbmcgfCBQZWVyLFxuICAgIG9wdHM/OiB7XG4gICAgICBoZWFkZXJzPzpcbiAgICAgICAgfCBIdHRwSGVhZGVyc1xuICAgICAgICB8IHtcbiAgICAgICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICAgIH07XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgfVxuICApOiBQcm9taXNlPE5vZGVJbmZvPiB7XG4gICAgaWYgKCFwZWVyKSB0aHJvdyBFcnJvcihcIk1pc3NpbmcgYXJndW1lbnQgJ3BlZXInLlwiKTtcblxuICAgIGxldCBwZWVyVXJsID0gcGVlciBpbnN0YW5jZW9mIFBlZXIgPyBwZWVyLnVybCA6IChwZWVyIGFzIHN0cmluZyk7XG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoXG4gICAgaWYgKHBlZXJVcmwuZW5kc1dpdGgoJy8nKSkge1xuICAgICAgcGVlclVybCA9IHBlZXJVcmwuc3Vic3RyKDAsIHBlZXJVcmwubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEh0dHBVdGlscy5nZXRKc29uKGh0dHAsIHBlZXJVcmwgKyAnL2FwaS9ub2RlL2luZm8nLCBvcHRzKTtcbiAgfVxuXG4gIHN0YXRpYyBpc1BsdWdpbkF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQ2FwYWNpdG9yLmlzUGx1Z2luQXZhaWxhYmxlKCdOZXR3b3JrJyk7XG4gIH1cblxuICBzdGF0aWMgc3RhdHVzQ2hhbmdlcygpOiBPYnNlcnZhYmxlPENvbm5lY3Rpb25TdGF0dXM+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Q29ubmVjdGlvblN0YXR1cz4oKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSBOZXR3b3JrLmFkZExpc3RlbmVyKCduZXR3b3JrU3RhdHVzQ2hhbmdlJywgKHN0YXR1czogQ29ubmVjdGlvblN0YXR1cykgPT4gc3Vic2NyaWJlci5uZXh0KHN0YXR1cykpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaGFuZGxlci50aGVuKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIucmVtb3ZlKCkpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRDb25uZWN0aW9uVHlwZSgpOiBQcm9taXNlPENvbm5lY3Rpb25UeXBlPiB7XG4gICAgaWYgKE5ldHdvcmtVdGlscy5pc1BsdWdpbkF2YWlsYWJsZSgpKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IE5ldHdvcmsuZ2V0U3RhdHVzKCkpPy5jb25uZWN0aW9uVHlwZSB8fCAndW5rbm93bic7XG4gICAgfVxuICAgIHJldHVybiAndW5rbm93bic7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -17669,6 +17669,9 @@ class NetworkUtils {
|
|
|
17669
17669
|
}
|
|
17670
17670
|
return HttpUtils.getJson(http, peerUrl + '/api/node/info', opts);
|
|
17671
17671
|
}
|
|
17672
|
+
static isPluginAvailable() {
|
|
17673
|
+
return Capacitor.isPluginAvailable('Network');
|
|
17674
|
+
}
|
|
17672
17675
|
static statusChanges() {
|
|
17673
17676
|
return new Observable((subscriber) => {
|
|
17674
17677
|
const handler = Network.addListener('networkStatusChange', (status) => subscriber.next(status));
|
|
@@ -17677,17 +17680,11 @@ class NetworkUtils {
|
|
|
17677
17680
|
};
|
|
17678
17681
|
});
|
|
17679
17682
|
}
|
|
17680
|
-
static getStatus() {
|
|
17681
|
-
return Network.getStatus();
|
|
17682
|
-
}
|
|
17683
17683
|
static async getConnectionType() {
|
|
17684
|
-
|
|
17685
|
-
return (await Network.getStatus())?.connectionType;
|
|
17686
|
-
}
|
|
17687
|
-
catch (err) {
|
|
17688
|
-
console.error('[network] Failed to get connection type: ' + (err.message || err), err);
|
|
17689
|
-
return 'unknown';
|
|
17684
|
+
if (NetworkUtils.isPluginAvailable()) {
|
|
17685
|
+
return (await Network.getStatus())?.connectionType || 'unknown';
|
|
17690
17686
|
}
|
|
17687
|
+
return 'unknown';
|
|
17691
17688
|
}
|
|
17692
17689
|
}
|
|
17693
17690
|
|
|
@@ -18505,7 +18502,6 @@ class NetworkService extends StartableObservableService {
|
|
|
18505
18502
|
onResetNetworkCache = new EventEmitter(true);
|
|
18506
18503
|
_mobile;
|
|
18507
18504
|
_logger;
|
|
18508
|
-
_isNetworkPluginAvailable = false;
|
|
18509
18505
|
_timerSubscription;
|
|
18510
18506
|
_timerRefreshPeriod;
|
|
18511
18507
|
_timerRefreshCondition;
|
|
@@ -18585,8 +18581,8 @@ class NetworkService extends StartableObservableService {
|
|
|
18585
18581
|
}
|
|
18586
18582
|
}
|
|
18587
18583
|
async tryOnline(opts) {
|
|
18588
|
-
// If offline mode not forced,
|
|
18589
|
-
if (!this._forceOffline ||
|
|
18584
|
+
// If offline mode not forced, or if device says there is no connection: skip
|
|
18585
|
+
if (!this._forceOffline || (await NetworkUtils.getConnectionType()) === 'none')
|
|
18590
18586
|
return false;
|
|
18591
18587
|
// SHow loading toast
|
|
18592
18588
|
const now = Date.now();
|
|
@@ -18847,8 +18843,8 @@ class NetworkService extends StartableObservableService {
|
|
|
18847
18843
|
/* -- protected functions -- */
|
|
18848
18844
|
async ngOnStart(peer) {
|
|
18849
18845
|
console.info('[network] Starting network...');
|
|
18850
|
-
//
|
|
18851
|
-
|
|
18846
|
+
// Check if can use Network plugin
|
|
18847
|
+
console.debug(`[network] Capacitor Network plugin is ${Capacitor.isPluginAvailable('Network') ? 'available' : 'not available'}`);
|
|
18852
18848
|
// Restoring local settings
|
|
18853
18849
|
peer = peer || (await this.restoreLocally());
|
|
18854
18850
|
if (!peer) {
|
|
@@ -18881,19 +18877,17 @@ class NetworkService extends StartableObservableService {
|
|
|
18881
18877
|
async ngOnAfterStart(peer) {
|
|
18882
18878
|
// Wait settings starts, then save peer in settings
|
|
18883
18879
|
await this.settings.apply({ peerUrl: peer.url });
|
|
18884
|
-
|
|
18880
|
+
// Listen for device network changes
|
|
18881
|
+
if (NetworkUtils.isPluginAvailable()) {
|
|
18885
18882
|
const connectionType = await NetworkUtils.getConnectionType();
|
|
18886
18883
|
this.onDeviceConnectionChanged(connectionType);
|
|
18884
|
+
this.registerSubscription(NetworkUtils.statusChanges().subscribe((status) => this.onDeviceConnectionChanged(status?.connectionType || 'unknown')));
|
|
18887
18885
|
}
|
|
18888
18886
|
else {
|
|
18889
18887
|
this.onDeviceConnectionChanged('unknown');
|
|
18890
18888
|
}
|
|
18891
18889
|
// Start the refresh timer
|
|
18892
18890
|
this.startRefreshTimer();
|
|
18893
|
-
// Listen for device network changes
|
|
18894
|
-
if (this._isNetworkPluginAvailable) {
|
|
18895
|
-
this.registerSubscription(NetworkUtils.statusChanges().subscribe((status) => this.onDeviceConnectionChanged(status?.connectionType || 'unknown')));
|
|
18896
|
-
}
|
|
18897
18891
|
}
|
|
18898
18892
|
ngOnStop() {
|
|
18899
18893
|
// Stop timer, if cannot refresh anymore
|
|
@@ -19840,11 +19834,11 @@ class GraphqlService extends StartableService {
|
|
|
19840
19834
|
await this.ready();
|
|
19841
19835
|
let res;
|
|
19842
19836
|
try {
|
|
19843
|
-
res = await this.client.query({
|
|
19837
|
+
res = (await this.client.query({
|
|
19844
19838
|
query: opts.query,
|
|
19845
19839
|
variables: opts.variables,
|
|
19846
19840
|
fetchPolicy: opts.fetchPolicy || this._defaultFetchPolicy || undefined,
|
|
19847
|
-
});
|
|
19841
|
+
}));
|
|
19848
19842
|
}
|
|
19849
19843
|
catch (err) {
|
|
19850
19844
|
res = this.toApolloError(err, opts.error);
|
|
@@ -19863,7 +19857,7 @@ class GraphqlService extends StartableService {
|
|
|
19863
19857
|
});
|
|
19864
19858
|
}
|
|
19865
19859
|
queryRefValuesChanges(queryRef, opts) {
|
|
19866
|
-
return queryRef.valueChanges.pipe(catchError((error) => this.
|
|
19860
|
+
return queryRef.valueChanges.pipe(catchError(async (error) => this.toApolloError(error, opts.error)), filter((value) => value.networkStatus === NetworkStatus.ready || value.networkStatus === NetworkStatus.error), map(({ data, errors }) => {
|
|
19867
19861
|
if (errors) {
|
|
19868
19862
|
throw errors[0];
|
|
19869
19863
|
}
|
|
@@ -19880,7 +19874,7 @@ class GraphqlService extends StartableService {
|
|
|
19880
19874
|
if (typeof opts.offlineResponse === 'function') {
|
|
19881
19875
|
opts.context = opts.context || {};
|
|
19882
19876
|
const optimisticResponseFn = opts.offlineResponse;
|
|
19883
|
-
opts.optimisticResponse = await optimisticResponseFn(opts.context);
|
|
19877
|
+
opts.optimisticResponse = (await optimisticResponseFn(opts.context));
|
|
19884
19878
|
if (this._debug)
|
|
19885
19879
|
console.debug('[graphql] [offline] Using an optimistic response: ', opts.optimisticResponse);
|
|
19886
19880
|
}
|
|
@@ -19890,6 +19884,7 @@ class GraphqlService extends StartableService {
|
|
|
19890
19884
|
if (opts.forceOffline) {
|
|
19891
19885
|
const res = { data: opts.optimisticResponse };
|
|
19892
19886
|
if (opts.update) {
|
|
19887
|
+
// @ts-ignore
|
|
19893
19888
|
opts.update(this.apollo.client.cache, res, {});
|
|
19894
19889
|
}
|
|
19895
19890
|
return res.data;
|
|
@@ -19903,9 +19898,9 @@ class GraphqlService extends StartableService {
|
|
|
19903
19898
|
optimisticResponse: opts.optimisticResponse,
|
|
19904
19899
|
update: opts.update,
|
|
19905
19900
|
})
|
|
19906
|
-
.pipe(catchError((error) => this.
|
|
19901
|
+
.pipe(catchError(async (error) => this.toApolloError(error, opts.error)), first()
|
|
19907
19902
|
// To debug, if need:
|
|
19908
|
-
//tap((res) => (!res) && console.error('[graphql] Unknown error during mutation. Check errors in console (
|
|
19903
|
+
//tap((res) => (!res) && console.error('[graphql] Unknown error during mutation. Check errors in console (maybe an invalid generated cache id ?)'))
|
|
19909
19904
|
));
|
|
19910
19905
|
if (Array.isArray(res.errors)) {
|
|
19911
19906
|
throw res.errors[0];
|
|
@@ -19923,7 +19918,7 @@ class GraphqlService extends StartableService {
|
|
|
19923
19918
|
useZone: true,
|
|
19924
19919
|
...extra,
|
|
19925
19920
|
})
|
|
19926
|
-
.pipe(catchError((error) => this.
|
|
19921
|
+
.pipe(catchError(async (error) => this.toApolloError(error, opts.error)), map(({ data, errors }) => {
|
|
19927
19922
|
if (errors) {
|
|
19928
19923
|
throw errors[0];
|
|
19929
19924
|
}
|
|
@@ -19942,7 +19937,7 @@ class GraphqlService extends StartableService {
|
|
|
19942
19937
|
data = { ...data };
|
|
19943
19938
|
// Append to result array
|
|
19944
19939
|
data[opts.arrayFieldName] = [...data[opts.arrayFieldName], { ...opts.data }];
|
|
19945
|
-
// Resort
|
|
19940
|
+
// Resort if needed
|
|
19946
19941
|
if (opts.sortFn) {
|
|
19947
19942
|
data[opts.arrayFieldName].sort(opts.sortFn);
|
|
19948
19943
|
}
|
|
@@ -23936,7 +23931,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
23936
23931
|
},
|
|
23937
23932
|
error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
23938
23933
|
update: (cache, { data }, { context, variables }) => {
|
|
23939
|
-
const savedEntities = data
|
|
23934
|
+
const savedEntities = data?.data;
|
|
23940
23935
|
if (savedEntities) {
|
|
23941
23936
|
// Update entities (id and update date)
|
|
23942
23937
|
entities.forEach((entity) => {
|