@sumaris-net/ngx-components 1.9.4 → 1.9.5
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/bundles/sumaris-net.ngx-components.umd.js +107 -71
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +2 -1
- package/esm2015/src/app/core/account/account.js +2 -2
- package/esm2015/src/app/core/form/entity-editor.class.js +3 -2
- package/esm2015/src/app/core/graphql/graphql.service.js +2 -6
- package/esm2015/src/app/core/register/confirm/confirm.js +2 -2
- package/esm2015/src/app/core/services/account.service.js +92 -63
- package/esm2015/src/environments/environment.class.js +1 -1
- package/esm2015/src/environments/environment.js +8 -3
- package/fesm2015/sumaris-net.ngx-components.js +99 -68
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/core/services/account.service.d.ts +10 -4
- package/src/environments/environment.class.d.ts +7 -1
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -2,4 +2,4 @@ import { InjectionToken } from '@angular/core';
|
|
|
2
2
|
export const ENVIRONMENT = new InjectionToken('ENV');
|
|
3
3
|
export class Environment {
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFjLEtBQUssQ0FBQyxDQUFDO0FBRWxFLE1BQU0sT0FBTyxXQUFXO0NBNER2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmV0Y2hQb2xpY3l9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHtTdG9yYWdlQ29uZmlnfSBmcm9tICdAaW9uaWMvc3RvcmFnZSc7XG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEVOVklST05NRU5UID0gbmV3IEluamVjdGlvblRva2VuPEVudmlyb25tZW50PignRU5WJyk7XG5cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwcm9kdWN0aW9uOiBib29sZWFuO1xuICBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgLy8gQSBwZWVyIHRvIHVzZSBhdCBzdGFydHVwICh1c2VmdWwgb24gYSB3ZWIgc2l0ZSBkZXBsb3ltZW50KVxuICBkZWZhdWx0UGVlcj86IHsgaG9zdDogc3RyaW5nOyBwb3J0OiBudW1iZXI7IHVzZVNzbD86IGJvb2xlYW47IHBhdGg/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgLy8gQSBsaXN0IG9mIHBlZXJzLCB0byBzZWxlY3QgYXMgcGVlciwgaW4gc2V0dGluZ3NcbiAgZGVmYXVsdFBlZXJzPzogeyBob3N0OiBzdHJpbmc7IHBvcnQ6IG51bWJlcjsgdXNlU3NsPzogYm9vbGVhbjsgcGF0aD86IHN0cmluZyB9W107XG5cbiAgLy8gTWluIGNvbXBhdGlibGUgdmVyc2lvbiBmb3IgdGhlIHBlZXJcbiAgcGVlck1pblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLy8gRW5hYmxlIGNhY2hlIHBlcnNpc3RlbmNlID9cbiAgcGVyc2lzdENhY2hlPzogYm9vbGVhbjtcblxuICAvLyBGb3JjZSBvZmZsaW5lIG1vZGUgPyAvIVxcIEZvciBERVYgb25seVxuICBvZmZsaW5lPzogYm9vbGVhbjtcblxuICAvLyBBcG9sbG8gKGdyYXBoUUwpIGNvbmZpZ1xuICBhcG9sbG9GZXRjaFBvbGljeT86ICBGZXRjaFBvbGljeTtcblxuICAvLyBEZWZhdWx0IHZhbHVlc1xuICBkZWZhdWx0TG9jYWxlOiBzdHJpbmc7XG4gIGRlZmF1bHRMYXRMb25nRm9ybWF0PzogJ0REJyB8ICdERE1NJyB8ICdERE1NU1MnO1xuICBkZWZhdWx0RGVwYXJ0bWVudElkPzogbnVtYmVyO1xuICBkZWZhdWx0QXBwTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEFuZHJvaWRJbnN0YWxsVXJsPzogc3RyaW5nO1xuXG4gIC8vIFN0b3JhZ2VcbiAgc3RvcmFnZT86IFBhcnRpYWw8U3RvcmFnZUNvbmZpZz47XG4gIHN0b3JhZ2VTYXZlUGVyaW9kTXM/OiBudW1iZXI7XG5cbiAgLy8gQWJvdXRcbiAgc291cmNlVXJsPzogc3RyaW5nO1xuICByZXBvcnRJc3N1ZVVybD86IHN0cmluZztcbiAgZm9ydW1Vcmw/OiBzdHJpbmc7XG4gIGhlbHBVcmw/OiBzdHJpbmc7XG5cbiAgLy8gRGVmYXVsdCBhdXRoZW50aWNhdGlvbiAvIVxcIEZvciBERVYgb25seVxuICAvLyAoc2VlIHZhbHVlcyBpbiB0aGUgdGVzdCBkYXRhYmFzZSAtIFhNTCBmaWxlcyBpbiBQb2QncyBtb2R1bGUpXG4gIGRlZmF1bHRBdXRoVmFsdWVzPzoge1xuICAgIHVzZXJuYW1lPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICB9O1xuXG4gIC8vIEFjY291bnRcbiAgYWNjb3VudD86IHtcbiAgICBlbmFibGVMaXN0ZW5DaGFuZ2VzPzogYm9vbGVhbjtcbiAgICAvLyBJZiB1bmRlZmluZWQgb3IgMCwgdGhlbiBsaXN0ZW4gb25seSBjaGFuZ2VzIG1hZGUgYnkgdGhlIHBvZFxuICAgIC8vIElmIGdyZWF0ZXIgdGhhbiAwIDogd2lsbCBjaGVjayBjb25jdXJyZW50IGNoYW5nZXMgaW4gdGhlIERCIChlLmcuIGNoYW5nZXMgbWRlIGJ5IGFub3RoZXIgc29mdHdhcmUpIEFORCBjaGFuZ2VzIG1hZGUgdGhlIHBvZFxuICAgIGxpc3RlbkludGVydmFsSW5TZWNvbmQ/OiBudW1iZXI7XG4gIH07XG5cbiAgZW50aXR5RWRpdG9yPzoge1xuICAgIGVuYWJsZUxpc3RlbkNoYW5nZXM/OiBib29sZWFuO1xuICB9O1xuXG59XG4iXX0=
|
|
@@ -9,8 +9,6 @@ export const environment = Object.freeze({
|
|
|
9
9
|
defaultLocale: 'fr',
|
|
10
10
|
defaultLatLongFormat: 'DDMM',
|
|
11
11
|
apolloFetchPolicy: 'cache-first',
|
|
12
|
-
// FIXME: GraphQL subscription never unsubscribe...
|
|
13
|
-
listenRemoteChanges: false,
|
|
14
12
|
// FIXME: enable cache
|
|
15
13
|
persistCache: false,
|
|
16
14
|
// TODO: make this works
|
|
@@ -63,6 +61,13 @@ export const environment = Object.freeze({
|
|
|
63
61
|
// username: 'admq2', password: 'q22006'
|
|
64
62
|
// Token auth (using Person.pubkey)
|
|
65
63
|
username: 'admin@sumaris.net', password: 'admin',
|
|
64
|
+
},
|
|
65
|
+
account: {
|
|
66
|
+
enableListenChanges: true,
|
|
67
|
+
listenIntervalInSecond: 30
|
|
68
|
+
},
|
|
69
|
+
entityEditor: {
|
|
70
|
+
enableListenChanges: false
|
|
66
71
|
}
|
|
67
72
|
});
|
|
68
73
|
/*
|
|
@@ -72,4 +77,4 @@ export const environment = Object.freeze({
|
|
|
72
77
|
* because it will have performance impact when throw error
|
|
73
78
|
*/
|
|
74
79
|
import 'zone.js/dist/zone-error';
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBSWhFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBZ0IsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNwRCxJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE9BQU8sRUFBRSxHQUFHO0lBQ1osYUFBYSxFQUFFLElBQUk7SUFDbkIsb0JBQW9CLEVBQUUsTUFBTTtJQUM1QixpQkFBaUIsRUFBRSxhQUFhO0lBRWhDLHNCQUFzQjtJQUN0QixZQUFZLEVBQUUsS0FBSztJQUVuQix3QkFBd0I7SUFDeEIsZ0JBQWdCO0lBRWhCLGNBQWMsRUFBRSxPQUFPO0lBRXZCLFlBQVksRUFBRTtRQUNaO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLEVBQUU7U0FDVDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixJQUFJLEVBQUUsR0FBRztTQUNWO0tBQ0Y7SUFDRCxjQUFjLEVBQUUsU0FBUztJQUN6Qix3QkFBd0IsRUFBRSwrREFBK0Q7SUFFekYsVUFBVTtJQUNWLE9BQU8sRUFBRTtRQUNQLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQztLQUMvRDtJQUVELFFBQVE7SUFDUixTQUFTLEVBQUUscUVBQXFFO0lBQ2hGLGNBQWMsRUFBRSw4RUFBOEU7SUFDOUYsUUFBUSxFQUFFLDJCQUEyQjtJQUNyQyxPQUFPLEVBQUUsZ0dBQWdHO0lBRXpHLGNBQWM7SUFDZCxpQkFBaUIsRUFBRTtRQUVqQixxQ0FBcUM7UUFDckMsd0NBQXdDO1FBRXhDLG1DQUFtQztRQUNuQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLE9BQU87S0FDakQ7SUFFRCxPQUFPLEVBQUU7UUFDUCxtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHNCQUFzQixFQUFFLEVBQUU7S0FDM0I7SUFFRCxZQUFZLEVBQUU7UUFDWixtQkFBbUIsRUFBRSxLQUFLO0tBQzNCO0NBQ0YsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxPQUFPLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGNhbiBiZSByZXBsYWNlZCBkdXJpbmcgYnVpbGQgYnkgdXNpbmcgdGhlIGBmaWxlUmVwbGFjZW1lbnRzYCBhcnJheS5cbi8vIGBuZyBidWlsZCAtLS1wcm9kYCByZXBsYWNlcyBgZW52aXJvbm1lbnQudHNgIHdpdGggYGVudmlyb25tZW50LnByb2QudHNgLlxuLy8gVGhlIGxpc3Qgb2YgZmlsZSByZXBsYWNlbWVudHMgY2FuIGJlIGZvdW5kIGluIGBhbmd1bGFyLmpzb25gLlxuXG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tICcuL2Vudmlyb25tZW50LmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50OiBFbnZpcm9ubWVudCA9IE9iamVjdC5mcmVlemUoe1xuICBuYW1lOiAnQHN1bWFyaXMtbmV0L25neC1jb21wb25lbnRzJywgLy8gb3ZlcnJpZGRlbiBieSBFTlZJUk9OTUVOVCB0b2tlblxuICB2ZXJzaW9uOiB1bmRlZmluZWQsIC8vIG92ZXJyaWRkZW4gYnkgRU5WSVJPTk1FTlQgdG9rZW5cbiAgcHJvZHVjdGlvbjogdHJ1ZSwgLy8gbGV0IHRvIHRydWUgISBiZWNhdXNlIHVzZWQgYnkgcGFja2FnZXJcbiAgYmFzZVVybDogJy8nLFxuICBkZWZhdWx0TG9jYWxlOiAnZnInLFxuICBkZWZhdWx0TGF0TG9uZ0Zvcm1hdDogJ0RETU0nLFxuICBhcG9sbG9GZXRjaFBvbGljeTogJ2NhY2hlLWZpcnN0JyxcblxuICAvLyBGSVhNRTogZW5hYmxlIGNhY2hlXG4gIHBlcnNpc3RDYWNoZTogZmFsc2UsXG5cbiAgLy8gVE9ETzogbWFrZSB0aGlzIHdvcmtzXG4gIC8vb2ZmbGluZTogdHJ1ZSxcblxuICBwZWVyTWluVmVyc2lvbjogJzEuOC4wJyxcblxuICBkZWZhdWx0UGVlcnM6IFtcbiAgICB7XG4gICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDgwODBcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogODA4MVxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJzE5Mi4xNjguMC40NScsXG4gICAgICBwb3J0OiA4MDgwXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjI0JyxcbiAgICAgIHBvcnQ6IDgwODBcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICcxOTIuMTY4LjAuMjknLFxuICAgICAgcG9ydDogODA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3NpaC5zZmEuc2MnLFxuICAgICAgcG9ydDogODBcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICd0ZXN0LnN1bWFyaXMubmV0JyxcbiAgICAgIHBvcnQ6IDQ0M1xuICAgIH1cbiAgXSxcbiAgZGVmYXVsdEFwcE5hbWU6ICdTVU1BUmlTJyxcbiAgZGVmYXVsdEFuZHJvaWRJbnN0YWxsVXJsOiAnaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPW5ldC5zdW1hcmlzLmFwcCcsXG5cbiAgLy8gU3RvcmFnZVxuICBzdG9yYWdlOiB7XG4gICAgZHJpdmVyT3JkZXI6IFsnc3FsaXRlJywgJ2luZGV4ZWRkYicsICd3ZWJzcWwnLCAnbG9jYWxzdG9yYWdlJ11cbiAgfSxcblxuICAvLyBBYm91dFxuICBzb3VyY2VVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9uZ3gtc3VtYXJpcy1jb21wb25lbnRzJyxcbiAgcmVwb3J0SXNzdWVVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9uZ3gtc3VtYXJpcy1jb21wb25lbnRzLy0vaXNzdWVzJyxcbiAgZm9ydW1Vcmw6ICdodHRwczovL2ZvcnVtLnN1bWFyaXMubmV0JyxcbiAgaGVscFVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL3N1bWFyaXMtZG9jLy0vYmxvYi9tYXN0ZXIvdXNlci1tYW51YWwvaW5kZXhfZnIubWQnLFxuXG4gIC8vIERldmVsb3BtZW50XG4gIGRlZmF1bHRBdXRoVmFsdWVzOiB7XG5cbiAgICAvLyBCYXNpYyBhdXRoICh1c2luZyBQZXJzb24udXNlcm5hbWUpXG4gICAgLy8gdXNlcm5hbWU6ICdhZG1xMicsIHBhc3N3b3JkOiAncTIyMDA2J1xuXG4gICAgLy8gVG9rZW4gYXV0aCAodXNpbmcgUGVyc29uLnB1YmtleSlcbiAgICB1c2VybmFtZTogJ2FkbWluQHN1bWFyaXMubmV0JywgcGFzc3dvcmQ6ICdhZG1pbicsXG4gIH0sXG5cbiAgYWNjb3VudDoge1xuICAgIGVuYWJsZUxpc3RlbkNoYW5nZXM6IHRydWUsXG4gICAgbGlzdGVuSW50ZXJ2YWxJblNlY29uZDogMzBcbiAgfSxcblxuICBlbnRpdHlFZGl0b3I6IHtcbiAgICBlbmFibGVMaXN0ZW5DaGFuZ2VzOiBmYWxzZVxuICB9XG59KTtcblxuLypcbiAqIEluIGRldmVsb3BtZW50IG1vZGUsIHRvIGlnbm9yZSB6b25lIHJlbGF0ZWQgZXJyb3Igc3RhY2sgZnJhbWVzIHN1Y2ggYXNcbiAqIGB6b25lLnJ1bmAsIGB6b25lRGVsZWdhdGUuaW52b2tlVGFza2AgZm9yIGVhc2llciBkZWJ1Z2dpbmcsIHlvdSBjYW5cbiAqIGltcG9ydCB0aGUgZm9sbG93aW5nIGZpbGUsIGJ1dCBwbGVhc2UgY29tbWVudCBpdCBvdXQgaW4gcHJvZHVjdGlvbiBtb2RlXG4gKiBiZWNhdXNlIGl0IHdpbGwgaGF2ZSBwZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiB0aHJvdyBlcnJvclxuICovXG5pbXBvcnQgJ3pvbmUuanMvZGlzdC96b25lLWVycm9yJztcbiJdfQ==
|
|
@@ -9440,8 +9440,6 @@ const environment = Object.freeze({
|
|
|
9440
9440
|
defaultLocale: 'fr',
|
|
9441
9441
|
defaultLatLongFormat: 'DDMM',
|
|
9442
9442
|
apolloFetchPolicy: 'cache-first',
|
|
9443
|
-
// FIXME: GraphQL subscription never unsubscribe...
|
|
9444
|
-
listenRemoteChanges: false,
|
|
9445
9443
|
// FIXME: enable cache
|
|
9446
9444
|
persistCache: false,
|
|
9447
9445
|
// TODO: make this works
|
|
@@ -9494,6 +9492,13 @@ const environment = Object.freeze({
|
|
|
9494
9492
|
// username: 'admq2', password: 'q22006'
|
|
9495
9493
|
// Token auth (using Person.pubkey)
|
|
9496
9494
|
username: 'admin@sumaris.net', password: 'admin',
|
|
9495
|
+
},
|
|
9496
|
+
account: {
|
|
9497
|
+
enableListenChanges: true,
|
|
9498
|
+
listenIntervalInSecond: 30
|
|
9499
|
+
},
|
|
9500
|
+
entityEditor: {
|
|
9501
|
+
enableListenChanges: false
|
|
9497
9502
|
}
|
|
9498
9503
|
});
|
|
9499
9504
|
|
|
@@ -12559,9 +12564,7 @@ class GraphqlService extends StartableService {
|
|
|
12559
12564
|
this.cryptoService = cryptoService;
|
|
12560
12565
|
this.environment = environment;
|
|
12561
12566
|
this.typePolicies = typePolicies;
|
|
12562
|
-
this.connectionParams = {
|
|
12563
|
-
reconnect: true
|
|
12564
|
-
};
|
|
12567
|
+
this.connectionParams = {};
|
|
12565
12568
|
this.onNetworkError = new Subject();
|
|
12566
12569
|
this.customErrors = {};
|
|
12567
12570
|
this._debug = !environment.production;
|
|
@@ -13024,8 +13027,6 @@ class GraphqlService extends StartableService {
|
|
|
13024
13027
|
}
|
|
13025
13028
|
const headers = new HttpHeaders()
|
|
13026
13029
|
.append('Authorization', authorization);
|
|
13027
|
-
//.append('X-App-Name', environment.name)
|
|
13028
|
-
//.append('X-App-Version', environment.version)
|
|
13029
13030
|
// Use the setContext method to set the HTTP headers.
|
|
13030
13031
|
operation.setContext(Object.assign(Object.assign({}, operation.getContext()), { headers }));
|
|
13031
13032
|
// Call the next link in the middleware chain.
|
|
@@ -13592,7 +13593,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13592
13593
|
this.onChange = new Subject();
|
|
13593
13594
|
this.onAuthTokenChange = new Subject();
|
|
13594
13595
|
this.onAuthBasicChange = new Subject();
|
|
13595
|
-
this.
|
|
13596
|
+
this._listenChangesSubscription = null;
|
|
13596
13597
|
this._cache = {
|
|
13597
13598
|
loaded: false,
|
|
13598
13599
|
keypair: null,
|
|
@@ -13605,6 +13606,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13605
13606
|
};
|
|
13606
13607
|
this._$additionalFields = new BehaviorSubject([]);
|
|
13607
13608
|
this._tokenType$ = new BehaviorSubject(undefined);
|
|
13609
|
+
this._enableListenChanges = (!environment.account || environment.account.enableListenChanges !== false);
|
|
13608
13610
|
this._debug = !environment.production;
|
|
13609
13611
|
if (this._debug)
|
|
13610
13612
|
console.debug('[account-service] Creating service');
|
|
@@ -13792,6 +13794,9 @@ class AccountService extends BaseGraphqlService {
|
|
|
13792
13794
|
// Emit events
|
|
13793
13795
|
this.onLogin.next(this._data);
|
|
13794
13796
|
this.onChange.next(this._data);
|
|
13797
|
+
// Listen remote changes
|
|
13798
|
+
if (this._enableListenChanges)
|
|
13799
|
+
this.startListenChanges();
|
|
13795
13800
|
return this._data;
|
|
13796
13801
|
}
|
|
13797
13802
|
catch (error) {
|
|
@@ -13915,18 +13920,22 @@ class AccountService extends BaseGraphqlService {
|
|
|
13915
13920
|
// Emit event to observers
|
|
13916
13921
|
this.onLogin.next(this._data);
|
|
13917
13922
|
this.onChange.next(this._data);
|
|
13923
|
+
if (this._enableListenChanges)
|
|
13924
|
+
this.startListenChanges();
|
|
13918
13925
|
return this._data;
|
|
13919
13926
|
});
|
|
13920
13927
|
}
|
|
13921
|
-
|
|
13928
|
+
reload() {
|
|
13922
13929
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13923
13930
|
if (!this._cache.pubkey)
|
|
13924
13931
|
throw new Error('User not logged');
|
|
13925
13932
|
if (this.network.offline)
|
|
13926
13933
|
throw new Error('Cannot check account in offline mode');
|
|
13934
|
+
const now = Date.now();
|
|
13935
|
+
console.debug(`[account] Reloading account...`);
|
|
13927
13936
|
yield this.loadData();
|
|
13928
13937
|
yield this.saveLocally();
|
|
13929
|
-
console.debug(
|
|
13938
|
+
console.debug(`[account] Reloading account [OK] in ${Date.now() - now}ms`);
|
|
13930
13939
|
// Emit login event to subscribers
|
|
13931
13940
|
this.onLogin.next(this._data);
|
|
13932
13941
|
this.onChange.next(this._data);
|
|
@@ -13995,7 +14004,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13995
14004
|
if (hadAuthBasic)
|
|
13996
14005
|
this.onAuthBasicChange.next(undefined);
|
|
13997
14006
|
this.onChange.next(undefined);
|
|
13998
|
-
this.
|
|
14007
|
+
this.stopListenChanges();
|
|
13999
14008
|
});
|
|
14000
14009
|
}
|
|
14001
14010
|
/**
|
|
@@ -14112,60 +14121,10 @@ class AccountService extends BaseGraphqlService {
|
|
|
14112
14121
|
return res && res.confirmAccountEmail;
|
|
14113
14122
|
});
|
|
14114
14123
|
}
|
|
14115
|
-
|
|
14116
|
-
if (
|
|
14117
|
-
|
|
14118
|
-
|
|
14119
|
-
// Wait service ready, then loop
|
|
14120
|
-
return from(this.ready())
|
|
14121
|
-
.pipe(switchMap(() => this.watch()));
|
|
14122
|
-
}
|
|
14123
|
-
this._stopWatching$.next(); // Stop previous listening
|
|
14124
|
-
console.debug('[account] [WS] Watching changes');
|
|
14125
|
-
return this.graphql.subscribe({
|
|
14126
|
-
query: AccountSubscriptions.listenChanges,
|
|
14127
|
-
variables: {
|
|
14128
|
-
interval: 10
|
|
14129
|
-
},
|
|
14130
|
-
error: {
|
|
14131
|
-
code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
|
|
14132
|
-
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
14133
|
-
}
|
|
14134
|
-
})
|
|
14135
|
-
.pipe(
|
|
14136
|
-
// Stop this pipe next time we call watch()
|
|
14137
|
-
takeUntil(this._stopWatching$), map(({ data }) => {
|
|
14138
|
-
var _a;
|
|
14139
|
-
if (!data)
|
|
14140
|
-
return;
|
|
14141
|
-
const existingUpdateDate = toDateISOString((_a = this._data) === null || _a === void 0 ? void 0 : _a.updateDate);
|
|
14142
|
-
if (existingUpdateDate === data.updateDate)
|
|
14143
|
-
return;
|
|
14144
|
-
console.debug(`[account] [WS] Detected update on {${data.updateDate}}`);
|
|
14145
|
-
return Account.fromObject(data);
|
|
14146
|
-
}), filter(isNotNil));
|
|
14147
|
-
}
|
|
14148
|
-
listenChanges() {
|
|
14149
|
-
const self = this;
|
|
14150
|
-
const subscription = this.watch()
|
|
14151
|
-
.subscribe({
|
|
14152
|
-
next: (data) => self.refresh(),
|
|
14153
|
-
error: (err) => {
|
|
14154
|
-
if (err && +err.code === ServerErrorCodes.NOT_FOUND) {
|
|
14155
|
-
console.info('[account] Account not exists anymore: force user to logout...', err);
|
|
14156
|
-
self.logout();
|
|
14157
|
-
}
|
|
14158
|
-
else if (err && +err.code === ServerErrorCodes.UNAUTHORIZED) {
|
|
14159
|
-
console.info('[account] Account not authorized: force user to logout...', err);
|
|
14160
|
-
self.logout();
|
|
14161
|
-
}
|
|
14162
|
-
else {
|
|
14163
|
-
console.warn('[account] [WS] Received error:', err);
|
|
14164
|
-
}
|
|
14165
|
-
}
|
|
14166
|
-
});
|
|
14167
|
-
subscription.add(() => console.debug('[account] [WS] Stop listening changes'));
|
|
14168
|
-
return subscription;
|
|
14124
|
+
listenChanges(opts) {
|
|
14125
|
+
if (this._enableListenChanges)
|
|
14126
|
+
return new Subscription(); // Already started: skip
|
|
14127
|
+
return this.startListenChanges(opts);
|
|
14169
14128
|
}
|
|
14170
14129
|
get additionalFields() {
|
|
14171
14130
|
return this._$additionalFields.getValue();
|
|
@@ -14187,6 +14146,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
14187
14146
|
}
|
|
14188
14147
|
/* -- protected method -- */
|
|
14189
14148
|
resetData() {
|
|
14149
|
+
this.stopListenChanges();
|
|
14190
14150
|
this._cache.loaded = false;
|
|
14191
14151
|
this._cache.keypair = null;
|
|
14192
14152
|
this._cache.authToken = null;
|
|
@@ -14314,6 +14274,8 @@ class AccountService extends BaseGraphqlService {
|
|
|
14314
14274
|
// Emit event
|
|
14315
14275
|
this.onLogin.next(this._data);
|
|
14316
14276
|
this.onChange.next(this._data);
|
|
14277
|
+
if (this._enableListenChanges)
|
|
14278
|
+
this.startListenChanges();
|
|
14317
14279
|
if (this._debug)
|
|
14318
14280
|
console.debug(`[account] Account restoration [OK] {pubkey: ${pubkey.substr(0, 8)}}, {profile: ${this._cache.mainProfile}}`);
|
|
14319
14281
|
return account;
|
|
@@ -14513,6 +14475,74 @@ class AccountService extends BaseGraphqlService {
|
|
|
14513
14475
|
return yield this.authenticateAndGetToken(newToken, (counter || 1) + 1 /* increment */);
|
|
14514
14476
|
});
|
|
14515
14477
|
}
|
|
14478
|
+
startListenChanges(opts) {
|
|
14479
|
+
if (this._listenChangesSubscription)
|
|
14480
|
+
this.stopListenChanges(); // Stop previous subscription
|
|
14481
|
+
if (this.network.offline)
|
|
14482
|
+
return new Subscription(); // Offline: skip
|
|
14483
|
+
const subscription = this.watchChanges(opts)
|
|
14484
|
+
.subscribe({
|
|
14485
|
+
next: (data) => {
|
|
14486
|
+
console.debug(`[account] Remote update detected at ${data.updateDate}`);
|
|
14487
|
+
this.reload();
|
|
14488
|
+
},
|
|
14489
|
+
error: (err) => {
|
|
14490
|
+
if (err && +err.code === ServerErrorCodes.NOT_FOUND) {
|
|
14491
|
+
console.info('[account] [WS] Account not exists anymore: force user to logout...', err);
|
|
14492
|
+
this.logout();
|
|
14493
|
+
}
|
|
14494
|
+
else if (err && +err.code === ServerErrorCodes.UNAUTHORIZED) {
|
|
14495
|
+
console.info('[account] [WS] Account not authorized: force user to logout...', err);
|
|
14496
|
+
this.logout();
|
|
14497
|
+
}
|
|
14498
|
+
else {
|
|
14499
|
+
console.warn('[account] [WS] Received error:', err);
|
|
14500
|
+
}
|
|
14501
|
+
}
|
|
14502
|
+
});
|
|
14503
|
+
// Add close log
|
|
14504
|
+
subscription.add(() => console.debug(`[account] Stop watching remote changes`));
|
|
14505
|
+
this._listenChangesSubscription = subscription;
|
|
14506
|
+
// Make sure to use the stop function, when unsubscribe
|
|
14507
|
+
return new Subscription(() => this.stopListenChanges());
|
|
14508
|
+
}
|
|
14509
|
+
stopListenChanges() {
|
|
14510
|
+
if (this._listenChangesSubscription) {
|
|
14511
|
+
this._listenChangesSubscription.unsubscribe();
|
|
14512
|
+
this._listenChangesSubscription = null;
|
|
14513
|
+
}
|
|
14514
|
+
}
|
|
14515
|
+
watchChanges(opts) {
|
|
14516
|
+
var _a;
|
|
14517
|
+
if (!this.started) {
|
|
14518
|
+
// Wait service ready, then loop
|
|
14519
|
+
return from(this.ready())
|
|
14520
|
+
.pipe(switchMap(() => this.watchChanges(opts)));
|
|
14521
|
+
}
|
|
14522
|
+
if (!this._cache.pubkey)
|
|
14523
|
+
throw new Error('Not logged in');
|
|
14524
|
+
if (this.network.offline)
|
|
14525
|
+
throw new Error('Cannot watch account changes: network is offline.');
|
|
14526
|
+
const variables = {
|
|
14527
|
+
interval: Math.max(0, (opts === null || opts === void 0 ? void 0 : opts.intervalInSecond) || ((_a = this.environment.account) === null || _a === void 0 ? void 0 : _a.listenIntervalInSecond) || 0)
|
|
14528
|
+
};
|
|
14529
|
+
console.debug(`[account] Watching remote changes, every ${variables.interval}s`);
|
|
14530
|
+
return this.graphql.subscribe({
|
|
14531
|
+
query: AccountSubscriptions.listenChanges,
|
|
14532
|
+
variables,
|
|
14533
|
+
error: {
|
|
14534
|
+
code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
|
|
14535
|
+
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
14536
|
+
}
|
|
14537
|
+
}).pipe(map(({ data }) => data),
|
|
14538
|
+
// Keep only if newer
|
|
14539
|
+
filter(data => {
|
|
14540
|
+
var _a;
|
|
14541
|
+
const currentUpdateDate = fromDateISOString((_a = this._data) === null || _a === void 0 ? void 0 : _a.updateDate);
|
|
14542
|
+
const remoteUpdateDate = fromDateISOString(data === null || data === void 0 ? void 0 : data.updateDate);
|
|
14543
|
+
return (remoteUpdateDate && (!currentUpdateDate || !remoteUpdateDate.isSame(currentUpdateDate, 'millisecond')));
|
|
14544
|
+
}));
|
|
14545
|
+
}
|
|
14516
14546
|
copyIdAndUpdateDate(source, target) {
|
|
14517
14547
|
if (!source)
|
|
14518
14548
|
return;
|
|
@@ -18212,7 +18242,7 @@ class RegisterConfirmPage {
|
|
|
18212
18242
|
// Send the confirmation code
|
|
18213
18243
|
const confirmed = yield this.accountService.confirmEmail(email, code);
|
|
18214
18244
|
if (confirmed && this.isLogin) {
|
|
18215
|
-
yield this.accountService.
|
|
18245
|
+
yield this.accountService.reload();
|
|
18216
18246
|
}
|
|
18217
18247
|
this.loading = false;
|
|
18218
18248
|
//this.location.replaceState("/confirm/" + email + "/");
|
|
@@ -18443,7 +18473,7 @@ class AccountPage extends AppForm {
|
|
|
18443
18473
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18444
18474
|
this.disable();
|
|
18445
18475
|
this.markAsLoading();
|
|
18446
|
-
return this.accountService.
|
|
18476
|
+
return this.accountService.reload();
|
|
18447
18477
|
});
|
|
18448
18478
|
}
|
|
18449
18479
|
startListenChanges() {
|
|
@@ -23445,6 +23475,7 @@ class AppEditorOptions extends AppTabEditorOptions {
|
|
|
23445
23475
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
23446
23476
|
class AppEntityEditor extends AppTabEditor {
|
|
23447
23477
|
constructor(injector, dataType, dataService, options) {
|
|
23478
|
+
var _a;
|
|
23448
23479
|
super(injector.get(ActivatedRoute), injector.get(Router), injector.get(AlertController), injector.get(TranslateService), options);
|
|
23449
23480
|
this.dataType = dataType;
|
|
23450
23481
|
this.dataService = dataService;
|
|
@@ -23453,7 +23484,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
23453
23484
|
this.onUpdateView = new EventEmitter();
|
|
23454
23485
|
options = Object.assign({
|
|
23455
23486
|
// Default options
|
|
23456
|
-
enableListenChanges: (injector.get(ENVIRONMENT).
|
|
23487
|
+
enableListenChanges: (((_a = injector.get(ENVIRONMENT).entityEditor) === null || _a === void 0 ? void 0 : _a.enableListenChanges) === true), pathIdAttribute: 'id', autoLoad: true, autoUpdateRoute: true, i18nPrefix: '' }, options);
|
|
23457
23488
|
this.settings = injector.get(LocalSettingsService);
|
|
23458
23489
|
this.errorTranslator = injector.get(FormErrorTranslator);
|
|
23459
23490
|
this.cd = injector.get(ChangeDetectorRef);
|