@sumaris-net/ngx-components 1.9.3 → 1.9.6
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 +140 -80
- 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 +6 -2
- 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 +1 -3
- package/esm2015/src/app/core/register/confirm/confirm.js +2 -2
- package/esm2015/src/app/core/services/account.service.js +127 -73
- package/esm2015/src/environments/environment.class.js +1 -1
- package/esm2015/src/environments/environment.js +8 -3
- package/fesm2015/sumaris-net.ngx-components.js +126 -73
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/core/services/account.service.d.ts +18 -5
- 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
|
|
|
@@ -13022,8 +13027,6 @@ class GraphqlService extends StartableService {
|
|
|
13022
13027
|
}
|
|
13023
13028
|
const headers = new HttpHeaders()
|
|
13024
13029
|
.append('Authorization', authorization);
|
|
13025
|
-
//.append('X-App-Name', environment.name)
|
|
13026
|
-
//.append('X-App-Version', environment.version)
|
|
13027
13030
|
// Use the setContext method to set the HTTP headers.
|
|
13028
13031
|
operation.setContext(Object.assign(Object.assign({}, operation.getContext()), { headers }));
|
|
13029
13032
|
// Call the next link in the middleware chain.
|
|
@@ -13576,7 +13579,7 @@ const AccountSubscriptions = {
|
|
|
13576
13579
|
}`
|
|
13577
13580
|
};
|
|
13578
13581
|
class AccountService extends BaseGraphqlService {
|
|
13579
|
-
constructor(cryptoService, network, graphql, settings, storage, file, environment) {
|
|
13582
|
+
constructor(cryptoService, network, graphql, settings, storage, file, translate, toastController, environment) {
|
|
13580
13583
|
super(graphql, environment);
|
|
13581
13584
|
this.cryptoService = cryptoService;
|
|
13582
13585
|
this.network = network;
|
|
@@ -13584,13 +13587,15 @@ class AccountService extends BaseGraphqlService {
|
|
|
13584
13587
|
this.settings = settings;
|
|
13585
13588
|
this.storage = storage;
|
|
13586
13589
|
this.file = file;
|
|
13590
|
+
this.translate = translate;
|
|
13591
|
+
this.toastController = toastController;
|
|
13587
13592
|
this.environment = environment;
|
|
13588
13593
|
this.onLogin = new Subject();
|
|
13589
13594
|
this.onLogout = new Subject();
|
|
13590
13595
|
this.onChange = new Subject();
|
|
13591
13596
|
this.onAuthTokenChange = new Subject();
|
|
13592
13597
|
this.onAuthBasicChange = new Subject();
|
|
13593
|
-
this.
|
|
13598
|
+
this._listenChangesSubscription = null;
|
|
13594
13599
|
this._cache = {
|
|
13595
13600
|
loaded: false,
|
|
13596
13601
|
keypair: null,
|
|
@@ -13603,6 +13608,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13603
13608
|
};
|
|
13604
13609
|
this._$additionalFields = new BehaviorSubject([]);
|
|
13605
13610
|
this._tokenType$ = new BehaviorSubject(undefined);
|
|
13611
|
+
this._enableListenChanges = (!environment.account || environment.account.enableListenChanges !== false);
|
|
13606
13612
|
this._debug = !environment.production;
|
|
13607
13613
|
if (this._debug)
|
|
13608
13614
|
console.debug('[account-service] Creating service');
|
|
@@ -13790,6 +13796,9 @@ class AccountService extends BaseGraphqlService {
|
|
|
13790
13796
|
// Emit events
|
|
13791
13797
|
this.onLogin.next(this._data);
|
|
13792
13798
|
this.onChange.next(this._data);
|
|
13799
|
+
// Listen remote changes
|
|
13800
|
+
if (this._enableListenChanges)
|
|
13801
|
+
this.startListenChanges();
|
|
13793
13802
|
return this._data;
|
|
13794
13803
|
}
|
|
13795
13804
|
catch (error) {
|
|
@@ -13913,22 +13922,39 @@ class AccountService extends BaseGraphqlService {
|
|
|
13913
13922
|
// Emit event to observers
|
|
13914
13923
|
this.onLogin.next(this._data);
|
|
13915
13924
|
this.onChange.next(this._data);
|
|
13925
|
+
if (this._enableListenChanges)
|
|
13926
|
+
this.startListenChanges();
|
|
13916
13927
|
return this._data;
|
|
13917
13928
|
});
|
|
13918
13929
|
}
|
|
13919
|
-
|
|
13930
|
+
reload() {
|
|
13920
13931
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13921
13932
|
if (!this._cache.pubkey)
|
|
13922
13933
|
throw new Error('User not logged');
|
|
13923
13934
|
if (this.network.offline)
|
|
13924
13935
|
throw new Error('Cannot check account in offline mode');
|
|
13925
|
-
|
|
13926
|
-
|
|
13927
|
-
|
|
13928
|
-
|
|
13929
|
-
|
|
13930
|
-
|
|
13931
|
-
|
|
13936
|
+
const now = Date.now();
|
|
13937
|
+
console.debug(`[account] Reloading account...`);
|
|
13938
|
+
const wasLogin = this.isLogin();
|
|
13939
|
+
try {
|
|
13940
|
+
yield this.loadData();
|
|
13941
|
+
yield this.saveLocally();
|
|
13942
|
+
console.debug(`[account] Reloading account [OK] in ${Date.now() - now}ms`);
|
|
13943
|
+
// Emit login event to subscribers
|
|
13944
|
+
this.onLogin.next(this._data);
|
|
13945
|
+
this.onChange.next(this._data);
|
|
13946
|
+
return this._data;
|
|
13947
|
+
}
|
|
13948
|
+
catch (error) {
|
|
13949
|
+
// Cannot reload but was login: force to logout
|
|
13950
|
+
if (wasLogin && !this.isLogin()) {
|
|
13951
|
+
console.error(`[account] Reloading account failed. Will force logout...`, error);
|
|
13952
|
+
yield this.logout();
|
|
13953
|
+
}
|
|
13954
|
+
else {
|
|
13955
|
+
throw error;
|
|
13956
|
+
}
|
|
13957
|
+
}
|
|
13932
13958
|
});
|
|
13933
13959
|
}
|
|
13934
13960
|
/**
|
|
@@ -13993,7 +14019,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13993
14019
|
if (hadAuthBasic)
|
|
13994
14020
|
this.onAuthBasicChange.next(undefined);
|
|
13995
14021
|
this.onChange.next(undefined);
|
|
13996
|
-
this.
|
|
14022
|
+
this.stopListenChanges();
|
|
13997
14023
|
});
|
|
13998
14024
|
}
|
|
13999
14025
|
/**
|
|
@@ -14110,60 +14136,10 @@ class AccountService extends BaseGraphqlService {
|
|
|
14110
14136
|
return res && res.confirmAccountEmail;
|
|
14111
14137
|
});
|
|
14112
14138
|
}
|
|
14113
|
-
|
|
14114
|
-
if (
|
|
14115
|
-
|
|
14116
|
-
|
|
14117
|
-
// Wait service ready, then loop
|
|
14118
|
-
return from(this.ready())
|
|
14119
|
-
.pipe(switchMap(() => this.watch()));
|
|
14120
|
-
}
|
|
14121
|
-
this._stopWatching$.next(); // Stop previous listening
|
|
14122
|
-
console.debug('[account] [WS] Watching changes');
|
|
14123
|
-
return this.graphql.subscribe({
|
|
14124
|
-
query: AccountSubscriptions.listenChanges,
|
|
14125
|
-
variables: {
|
|
14126
|
-
interval: 10
|
|
14127
|
-
},
|
|
14128
|
-
error: {
|
|
14129
|
-
code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
|
|
14130
|
-
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
14131
|
-
}
|
|
14132
|
-
})
|
|
14133
|
-
.pipe(
|
|
14134
|
-
// Stop this pipe next time we call watch()
|
|
14135
|
-
takeUntil(this._stopWatching$), map(({ data }) => {
|
|
14136
|
-
var _a;
|
|
14137
|
-
if (!data)
|
|
14138
|
-
return;
|
|
14139
|
-
const existingUpdateDate = toDateISOString((_a = this._data) === null || _a === void 0 ? void 0 : _a.updateDate);
|
|
14140
|
-
if (existingUpdateDate === data.updateDate)
|
|
14141
|
-
return;
|
|
14142
|
-
console.debug(`[account] [WS] Detected update on {${data.updateDate}}`);
|
|
14143
|
-
return Account.fromObject(data);
|
|
14144
|
-
}), filter(isNotNil));
|
|
14145
|
-
}
|
|
14146
|
-
listenChanges() {
|
|
14147
|
-
const self = this;
|
|
14148
|
-
const subscription = this.watch()
|
|
14149
|
-
.subscribe({
|
|
14150
|
-
next: (data) => self.refresh(),
|
|
14151
|
-
error: (err) => {
|
|
14152
|
-
if (err && +err.code === ServerErrorCodes.NOT_FOUND) {
|
|
14153
|
-
console.info('[account] Account not exists anymore: force user to logout...', err);
|
|
14154
|
-
self.logout();
|
|
14155
|
-
}
|
|
14156
|
-
else if (err && +err.code === ServerErrorCodes.UNAUTHORIZED) {
|
|
14157
|
-
console.info('[account] Account not authorized: force user to logout...', err);
|
|
14158
|
-
self.logout();
|
|
14159
|
-
}
|
|
14160
|
-
else {
|
|
14161
|
-
console.warn('[account] [WS] Received error:', err);
|
|
14162
|
-
}
|
|
14163
|
-
}
|
|
14164
|
-
});
|
|
14165
|
-
subscription.add(() => console.debug('[account] [WS] Stop listening changes'));
|
|
14166
|
-
return subscription;
|
|
14139
|
+
listenChanges(opts) {
|
|
14140
|
+
if (this._enableListenChanges)
|
|
14141
|
+
return new Subscription(); // Already started: skip
|
|
14142
|
+
return this.startListenChanges(opts);
|
|
14167
14143
|
}
|
|
14168
14144
|
get additionalFields() {
|
|
14169
14145
|
return this._$additionalFields.getValue();
|
|
@@ -14185,6 +14161,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
14185
14161
|
}
|
|
14186
14162
|
/* -- protected method -- */
|
|
14187
14163
|
resetData() {
|
|
14164
|
+
this.stopListenChanges();
|
|
14188
14165
|
this._cache.loaded = false;
|
|
14189
14166
|
this._cache.keypair = null;
|
|
14190
14167
|
this._cache.authToken = null;
|
|
@@ -14312,6 +14289,8 @@ class AccountService extends BaseGraphqlService {
|
|
|
14312
14289
|
// Emit event
|
|
14313
14290
|
this.onLogin.next(this._data);
|
|
14314
14291
|
this.onChange.next(this._data);
|
|
14292
|
+
if (this._enableListenChanges)
|
|
14293
|
+
this.startListenChanges();
|
|
14315
14294
|
if (this._debug)
|
|
14316
14295
|
console.debug(`[account] Account restoration [OK] {pubkey: ${pubkey.substr(0, 8)}}, {profile: ${this._cache.mainProfile}}`);
|
|
14317
14296
|
return account;
|
|
@@ -14511,6 +14490,74 @@ class AccountService extends BaseGraphqlService {
|
|
|
14511
14490
|
return yield this.authenticateAndGetToken(newToken, (counter || 1) + 1 /* increment */);
|
|
14512
14491
|
});
|
|
14513
14492
|
}
|
|
14493
|
+
startListenChanges(opts) {
|
|
14494
|
+
if (this._listenChangesSubscription)
|
|
14495
|
+
this.stopListenChanges(); // Stop previous subscription
|
|
14496
|
+
if (this.network.offline)
|
|
14497
|
+
return new Subscription(); // Offline: skip
|
|
14498
|
+
const subscription = this.watchChanges(opts)
|
|
14499
|
+
.subscribe({
|
|
14500
|
+
next: (data) => {
|
|
14501
|
+
console.debug(`[account] Remote update detected at ${data.updateDate}`);
|
|
14502
|
+
this.reload();
|
|
14503
|
+
},
|
|
14504
|
+
error: (err) => {
|
|
14505
|
+
if (err && +err.code === ServerErrorCodes.NOT_FOUND) {
|
|
14506
|
+
console.info('[account] [WS] Account not exists anymore: force user to logout...', err);
|
|
14507
|
+
this.logout();
|
|
14508
|
+
}
|
|
14509
|
+
else if (err && +err.code === ServerErrorCodes.UNAUTHORIZED) {
|
|
14510
|
+
console.info('[account] [WS] Account not authorized: force user to logout...', err);
|
|
14511
|
+
this.logout();
|
|
14512
|
+
}
|
|
14513
|
+
else {
|
|
14514
|
+
console.warn('[account] [WS] Received error:', err);
|
|
14515
|
+
}
|
|
14516
|
+
}
|
|
14517
|
+
});
|
|
14518
|
+
// Add close log
|
|
14519
|
+
subscription.add(() => console.debug(`[account] Stop watching remote changes`));
|
|
14520
|
+
this._listenChangesSubscription = subscription;
|
|
14521
|
+
// Make sure to use the stop function, when unsubscribe
|
|
14522
|
+
return new Subscription(() => this.stopListenChanges());
|
|
14523
|
+
}
|
|
14524
|
+
stopListenChanges() {
|
|
14525
|
+
if (this._listenChangesSubscription) {
|
|
14526
|
+
this._listenChangesSubscription.unsubscribe();
|
|
14527
|
+
this._listenChangesSubscription = null;
|
|
14528
|
+
}
|
|
14529
|
+
}
|
|
14530
|
+
watchChanges(opts) {
|
|
14531
|
+
var _a;
|
|
14532
|
+
if (!this.started) {
|
|
14533
|
+
// Wait service ready, then loop
|
|
14534
|
+
return from(this.ready())
|
|
14535
|
+
.pipe(switchMap(() => this.watchChanges(opts)));
|
|
14536
|
+
}
|
|
14537
|
+
if (!this._cache.pubkey)
|
|
14538
|
+
throw new Error('Not logged in');
|
|
14539
|
+
if (this.network.offline)
|
|
14540
|
+
throw new Error('Cannot watch account changes: network is offline.');
|
|
14541
|
+
const variables = {
|
|
14542
|
+
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)
|
|
14543
|
+
};
|
|
14544
|
+
console.debug(`[account] Watching remote changes, every ${variables.interval}s`);
|
|
14545
|
+
return this.graphql.subscribe({
|
|
14546
|
+
query: AccountSubscriptions.listenChanges,
|
|
14547
|
+
variables,
|
|
14548
|
+
error: {
|
|
14549
|
+
code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
|
|
14550
|
+
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
14551
|
+
}
|
|
14552
|
+
}).pipe(map(({ data }) => data),
|
|
14553
|
+
// Keep only if newer
|
|
14554
|
+
filter(data => {
|
|
14555
|
+
var _a;
|
|
14556
|
+
const currentUpdateDate = fromDateISOString((_a = this._data) === null || _a === void 0 ? void 0 : _a.updateDate);
|
|
14557
|
+
const remoteUpdateDate = fromDateISOString(data === null || data === void 0 ? void 0 : data.updateDate);
|
|
14558
|
+
return (remoteUpdateDate && (!currentUpdateDate || !remoteUpdateDate.isSame(currentUpdateDate, 'millisecond')));
|
|
14559
|
+
}));
|
|
14560
|
+
}
|
|
14514
14561
|
copyIdAndUpdateDate(source, target) {
|
|
14515
14562
|
if (!source)
|
|
14516
14563
|
return;
|
|
@@ -14524,8 +14571,11 @@ class AccountService extends BaseGraphqlService {
|
|
|
14524
14571
|
target.id = source.id || target.id;
|
|
14525
14572
|
target.updateDate = source.updateDate || target.updateDate;
|
|
14526
14573
|
}
|
|
14574
|
+
showToast(opts) {
|
|
14575
|
+
return Toasts.show(this.toastController, this.translate, opts);
|
|
14576
|
+
}
|
|
14527
14577
|
}
|
|
14528
|
-
AccountService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(i0.ɵɵinject(CryptoService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(FileService), i0.ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
|
|
14578
|
+
AccountService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(i0.ɵɵinject(CryptoService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(FileService), i0.ɵɵinject(i1$1.TranslateService, 8), i0.ɵɵinject(i1$4.ToastController, 8), i0.ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
|
|
14529
14579
|
AccountService.decorators = [
|
|
14530
14580
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
14531
14581
|
];
|
|
@@ -14536,6 +14586,8 @@ AccountService.ctorParameters = () => [
|
|
|
14536
14586
|
{ type: LocalSettingsService },
|
|
14537
14587
|
{ type: Storage },
|
|
14538
14588
|
{ type: FileService },
|
|
14589
|
+
{ type: TranslateService, decorators: [{ type: Optional }] },
|
|
14590
|
+
{ type: ToastController, decorators: [{ type: Optional }] },
|
|
14539
14591
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] }
|
|
14540
14592
|
];
|
|
14541
14593
|
|
|
@@ -18210,7 +18262,7 @@ class RegisterConfirmPage {
|
|
|
18210
18262
|
// Send the confirmation code
|
|
18211
18263
|
const confirmed = yield this.accountService.confirmEmail(email, code);
|
|
18212
18264
|
if (confirmed && this.isLogin) {
|
|
18213
|
-
yield this.accountService.
|
|
18265
|
+
yield this.accountService.reload();
|
|
18214
18266
|
}
|
|
18215
18267
|
this.loading = false;
|
|
18216
18268
|
//this.location.replaceState("/confirm/" + email + "/");
|
|
@@ -18441,7 +18493,7 @@ class AccountPage extends AppForm {
|
|
|
18441
18493
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18442
18494
|
this.disable();
|
|
18443
18495
|
this.markAsLoading();
|
|
18444
|
-
return this.accountService.
|
|
18496
|
+
return this.accountService.reload();
|
|
18445
18497
|
});
|
|
18446
18498
|
}
|
|
18447
18499
|
startListenChanges() {
|
|
@@ -23443,6 +23495,7 @@ class AppEditorOptions extends AppTabEditorOptions {
|
|
|
23443
23495
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
23444
23496
|
class AppEntityEditor extends AppTabEditor {
|
|
23445
23497
|
constructor(injector, dataType, dataService, options) {
|
|
23498
|
+
var _a;
|
|
23446
23499
|
super(injector.get(ActivatedRoute), injector.get(Router), injector.get(AlertController), injector.get(TranslateService), options);
|
|
23447
23500
|
this.dataType = dataType;
|
|
23448
23501
|
this.dataService = dataService;
|
|
@@ -23451,7 +23504,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
23451
23504
|
this.onUpdateView = new EventEmitter();
|
|
23452
23505
|
options = Object.assign({
|
|
23453
23506
|
// Default options
|
|
23454
|
-
enableListenChanges: (injector.get(ENVIRONMENT).
|
|
23507
|
+
enableListenChanges: (((_a = injector.get(ENVIRONMENT).entityEditor) === null || _a === void 0 ? void 0 : _a.enableListenChanges) === true), pathIdAttribute: 'id', autoLoad: true, autoUpdateRoute: true, i18nPrefix: '' }, options);
|
|
23455
23508
|
this.settings = injector.get(LocalSettingsService);
|
|
23456
23509
|
this.errorTranslator = injector.get(FormErrorTranslator);
|
|
23457
23510
|
this.cd = injector.get(ChangeDetectorRef);
|