@sumaris-net/ngx-components 1.9.4 → 1.9.7
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 +142 -83
- 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 +127 -73
- package/esm2015/src/environments/environment.class.js +1 -1
- package/esm2015/src/environments/environment.js +9 -3
- package/fesm2015/sumaris-net.ngx-components.js +128 -76
- 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 +8 -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFjLEtBQUssQ0FBQyxDQUFDO0FBRWxFLE1BQU0sT0FBTyxXQUFXO0NBK0R2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmV0Y2hQb2xpY3l9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHtTdG9yYWdlQ29uZmlnfSBmcm9tICdAaW9uaWMvc3RvcmFnZSc7XG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEVOVklST05NRU5UID0gbmV3IEluamVjdGlvblRva2VuPEVudmlyb25tZW50PignRU5WJyk7XG5cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwcm9kdWN0aW9uOiBib29sZWFuO1xuICBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgLy8gQSBwZWVyIHRvIHVzZSBhdCBzdGFydHVwICh1c2VmdWwgb24gYSB3ZWIgc2l0ZSBkZXBsb3ltZW50KVxuICBkZWZhdWx0UGVlcj86IHsgaG9zdDogc3RyaW5nOyBwb3J0OiBudW1iZXI7IHVzZVNzbD86IGJvb2xlYW47IHBhdGg/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgLy8gQSBsaXN0IG9mIHBlZXJzLCB0byBzZWxlY3QgYXMgcGVlciwgaW4gc2V0dGluZ3NcbiAgZGVmYXVsdFBlZXJzPzogeyBob3N0OiBzdHJpbmc7IHBvcnQ6IG51bWJlcjsgdXNlU3NsPzogYm9vbGVhbjsgcGF0aD86IHN0cmluZyB9W107XG5cbiAgLy8gTWluIGNvbXBhdGlibGUgdmVyc2lvbiBmb3IgdGhlIHBlZXJcbiAgcGVlck1pblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLy8gRW5hYmxlIGNhY2hlIHBlcnNpc3RlbmNlID9cbiAgcGVyc2lzdENhY2hlPzogYm9vbGVhbjtcblxuICAvLyBGb3JjZSBvZmZsaW5lIG1vZGUgPyAvIVxcIEZvciBERVYgb25seVxuICBvZmZsaW5lPzogYm9vbGVhbjtcblxuICAvLyBBcG9sbG8gKGdyYXBoUUwpIGNvbmZpZ1xuICBhcG9sbG9GZXRjaFBvbGljeT86ICBGZXRjaFBvbGljeTtcblxuICAvLyBEZWZhdWx0IHZhbHVlc1xuICBkZWZhdWx0TG9jYWxlOiBzdHJpbmc7XG4gIGRlZmF1bHRMYXRMb25nRm9ybWF0PzogJ0REJyB8ICdERE1NJyB8ICdERE1NU1MnO1xuICBkZWZhdWx0RGVwYXJ0bWVudElkPzogbnVtYmVyO1xuICBkZWZhdWx0QXBwTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEFuZHJvaWRJbnN0YWxsVXJsPzogc3RyaW5nO1xuXG4gIC8vIFN0b3JhZ2VcbiAgc3RvcmFnZT86IFBhcnRpYWw8U3RvcmFnZUNvbmZpZz47XG4gIHN0b3JhZ2VTYXZlUGVyaW9kTXM/OiBudW1iZXI7XG5cbiAgLy8gQWJvdXRcbiAgc291cmNlVXJsPzogc3RyaW5nO1xuICByZXBvcnRJc3N1ZVVybD86IHN0cmluZztcbiAgZm9ydW1Vcmw/OiBzdHJpbmc7XG4gIGhlbHBVcmw/OiBzdHJpbmc7XG5cbiAgLy8gRGVmYXVsdCBhdXRoZW50aWNhdGlvbiAvIVxcIEZvciBERVYgb25seVxuICAvLyAoc2VlIHZhbHVlcyBpbiB0aGUgdGVzdCBkYXRhYmFzZSAtIFhNTCBmaWxlcyBpbiBQb2QncyBtb2R1bGUpXG4gIGRlZmF1bHRBdXRoVmFsdWVzPzoge1xuICAgIHVzZXJuYW1lPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICB9O1xuXG4gIC8vIEFjY291bnRcbiAgYWNjb3VudD86IHtcbiAgICBlbmFibGVMaXN0ZW5DaGFuZ2VzPzogYm9vbGVhbjtcbiAgICAvLyBJZiB1bmRlZmluZWQgb3IgMCwgdGhlbiBsaXN0ZW4gb25seSBjaGFuZ2VzIG1hZGUgYnkgdGhlIHBvZFxuICAgIC8vIElmIGdyZWF0ZXIgdGhhbiAwIDogd2lsbCBjaGVjayBjb25jdXJyZW50IGNoYW5nZXMgaW4gdGhlIERCIChlLmcuIGNoYW5nZXMgbWRlIGJ5IGFub3RoZXIgc29mdHdhcmUpIEFORCBjaGFuZ2VzIG1hZGUgdGhlIHBvZFxuICAgIGxpc3RlbkludGVydmFsSW5TZWNvbmRzPzogbnVtYmVyO1xuICB9O1xuXG4gIGVudGl0eUVkaXRvcj86IHtcbiAgICBlbmFibGVMaXN0ZW5DaGFuZ2VzPzogYm9vbGVhbjtcbiAgICAvLyBJZiB1bmRlZmluZWQgb3IgMCwgdGhlbiBsaXN0ZW4gb25seSBjaGFuZ2VzIG1hZGUgYnkgdGhlIHBvZFxuICAgIC8vIElmIGdyZWF0ZXIgdGhhbiAwIDogd2lsbCBjaGVjayBjb25jdXJyZW50IGNoYW5nZXMgaW4gdGhlIERCIChlLmcuIGNoYW5nZXMgbWRlIGJ5IGFub3RoZXIgc29mdHdhcmUpIEFORCBjaGFuZ2VzIG1hZGUgdGhlIHBvZFxuICAgIGxpc3RlbkludGVydmFsSW5TZWNvbmRzPzogbnVtYmVyO1xuICB9O1xuXG59XG4iXX0=
|
|
@@ -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,14 @@ 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
|
+
listenIntervalInSeconds: 30
|
|
68
|
+
},
|
|
69
|
+
entityEditor: {
|
|
70
|
+
enableListenChanges: true,
|
|
71
|
+
listenIntervalInSeconds: 30
|
|
66
72
|
}
|
|
67
73
|
});
|
|
68
74
|
/*
|
|
@@ -72,4 +78,4 @@ export const environment = Object.freeze({
|
|
|
72
78
|
* because it will have performance impact when throw error
|
|
73
79
|
*/
|
|
74
80
|
import 'zone.js/dist/zone-error';
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBSWhFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBZ0IsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNwRCxJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE9BQU8sRUFBRSxHQUFHO0lBQ1osYUFBYSxFQUFFLElBQUk7SUFDbkIsb0JBQW9CLEVBQUUsTUFBTTtJQUM1QixpQkFBaUIsRUFBRSxhQUFhO0lBRWhDLHNCQUFzQjtJQUN0QixZQUFZLEVBQUUsS0FBSztJQUVuQix3QkFBd0I7SUFDeEIsZ0JBQWdCO0lBRWhCLGNBQWMsRUFBRSxPQUFPO0lBRXZCLFlBQVksRUFBRTtRQUNaO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLEVBQUU7U0FDVDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixJQUFJLEVBQUUsR0FBRztTQUNWO0tBQ0Y7SUFDRCxjQUFjLEVBQUUsU0FBUztJQUN6Qix3QkFBd0IsRUFBRSwrREFBK0Q7SUFFekYsVUFBVTtJQUNWLE9BQU8sRUFBRTtRQUNQLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQztLQUMvRDtJQUVELFFBQVE7SUFDUixTQUFTLEVBQUUscUVBQXFFO0lBQ2hGLGNBQWMsRUFBRSw4RUFBOEU7SUFDOUYsUUFBUSxFQUFFLDJCQUEyQjtJQUNyQyxPQUFPLEVBQUUsZ0dBQWdHO0lBRXpHLGNBQWM7SUFDZCxpQkFBaUIsRUFBRTtRQUVqQixxQ0FBcUM7UUFDckMsd0NBQXdDO1FBRXhDLG1DQUFtQztRQUNuQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLE9BQU87S0FDakQ7SUFFRCxPQUFPLEVBQUU7UUFDUCxtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7SUFFRCxZQUFZLEVBQUU7UUFDWixtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7Q0FDRixDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE9BQU8seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgY2FuIGJlIHJlcGxhY2VkIGR1cmluZyBidWlsZCBieSB1c2luZyB0aGUgYGZpbGVSZXBsYWNlbWVudHNgIGFycmF5LlxuLy8gYG5nIGJ1aWxkIC0tLXByb2RgIHJlcGxhY2VzIGBlbnZpcm9ubWVudC50c2Agd2l0aCBgZW52aXJvbm1lbnQucHJvZC50c2AuXG4vLyBUaGUgbGlzdCBvZiBmaWxlIHJlcGxhY2VtZW50cyBjYW4gYmUgZm91bmQgaW4gYGFuZ3VsYXIuanNvbmAuXG5cbmltcG9ydCB7RW52aXJvbm1lbnR9IGZyb20gJy4vZW52aXJvbm1lbnQuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50ID0gT2JqZWN0LmZyZWV6ZSh7XG4gIG5hbWU6ICdAc3VtYXJpcy1uZXQvbmd4LWNvbXBvbmVudHMnLCAvLyBvdmVycmlkZGVuIGJ5IEVOVklST05NRU5UIHRva2VuXG4gIHZlcnNpb246IHVuZGVmaW5lZCwgLy8gb3ZlcnJpZGRlbiBieSBFTlZJUk9OTUVOVCB0b2tlblxuICBwcm9kdWN0aW9uOiB0cnVlLCAvLyBsZXQgdG8gdHJ1ZSAhIGJlY2F1c2UgdXNlZCBieSBwYWNrYWdlclxuICBiYXNlVXJsOiAnLycsXG4gIGRlZmF1bHRMb2NhbGU6ICdmcicsXG4gIGRlZmF1bHRMYXRMb25nRm9ybWF0OiAnRERNTScsXG4gIGFwb2xsb0ZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnLFxuXG4gIC8vIEZJWE1FOiBlbmFibGUgY2FjaGVcbiAgcGVyc2lzdENhY2hlOiBmYWxzZSxcblxuICAvLyBUT0RPOiBtYWtlIHRoaXMgd29ya3NcbiAgLy9vZmZsaW5lOiB0cnVlLFxuXG4gIHBlZXJNaW5WZXJzaW9uOiAnMS44LjAnLFxuXG4gIGRlZmF1bHRQZWVyczogW1xuICAgIHtcbiAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogODA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgICBwb3J0OiA4MDgxXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjQ1JyxcbiAgICAgIHBvcnQ6IDgwODBcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICcxOTIuMTY4LjAuMjQnLFxuICAgICAgcG9ydDogODA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJzE5Mi4xNjguMC4yOScsXG4gICAgICBwb3J0OiA4MDgwXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnc2loLnNmYS5zYycsXG4gICAgICBwb3J0OiA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3Rlc3Quc3VtYXJpcy5uZXQnLFxuICAgICAgcG9ydDogNDQzXG4gICAgfVxuICBdLFxuICBkZWZhdWx0QXBwTmFtZTogJ1NVTUFSaVMnLFxuICBkZWZhdWx0QW5kcm9pZEluc3RhbGxVcmw6ICdodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9bmV0LnN1bWFyaXMuYXBwJyxcblxuICAvLyBTdG9yYWdlXG4gIHN0b3JhZ2U6IHtcbiAgICBkcml2ZXJPcmRlcjogWydzcWxpdGUnLCAnaW5kZXhlZGRiJywgJ3dlYnNxbCcsICdsb2NhbHN0b3JhZ2UnXVxuICB9LFxuXG4gIC8vIEFib3V0XG4gIHNvdXJjZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMnLFxuICByZXBvcnRJc3N1ZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9pc3N1ZXMnLFxuICBmb3J1bVVybDogJ2h0dHBzOi8vZm9ydW0uc3VtYXJpcy5uZXQnLFxuICBoZWxwVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1kb2MvLS9ibG9iL21hc3Rlci91c2VyLW1hbnVhbC9pbmRleF9mci5tZCcsXG5cbiAgLy8gRGV2ZWxvcG1lbnRcbiAgZGVmYXVsdEF1dGhWYWx1ZXM6IHtcblxuICAgIC8vIEJhc2ljIGF1dGggKHVzaW5nIFBlcnNvbi51c2VybmFtZSlcbiAgICAvLyB1c2VybmFtZTogJ2FkbXEyJywgcGFzc3dvcmQ6ICdxMjIwMDYnXG5cbiAgICAvLyBUb2tlbiBhdXRoICh1c2luZyBQZXJzb24ucHVia2V5KVxuICAgIHVzZXJuYW1lOiAnYWRtaW5Ac3VtYXJpcy5uZXQnLCBwYXNzd29yZDogJ2FkbWluJyxcbiAgfSxcblxuICBhY2NvdW50OiB7XG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlczogdHJ1ZSxcbiAgICBsaXN0ZW5JbnRlcnZhbEluU2Vjb25kczogMzBcbiAgfSxcblxuICBlbnRpdHlFZGl0b3I6IHtcbiAgICBlbmFibGVMaXN0ZW5DaGFuZ2VzOiB0cnVlLFxuICAgIGxpc3RlbkludGVydmFsSW5TZWNvbmRzOiAzMFxuICB9XG59KTtcblxuLypcbiAqIEluIGRldmVsb3BtZW50IG1vZGUsIHRvIGlnbm9yZSB6b25lIHJlbGF0ZWQgZXJyb3Igc3RhY2sgZnJhbWVzIHN1Y2ggYXNcbiAqIGB6b25lLnJ1bmAsIGB6b25lRGVsZWdhdGUuaW52b2tlVGFza2AgZm9yIGVhc2llciBkZWJ1Z2dpbmcsIHlvdSBjYW5cbiAqIGltcG9ydCB0aGUgZm9sbG93aW5nIGZpbGUsIGJ1dCBwbGVhc2UgY29tbWVudCBpdCBvdXQgaW4gcHJvZHVjdGlvbiBtb2RlXG4gKiBiZWNhdXNlIGl0IHdpbGwgaGF2ZSBwZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiB0aHJvdyBlcnJvclxuICovXG5pbXBvcnQgJ3pvbmUuanMvZGlzdC96b25lLWVycm9yJztcbiJdfQ==
|
|
@@ -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,14 @@ 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
|
+
listenIntervalInSeconds: 30
|
|
9499
|
+
},
|
|
9500
|
+
entityEditor: {
|
|
9501
|
+
enableListenChanges: true,
|
|
9502
|
+
listenIntervalInSeconds: 30
|
|
9497
9503
|
}
|
|
9498
9504
|
});
|
|
9499
9505
|
|
|
@@ -12559,9 +12565,7 @@ class GraphqlService extends StartableService {
|
|
|
12559
12565
|
this.cryptoService = cryptoService;
|
|
12560
12566
|
this.environment = environment;
|
|
12561
12567
|
this.typePolicies = typePolicies;
|
|
12562
|
-
this.connectionParams = {
|
|
12563
|
-
reconnect: true
|
|
12564
|
-
};
|
|
12568
|
+
this.connectionParams = {};
|
|
12565
12569
|
this.onNetworkError = new Subject();
|
|
12566
12570
|
this.customErrors = {};
|
|
12567
12571
|
this._debug = !environment.production;
|
|
@@ -13024,8 +13028,6 @@ class GraphqlService extends StartableService {
|
|
|
13024
13028
|
}
|
|
13025
13029
|
const headers = new HttpHeaders()
|
|
13026
13030
|
.append('Authorization', authorization);
|
|
13027
|
-
//.append('X-App-Name', environment.name)
|
|
13028
|
-
//.append('X-App-Version', environment.version)
|
|
13029
13031
|
// Use the setContext method to set the HTTP headers.
|
|
13030
13032
|
operation.setContext(Object.assign(Object.assign({}, operation.getContext()), { headers }));
|
|
13031
13033
|
// Call the next link in the middleware chain.
|
|
@@ -13578,7 +13580,7 @@ const AccountSubscriptions = {
|
|
|
13578
13580
|
}`
|
|
13579
13581
|
};
|
|
13580
13582
|
class AccountService extends BaseGraphqlService {
|
|
13581
|
-
constructor(cryptoService, network, graphql, settings, storage, file, environment) {
|
|
13583
|
+
constructor(cryptoService, network, graphql, settings, storage, file, translate, toastController, environment) {
|
|
13582
13584
|
super(graphql, environment);
|
|
13583
13585
|
this.cryptoService = cryptoService;
|
|
13584
13586
|
this.network = network;
|
|
@@ -13586,13 +13588,15 @@ class AccountService extends BaseGraphqlService {
|
|
|
13586
13588
|
this.settings = settings;
|
|
13587
13589
|
this.storage = storage;
|
|
13588
13590
|
this.file = file;
|
|
13591
|
+
this.translate = translate;
|
|
13592
|
+
this.toastController = toastController;
|
|
13589
13593
|
this.environment = environment;
|
|
13590
13594
|
this.onLogin = new Subject();
|
|
13591
13595
|
this.onLogout = new Subject();
|
|
13592
13596
|
this.onChange = new Subject();
|
|
13593
13597
|
this.onAuthTokenChange = new Subject();
|
|
13594
13598
|
this.onAuthBasicChange = new Subject();
|
|
13595
|
-
this.
|
|
13599
|
+
this._listenChangesSubscription = null;
|
|
13596
13600
|
this._cache = {
|
|
13597
13601
|
loaded: false,
|
|
13598
13602
|
keypair: null,
|
|
@@ -13605,6 +13609,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13605
13609
|
};
|
|
13606
13610
|
this._$additionalFields = new BehaviorSubject([]);
|
|
13607
13611
|
this._tokenType$ = new BehaviorSubject(undefined);
|
|
13612
|
+
this._enableListenChanges = (!environment.account || environment.account.enableListenChanges !== false);
|
|
13608
13613
|
this._debug = !environment.production;
|
|
13609
13614
|
if (this._debug)
|
|
13610
13615
|
console.debug('[account-service] Creating service');
|
|
@@ -13792,6 +13797,9 @@ class AccountService extends BaseGraphqlService {
|
|
|
13792
13797
|
// Emit events
|
|
13793
13798
|
this.onLogin.next(this._data);
|
|
13794
13799
|
this.onChange.next(this._data);
|
|
13800
|
+
// Listen remote changes
|
|
13801
|
+
if (this._enableListenChanges)
|
|
13802
|
+
this.startListenChanges();
|
|
13795
13803
|
return this._data;
|
|
13796
13804
|
}
|
|
13797
13805
|
catch (error) {
|
|
@@ -13915,22 +13923,39 @@ class AccountService extends BaseGraphqlService {
|
|
|
13915
13923
|
// Emit event to observers
|
|
13916
13924
|
this.onLogin.next(this._data);
|
|
13917
13925
|
this.onChange.next(this._data);
|
|
13926
|
+
if (this._enableListenChanges)
|
|
13927
|
+
this.startListenChanges();
|
|
13918
13928
|
return this._data;
|
|
13919
13929
|
});
|
|
13920
13930
|
}
|
|
13921
|
-
|
|
13931
|
+
reload() {
|
|
13922
13932
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13923
13933
|
if (!this._cache.pubkey)
|
|
13924
13934
|
throw new Error('User not logged');
|
|
13925
13935
|
if (this.network.offline)
|
|
13926
13936
|
throw new Error('Cannot check account in offline mode');
|
|
13927
|
-
|
|
13928
|
-
|
|
13929
|
-
|
|
13930
|
-
|
|
13931
|
-
|
|
13932
|
-
|
|
13933
|
-
|
|
13937
|
+
const now = Date.now();
|
|
13938
|
+
console.debug(`[account] Reloading account...`);
|
|
13939
|
+
const wasLogin = this.isLogin();
|
|
13940
|
+
try {
|
|
13941
|
+
yield this.loadData();
|
|
13942
|
+
yield this.saveLocally();
|
|
13943
|
+
console.debug(`[account] Reloading account [OK] in ${Date.now() - now}ms`);
|
|
13944
|
+
// Emit login event to subscribers
|
|
13945
|
+
this.onLogin.next(this._data);
|
|
13946
|
+
this.onChange.next(this._data);
|
|
13947
|
+
return this._data;
|
|
13948
|
+
}
|
|
13949
|
+
catch (error) {
|
|
13950
|
+
// Cannot reload but was login: force to logout
|
|
13951
|
+
if (wasLogin && !this.isLogin()) {
|
|
13952
|
+
console.error(`[account] Reloading account failed. Will force logout...`, error);
|
|
13953
|
+
yield this.logout();
|
|
13954
|
+
}
|
|
13955
|
+
else {
|
|
13956
|
+
throw error;
|
|
13957
|
+
}
|
|
13958
|
+
}
|
|
13934
13959
|
});
|
|
13935
13960
|
}
|
|
13936
13961
|
/**
|
|
@@ -13995,7 +14020,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13995
14020
|
if (hadAuthBasic)
|
|
13996
14021
|
this.onAuthBasicChange.next(undefined);
|
|
13997
14022
|
this.onChange.next(undefined);
|
|
13998
|
-
this.
|
|
14023
|
+
this.stopListenChanges();
|
|
13999
14024
|
});
|
|
14000
14025
|
}
|
|
14001
14026
|
/**
|
|
@@ -14112,60 +14137,10 @@ class AccountService extends BaseGraphqlService {
|
|
|
14112
14137
|
return res && res.confirmAccountEmail;
|
|
14113
14138
|
});
|
|
14114
14139
|
}
|
|
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;
|
|
14140
|
+
listenChanges(opts) {
|
|
14141
|
+
if (this._enableListenChanges)
|
|
14142
|
+
return new Subscription(); // Already started: skip
|
|
14143
|
+
return this.startListenChanges(opts);
|
|
14169
14144
|
}
|
|
14170
14145
|
get additionalFields() {
|
|
14171
14146
|
return this._$additionalFields.getValue();
|
|
@@ -14187,6 +14162,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
14187
14162
|
}
|
|
14188
14163
|
/* -- protected method -- */
|
|
14189
14164
|
resetData() {
|
|
14165
|
+
this.stopListenChanges();
|
|
14190
14166
|
this._cache.loaded = false;
|
|
14191
14167
|
this._cache.keypair = null;
|
|
14192
14168
|
this._cache.authToken = null;
|
|
@@ -14314,6 +14290,8 @@ class AccountService extends BaseGraphqlService {
|
|
|
14314
14290
|
// Emit event
|
|
14315
14291
|
this.onLogin.next(this._data);
|
|
14316
14292
|
this.onChange.next(this._data);
|
|
14293
|
+
if (this._enableListenChanges)
|
|
14294
|
+
this.startListenChanges();
|
|
14317
14295
|
if (this._debug)
|
|
14318
14296
|
console.debug(`[account] Account restoration [OK] {pubkey: ${pubkey.substr(0, 8)}}, {profile: ${this._cache.mainProfile}}`);
|
|
14319
14297
|
return account;
|
|
@@ -14513,6 +14491,74 @@ class AccountService extends BaseGraphqlService {
|
|
|
14513
14491
|
return yield this.authenticateAndGetToken(newToken, (counter || 1) + 1 /* increment */);
|
|
14514
14492
|
});
|
|
14515
14493
|
}
|
|
14494
|
+
startListenChanges(opts) {
|
|
14495
|
+
if (this._listenChangesSubscription)
|
|
14496
|
+
this.stopListenChanges(); // Stop previous subscription
|
|
14497
|
+
if (this.network.offline)
|
|
14498
|
+
return new Subscription(); // Offline: skip
|
|
14499
|
+
const subscription = this.watchChanges(opts)
|
|
14500
|
+
.subscribe({
|
|
14501
|
+
next: (data) => {
|
|
14502
|
+
console.debug(`[account] Remote update detected at ${data.updateDate}`);
|
|
14503
|
+
this.reload();
|
|
14504
|
+
},
|
|
14505
|
+
error: (err) => {
|
|
14506
|
+
if (err && +err.code === ServerErrorCodes.NOT_FOUND) {
|
|
14507
|
+
console.info('[account] [WS] Account not exists anymore: force user to logout...', err);
|
|
14508
|
+
this.logout();
|
|
14509
|
+
}
|
|
14510
|
+
else if (err && +err.code === ServerErrorCodes.UNAUTHORIZED) {
|
|
14511
|
+
console.info('[account] [WS] Account not authorized: force user to logout...', err);
|
|
14512
|
+
this.logout();
|
|
14513
|
+
}
|
|
14514
|
+
else {
|
|
14515
|
+
console.warn('[account] [WS] Received error:', err);
|
|
14516
|
+
}
|
|
14517
|
+
}
|
|
14518
|
+
});
|
|
14519
|
+
// Add close log
|
|
14520
|
+
subscription.add(() => console.debug(`[account] Stop watching remote changes`));
|
|
14521
|
+
this._listenChangesSubscription = subscription;
|
|
14522
|
+
// Make sure to use the stop function, when unsubscribe
|
|
14523
|
+
return new Subscription(() => this.stopListenChanges());
|
|
14524
|
+
}
|
|
14525
|
+
stopListenChanges() {
|
|
14526
|
+
if (this._listenChangesSubscription) {
|
|
14527
|
+
this._listenChangesSubscription.unsubscribe();
|
|
14528
|
+
this._listenChangesSubscription = null;
|
|
14529
|
+
}
|
|
14530
|
+
}
|
|
14531
|
+
watchChanges(opts) {
|
|
14532
|
+
var _a;
|
|
14533
|
+
if (!this.started) {
|
|
14534
|
+
// Wait service ready, then loop
|
|
14535
|
+
return from(this.ready())
|
|
14536
|
+
.pipe(switchMap(() => this.watchChanges(opts)));
|
|
14537
|
+
}
|
|
14538
|
+
if (!this._cache.pubkey)
|
|
14539
|
+
throw new Error('Not logged in');
|
|
14540
|
+
if (this.network.offline)
|
|
14541
|
+
throw new Error('Cannot watch account changes: network is offline.');
|
|
14542
|
+
const variables = {
|
|
14543
|
+
interval: Math.max(0, (opts === null || opts === void 0 ? void 0 : opts.intervalInSeconds) || ((_a = this.environment.account) === null || _a === void 0 ? void 0 : _a.listenIntervalInSeconds) || 0)
|
|
14544
|
+
};
|
|
14545
|
+
console.debug(`[account] Watching remote changes, every ${variables.interval}s`);
|
|
14546
|
+
return this.graphql.subscribe({
|
|
14547
|
+
query: AccountSubscriptions.listenChanges,
|
|
14548
|
+
variables,
|
|
14549
|
+
error: {
|
|
14550
|
+
code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
|
|
14551
|
+
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
14552
|
+
}
|
|
14553
|
+
}).pipe(map(({ data }) => data),
|
|
14554
|
+
// Keep only if newer
|
|
14555
|
+
filter(data => {
|
|
14556
|
+
var _a;
|
|
14557
|
+
const currentUpdateDate = fromDateISOString((_a = this._data) === null || _a === void 0 ? void 0 : _a.updateDate);
|
|
14558
|
+
const remoteUpdateDate = fromDateISOString(data === null || data === void 0 ? void 0 : data.updateDate);
|
|
14559
|
+
return (remoteUpdateDate && (!currentUpdateDate || !remoteUpdateDate.isSame(currentUpdateDate, 'millisecond')));
|
|
14560
|
+
}));
|
|
14561
|
+
}
|
|
14516
14562
|
copyIdAndUpdateDate(source, target) {
|
|
14517
14563
|
if (!source)
|
|
14518
14564
|
return;
|
|
@@ -14526,8 +14572,11 @@ class AccountService extends BaseGraphqlService {
|
|
|
14526
14572
|
target.id = source.id || target.id;
|
|
14527
14573
|
target.updateDate = source.updateDate || target.updateDate;
|
|
14528
14574
|
}
|
|
14575
|
+
showToast(opts) {
|
|
14576
|
+
return Toasts.show(this.toastController, this.translate, opts);
|
|
14577
|
+
}
|
|
14529
14578
|
}
|
|
14530
|
-
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" });
|
|
14579
|
+
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" });
|
|
14531
14580
|
AccountService.decorators = [
|
|
14532
14581
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
14533
14582
|
];
|
|
@@ -14538,6 +14587,8 @@ AccountService.ctorParameters = () => [
|
|
|
14538
14587
|
{ type: LocalSettingsService },
|
|
14539
14588
|
{ type: Storage },
|
|
14540
14589
|
{ type: FileService },
|
|
14590
|
+
{ type: TranslateService, decorators: [{ type: Optional }] },
|
|
14591
|
+
{ type: ToastController, decorators: [{ type: Optional }] },
|
|
14541
14592
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] }
|
|
14542
14593
|
];
|
|
14543
14594
|
|
|
@@ -18212,7 +18263,7 @@ class RegisterConfirmPage {
|
|
|
18212
18263
|
// Send the confirmation code
|
|
18213
18264
|
const confirmed = yield this.accountService.confirmEmail(email, code);
|
|
18214
18265
|
if (confirmed && this.isLogin) {
|
|
18215
|
-
yield this.accountService.
|
|
18266
|
+
yield this.accountService.reload();
|
|
18216
18267
|
}
|
|
18217
18268
|
this.loading = false;
|
|
18218
18269
|
//this.location.replaceState("/confirm/" + email + "/");
|
|
@@ -18443,7 +18494,7 @@ class AccountPage extends AppForm {
|
|
|
18443
18494
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18444
18495
|
this.disable();
|
|
18445
18496
|
this.markAsLoading();
|
|
18446
|
-
return this.accountService.
|
|
18497
|
+
return this.accountService.reload();
|
|
18447
18498
|
});
|
|
18448
18499
|
}
|
|
18449
18500
|
startListenChanges() {
|
|
@@ -23445,6 +23496,7 @@ class AppEditorOptions extends AppTabEditorOptions {
|
|
|
23445
23496
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
23446
23497
|
class AppEntityEditor extends AppTabEditor {
|
|
23447
23498
|
constructor(injector, dataType, dataService, options) {
|
|
23499
|
+
var _a;
|
|
23448
23500
|
super(injector.get(ActivatedRoute), injector.get(Router), injector.get(AlertController), injector.get(TranslateService), options);
|
|
23449
23501
|
this.dataType = dataType;
|
|
23450
23502
|
this.dataService = dataService;
|
|
@@ -23453,7 +23505,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
23453
23505
|
this.onUpdateView = new EventEmitter();
|
|
23454
23506
|
options = Object.assign({
|
|
23455
23507
|
// Default options
|
|
23456
|
-
enableListenChanges: (injector.get(ENVIRONMENT).
|
|
23508
|
+
enableListenChanges: (((_a = injector.get(ENVIRONMENT).entityEditor) === null || _a === void 0 ? void 0 : _a.enableListenChanges) === true), pathIdAttribute: 'id', autoLoad: true, autoUpdateRoute: true, i18nPrefix: '' }, options);
|
|
23457
23509
|
this.settings = injector.get(LocalSettingsService);
|
|
23458
23510
|
this.errorTranslator = injector.get(FormErrorTranslator);
|
|
23459
23511
|
this.cd = injector.get(ChangeDetectorRef);
|