@sumaris-net/ngx-components 18.16.6 → 18.16.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/doc/changelog.md +4 -0
- package/esm2022/src/app/core/graphql/graphql.service.mjs +16 -30
- package/esm2022/src/app/core/services/account.service.mjs +3 -3
- package/esm2022/src/app/core/services/local-settings.service.mjs +3 -3
- package/esm2022/src/app/core/services/network.service.mjs +100 -32
- package/esm2022/src/app/social/feed/feed.service.mjs +2 -2
- package/esm2022/src/environments/environment.mjs +2 -1
- package/fesm2022/sumaris-net.ngx-components.mjs +119 -65
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/graphql/graphql.service.d.ts +5 -9
- package/src/app/core/services/network.service.d.ts +28 -10
- package/src/app/shared/inputs.d.ts +1 -1
- package/src/assets/manifest.json +1 -1
|
@@ -109,6 +109,7 @@ export const environment = Object.freeze({
|
|
|
109
109
|
feed: {
|
|
110
110
|
jsonFeed: {
|
|
111
111
|
fr: [
|
|
112
|
+
'/api/feed.json',
|
|
112
113
|
'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/raw/master/doc/feed/feed-fr.json',
|
|
113
114
|
// Example with JsonFeed version 1 (and not 1.1)
|
|
114
115
|
//'https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/feed-fr.json',
|
|
@@ -123,4 +124,4 @@ export const environment = Object.freeze({
|
|
|
123
124
|
},
|
|
124
125
|
buildDate: new Date().toISOString(),
|
|
125
126
|
});
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUdyRTs7Ozs7R0FLRztBQUNILHNDQUFzQztBQUV0QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQWdCLE1BQU0sQ0FBQyxNQUFNLENBQWM7SUFDakUsSUFBSSxFQUFFLDZCQUE2QixFQUFFLGtDQUFrQztJQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLGtDQUFrQztJQUVsRCxvRUFBb0U7SUFDcEUsVUFBVSxFQUFFLElBQUk7SUFFaEIsMkRBQTJEO0lBQzNELCtCQUErQjtJQUUvQixPQUFPLEVBQUUsR0FBRztJQUNaLGFBQWEsRUFBRSxJQUFJO0lBQ25CLG9CQUFvQixFQUFFLE1BQU07SUFDNUIsaUJBQWlCLEVBQUUsYUFBYTtJQUNoQyxPQUFPLEVBQUUsS0FBSztJQUNkLGFBQWEsRUFBRSxJQUFJO0lBRW5CLHdCQUF3QjtJQUN4QixtQkFBbUI7SUFFbkIsc0JBQXNCO0lBQ3RCLFlBQVksRUFBRSxLQUFLO0lBRW5CLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFFaEIsY0FBYyxFQUFFLE9BQU87SUFFdkIseUJBQXlCLEVBQUUsSUFBSTtJQUUvQixxQkFBcUIsRUFBRSxJQUFJO0lBRTNCLFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxXQUFXO1FBQ2pCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFFRCxZQUFZLEVBQUU7UUFDWjtZQUNFLElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxjQUFjO1lBQ3BCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxjQUFjO1lBQ3BCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxjQUFjO1lBQ3BCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxlQUFlO1lBQ3JCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxZQUFZO1lBQ2xCLElBQUksRUFBRSxHQUFHO1NBQ1Y7UUFDRDtZQUNFLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsSUFBSSxFQUFFLEdBQUc7U0FDVjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixJQUFJLEVBQUUsR0FBRztTQUNWO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLElBQUksRUFBRSxHQUFHO1NBQ1Y7S0FDRjtJQUNELGNBQWMsRUFBRSxTQUFTO0lBQ3pCLHdCQUF3QixFQUFFLCtEQUErRDtJQUN6RixvQkFBb0IsRUFBRSxvREFBb0Q7SUFDMUUsd0JBQXdCLEVBQUUscUVBQXFFO0lBRS9GLFVBQVU7SUFDVixPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsWUFBWSxDQUFDO0tBQ3BIO0lBRUQsUUFBUTtJQUNSLFNBQVMsRUFBRSxxRUFBcUU7SUFDaEYsY0FBYyxFQUFFLDhFQUE4RTtJQUM5RixRQUFRLEVBQUUsSUFBSSxFQUFFLDhCQUE4QjtJQUM5QyxPQUFPLEVBQUUsZ0dBQWdHO0lBQ3pHLGdCQUFnQixFQUFFLGdHQUFnRztJQUNsSCxhQUFhLEVBQUUsNkdBQTZHO0lBRTVILGNBQWM7SUFDZCxpQkFBaUIsRUFBRTtRQUNqQixtQ0FBbUM7UUFDbkMsUUFBUSxFQUFFLG1CQUFtQjtRQUM3QixRQUFRLEVBQUUsT0FBTztLQUNsQjtJQUVELE9BQU8sRUFBRTtRQUNQLG1CQUFtQixFQUFFLElBQUk7UUFDekIsdUJBQXVCLEVBQUUsRUFBRTtLQUM1QjtJQUVELFlBQVksRUFBRTtRQUNaLG1CQUFtQixFQUFFLElBQUk7UUFDekIsdUJBQXVCLEVBQUUsRUFBRTtLQUM1QjtJQUVELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRTtZQUNSLEVBQUUsRUFBRTtnQkFDRixnQkFBZ0I7Z0JBQ2hCLHdHQUF3RztnQkFDeEcsZ0RBQWdEO2dCQUNoRCxrRkFBa0Y7Z0JBQ2xGLCtCQUErQjtnQkFDL0IseUZBQXlGO2FBQzFGO1lBRUQsRUFBRSxFQUFFLENBQUMsd0dBQXdHLENBQUM7U0FDL0c7UUFDRCxnQkFBZ0IsRUFBRSxJQUFJO1FBQ3RCLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDbEIsUUFBUSxFQUFFLENBQUM7S0FDWjtJQUVELFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtDQUNwQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgY2FuIGJlIHJlcGxhY2VkIGR1cmluZyBidWlsZCBieSB1c2luZyB0aGUgYGZpbGVSZXBsYWNlbWVudHNgIGFycmF5LlxuLy8gYG5nIGJ1aWxkIC0tLXByb2RgIHJlcGxhY2VzIGBlbnZpcm9ubWVudC50c2Agd2l0aCBgZW52aXJvbm1lbnQucHJvZC50c2AuXG4vLyBUaGUgbGlzdCBvZiBmaWxlIHJlcGxhY2VtZW50cyBjYW4gYmUgZm91bmQgaW4gYGFuZ3VsYXIuanNvbmAuXG5pbXBvcnQgeyBTdG9yYWdlRHJpdmVycyB9IGZyb20gJy4uL2FwcC9zaGFyZWQvc3RvcmFnZS9zdG9yYWdlLnV0aWxzJztcblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50LmNsYXNzJztcbi8qXG4gKiBJbiBkZXZlbG9wbWVudCBtb2RlLCB0byBpZ25vcmUgem9uZSByZWxhdGVkIGVycm9yIHN0YWNrIGZyYW1lcyBzdWNoIGFzXG4gKiBgem9uZS5ydW5gLCBgem9uZURlbGVnYXRlLmludm9rZVRhc2tgIGZvciBlYXNpZXIgZGVidWdnaW5nLCB5b3UgY2FuXG4gKiBpbXBvcnQgdGhlIGZvbGxvd2luZyBmaWxlLCBidXQgcGxlYXNlIGNvbW1lbnQgaXQgb3V0IGluIHByb2R1Y3Rpb24gbW9kZVxuICogYmVjYXVzZSBpdCB3aWxsIGhhdmUgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gdGhyb3cgZXJyb3JcbiAqL1xuLy9pbXBvcnQgJ3pvbmUuanMvcGx1Z2lucy96b25lLWVycm9yJztcblxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50OiBFbnZpcm9ubWVudCA9IE9iamVjdC5mcmVlemUoPEVudmlyb25tZW50PntcbiAgbmFtZTogJ0BzdW1hcmlzLW5ldC9uZ3gtY29tcG9uZW50cycsIC8vIG92ZXJyaWRkZW4gYnkgRU5WSVJPTk1FTlQgdG9rZW5cbiAgdmVyc2lvbjogJzEuMCcsIC8vIG92ZXJyaWRkZW4gYnkgRU5WSVJPTk1FTlQgdG9rZW5cblxuICAvLyBEbyBOT1Qgc2V0IHRvIGZhbHNlIC0gYmVjYXVzZSB0aGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBieSByZWxlYXNlc1xuICBwcm9kdWN0aW9uOiB0cnVlLFxuXG4gIC8vIERvIE5PVCBzZXQgLSBiZWNhdXNlIHRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIGJ5IHJlbGVhc2VzXG4gIC8vZXh0ZXJuYWxFbnZpcm9ubWVudFVybDogbnVsbCxcblxuICBiYXNlVXJsOiAnLycsXG4gIGRlZmF1bHRMb2NhbGU6ICdmcicsXG4gIGRlZmF1bHRMYXRMb25nRm9ybWF0OiAnRERNTScsXG4gIGFwb2xsb0ZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnLFxuICB1c2VIYXNoOiBmYWxzZSxcbiAgYWxsb3dEYXJrTW9kZTogdHJ1ZSxcblxuICAvL2RlZmF1bHRSb3V0ZTogJy9ob21lJyxcbiAgLy9lbmFibGVNZW51OiB0cnVlLFxuXG4gIC8vIEZJWE1FOiBlbmFibGUgY2FjaGVcbiAgcGVyc2lzdENhY2hlOiBmYWxzZSxcblxuICAvLyBUT0RPOiBtYWtlIHRoaXMgd29ya3NcbiAgLy9vZmZsaW5lOiB0cnVlLFxuXG4gIHBlZXJNaW5WZXJzaW9uOiAnMS44LjAnLFxuXG4gIGVuYWJsZVNlbGVjdFBlZXJCeUZlYXR1cmU6IHRydWUsXG5cbiAgc2VuZEFwcFZlcnNpb25IZWFkZXJzOiB0cnVlLFxuXG4gIGRlZmF1bHRQZWVyOiB7XG4gICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgcG9ydDogODA4MSxcbiAgfSxcblxuICBkZWZhdWx0UGVlcnM6IFtcbiAgICB7XG4gICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDgwODEsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjQ1JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjI0JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjI5JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjEwNycsXG4gICAgICBwb3J0OiA4MDgwLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3NpaC5zZmEuc2MnLFxuICAgICAgcG9ydDogNDQzLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3Rlc3Quc3VtYXJpcy5uZXQnLFxuICAgICAgcG9ydDogNDQzLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ29wZW4uc3VtYXJpcy5uZXQnLFxuICAgICAgcG9ydDogNDQzLFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3NlcnZlci5lLWlzLnBybycsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgXSxcbiAgZGVmYXVsdEFwcE5hbWU6ICdTVU1BUmlTJyxcbiAgZGVmYXVsdEFuZHJvaWRJbnN0YWxsVXJsOiAnaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPW5ldC5zdW1hcmlzLmFwcCcsXG4gIGRlZmF1bHRJT1NJbnN0YWxsVXJsOiAnaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS91cy9hcHAvc3VtYXJpcy9pZDY3MzY3NDc1MjMnLFxuICBkZWZhdWx0RGVza3RvcEluc3RhbGxVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9zdW1hcmlzLWFwcC8tL3JlbGVhc2VzJyxcblxuICAvLyBTdG9yYWdlXG4gIHN0b3JhZ2U6IHtcbiAgICBkcml2ZXJPcmRlcjogW1N0b3JhZ2VEcml2ZXJzLlNRTExpdGUsIFN0b3JhZ2VEcml2ZXJzLkluZGV4ZWREQiwgU3RvcmFnZURyaXZlcnMuV2ViU1FMLCBTdG9yYWdlRHJpdmVycy5Mb2NhbFN0b3JhZ2VdLFxuICB9LFxuXG4gIC8vIEFib3V0XG4gIHNvdXJjZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMnLFxuICByZXBvcnRJc3N1ZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9pc3N1ZXMnLFxuICBmb3J1bVVybDogbnVsbCwgLy8naHR0cHM6Ly9mb3J1bS5zdW1hcmlzLm5ldCcsXG4gIGhlbHBVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9zdW1hcmlzLWRvYy8tL2Jsb2IvbWFzdGVyL3VzZXItbWFudWFsL2luZGV4X2ZyLm1kJyxcbiAgcHJpdmFjeVBvbGljeVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL3N1bWFyaXMtYXBwLy0vcmF3L21hc3Rlci9kb2MvcHJpdmFjeV9wb2xpY3lfZnIubWQnLFxuICB0ZXJtc09mVXNlVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1hcHAvLS9yYXcvbWFzdGVyL2RvYy90ZXJtc19vZl91c2VfZnIubWQ/cmVmX3R5cGU9aGVhZHMnLFxuXG4gIC8vIERldmVsb3BtZW50XG4gIGRlZmF1bHRBdXRoVmFsdWVzOiB7XG4gICAgLy8gVG9rZW4gYXV0aCAodXNpbmcgUGVyc29uLnB1YmtleSlcbiAgICB1c2VybmFtZTogJ2FkbWluQHN1bWFyaXMubmV0JyxcbiAgICBwYXNzd29yZDogJ2FkbWluJyxcbiAgfSxcblxuICBhY2NvdW50OiB7XG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlczogdHJ1ZSxcbiAgICBsaXN0ZW5JbnRlcnZhbEluU2Vjb25kczogNjAsXG4gIH0sXG5cbiAgZW50aXR5RWRpdG9yOiB7XG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlczogdHJ1ZSxcbiAgICBsaXN0ZW5JbnRlcnZhbEluU2Vjb25kczogNjAsXG4gIH0sXG5cbiAgZmVlZDoge1xuICAgIGpzb25GZWVkOiB7XG4gICAgICBmcjogW1xuICAgICAgICAnL2FwaS9mZWVkLmpzb24nLFxuICAgICAgICAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvbmd4LXN1bWFyaXMtY29tcG9uZW50cy8tL3Jhdy9tYXN0ZXIvZG9jL2ZlZWQvZmVlZC1mci5qc29uJyxcbiAgICAgICAgLy8gRXhhbXBsZSB3aXRoIEpzb25GZWVkIHZlcnNpb24gMSAoYW5kIG5vdCAxLjEpXG4gICAgICAgIC8vJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kdW5pdGVyL2Nlc2l1bS9tYXN0ZXIvZG9jL2ZlZWQvZmVlZC1mci5qc29uJyxcbiAgICAgICAgLy8gRXhhbXBsZSB3aXRoIGRpc2NvdXJzZSBBUEkgOlxuICAgICAgICAvLydodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZHVuaXRlci9jZXNpdW0vbWFzdGVyL2RvYy9mZWVkLzEuMS9mZWVkLWZyLUZSLmpzb24nLFxuICAgICAgXSxcblxuICAgICAgZW46IFsnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvbmd4LXN1bWFyaXMtY29tcG9uZW50cy8tL3Jhdy9tYXN0ZXIvZG9jL2ZlZWQvZmVlZC1lbi5qc29uJ10sXG4gICAgfSxcbiAgICBtYXhDb250ZW50TGVuZ3RoOiAxMDAwLFxuICAgIG1heEFnZUluTW9udGhzOiAtMSxcbiAgICBtYXhDb3VudDogMyxcbiAgfSxcblxuICBidWlsZERhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbn0pO1xuIl19
|
|
@@ -13135,6 +13135,7 @@ const environment = Object.freeze({
|
|
|
13135
13135
|
feed: {
|
|
13136
13136
|
jsonFeed: {
|
|
13137
13137
|
fr: [
|
|
13138
|
+
'/api/feed.json',
|
|
13138
13139
|
'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/raw/master/doc/feed/feed-fr.json',
|
|
13139
13140
|
// Example with JsonFeed version 1 (and not 1.1)
|
|
13140
13141
|
//'https://raw.githubusercontent.com/duniter/cesium/master/doc/feed/feed-fr.json',
|
|
@@ -13967,7 +13968,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
13967
13968
|
type: Injectable,
|
|
13968
13969
|
args: [{
|
|
13969
13970
|
providedIn: 'root',
|
|
13970
|
-
|
|
13971
|
+
deps: [APP_LOCALES],
|
|
13971
13972
|
}]
|
|
13972
13973
|
}], ctorParameters: () => [{ type: i2$1.Platform }, { type: i1$1.TranslateService }, { type: i2$2.Storage }, { type: Environment, decorators: [{
|
|
13973
13974
|
type: Inject,
|
|
@@ -19649,12 +19650,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
19649
19650
|
type: Optional
|
|
19650
19651
|
}] }] });
|
|
19651
19652
|
|
|
19653
|
+
const PEER_URL_REGEXP = /^(http|https):\/\/[^ "?#@]+$/;
|
|
19654
|
+
const NETWORK_DEFAULT_CONNECTION_TIMEOUT = 10000; // 10s - /!\ should be high (e.g. for poor connection)
|
|
19652
19655
|
const NetworkRefreshTimerPeriod = {
|
|
19653
19656
|
MOBILE: 1000 * 60 * 10 /* every 10 min */,
|
|
19654
19657
|
DESKTOP: 1000 * 60 * 5 /* every 5 min */,
|
|
19655
19658
|
};
|
|
19656
|
-
const PEER_URL_REGEXP = /^(http|https):\/\/[^ "?#@]+$/;
|
|
19657
|
-
const NETWORK_DEFAULT_CONNECTION_TIMEOUT = 10000; // 10s - /!\ should be high (e.g. for poor connection)
|
|
19658
19659
|
/* -- DEV only (to debug refresh timer)
|
|
19659
19660
|
NetworkRefreshTimerPeriod.MOBILE = 1000;
|
|
19660
19661
|
NetworkRefreshTimerPeriod.DESKTOP = 1000; */
|
|
@@ -19680,6 +19681,7 @@ class NetworkService extends StartableObservableService {
|
|
|
19680
19681
|
_deviceConnectionType;
|
|
19681
19682
|
_forceOffline;
|
|
19682
19683
|
_connectionTimeout;
|
|
19684
|
+
_connectionParams = {};
|
|
19683
19685
|
_listeners = {};
|
|
19684
19686
|
get online() {
|
|
19685
19687
|
return this.connectionType !== 'none';
|
|
@@ -19708,6 +19710,9 @@ class NetworkService extends StartableObservableService {
|
|
|
19708
19710
|
get connectionTimeout() {
|
|
19709
19711
|
return this._connectionTimeout;
|
|
19710
19712
|
}
|
|
19713
|
+
get connectionParams() {
|
|
19714
|
+
return this._connectionParams;
|
|
19715
|
+
}
|
|
19711
19716
|
constructor(_document, platform, modalCtrl, storage, settings, cache, http, environment, loggingService, translate, toastController) {
|
|
19712
19717
|
super(platform);
|
|
19713
19718
|
this._document = _document;
|
|
@@ -20026,15 +20031,47 @@ class NetworkService extends StartableObservableService {
|
|
|
20026
20031
|
console.debug(`[network] All cache cleared, in ${Date.now() - now}ms`);
|
|
20027
20032
|
});
|
|
20028
20033
|
}
|
|
20029
|
-
|
|
20030
|
-
|
|
20031
|
-
|
|
20032
|
-
|
|
20033
|
-
|
|
20034
|
+
/**
|
|
20035
|
+
* Sends a GET request to the specified path and returns a promise of the response.
|
|
20036
|
+
*
|
|
20037
|
+
* @param {string} path The endpoint path to send the GET request to.
|
|
20038
|
+
* @param {Object} [opts] Optional parameters for the GET request.
|
|
20039
|
+
* @param {HttpHeaders | Object} [opts.headers] Headers to include in the request. Can be an instance of HttpHeaders or an object with header key-value pairs.
|
|
20040
|
+
* @param {'json'} [opts.responseType] The type of response expected. Defaults to 'json'.
|
|
20041
|
+
* @param {boolean} [opts.nocache] If true, indicates that the response should not be cached.
|
|
20042
|
+
* @param {number} [opts.timeout] The timeout for the request in milliseconds.
|
|
20043
|
+
* @return {Promise<T>} A promise that resolves with the response of type T.
|
|
20044
|
+
*/
|
|
20045
|
+
get(path, opts) {
|
|
20046
|
+
const url = this.getUri(path);
|
|
20047
|
+
// Add App headers only if on same peer
|
|
20048
|
+
if (this.peer && url?.startsWith(this.peer.url)) {
|
|
20049
|
+
opts = this.addAppHeaders(opts);
|
|
20034
20050
|
}
|
|
20035
|
-
|
|
20036
|
-
|
|
20037
|
-
|
|
20051
|
+
return HttpUtils.getJson(this.http, url, opts);
|
|
20052
|
+
}
|
|
20053
|
+
async setAuthToken(token) {
|
|
20054
|
+
if (token) {
|
|
20055
|
+
console.debug('[network] Apply token authentication to headers');
|
|
20056
|
+
this._connectionParams.authToken = token;
|
|
20057
|
+
}
|
|
20058
|
+
// Clean auth token
|
|
20059
|
+
else if (this._connectionParams.authToken) {
|
|
20060
|
+
console.debug('[network] Remove token authentication from headers');
|
|
20061
|
+
delete this._connectionParams.authToken;
|
|
20062
|
+
await this.clearCache();
|
|
20063
|
+
}
|
|
20064
|
+
}
|
|
20065
|
+
async setAuthBasic(basic) {
|
|
20066
|
+
if (basic) {
|
|
20067
|
+
console.debug('[graphql] Apply basic authentication to headers');
|
|
20068
|
+
this._connectionParams.authBasic = basic;
|
|
20069
|
+
}
|
|
20070
|
+
// Clean auth basic
|
|
20071
|
+
else if (this._connectionParams.authBasic) {
|
|
20072
|
+
console.debug('[graphql] Remove basic authentication from headers');
|
|
20073
|
+
delete this._connectionParams.authBasic;
|
|
20074
|
+
await this.clearCache();
|
|
20038
20075
|
}
|
|
20039
20076
|
}
|
|
20040
20077
|
/* -- protected functions -- */
|
|
@@ -20168,16 +20205,10 @@ class NetworkService extends StartableObservableService {
|
|
|
20168
20205
|
this._timerSubscription.add(() => console.debug('[network] Refresh timer stopped'));
|
|
20169
20206
|
}
|
|
20170
20207
|
async getText(path, opts) {
|
|
20171
|
-
return HttpUtils.getText(this.http, this.getUri(path), this.
|
|
20172
|
-
}
|
|
20173
|
-
get(path, opts) {
|
|
20174
|
-
return HttpUtils.getJson(this.http, this.getUri(path), this.addVersionHeader(opts));
|
|
20208
|
+
return HttpUtils.getText(this.http, this.getUri(path), this.addAppHeaders(opts));
|
|
20175
20209
|
}
|
|
20176
20210
|
/* -- Protected methods -- */
|
|
20177
|
-
|
|
20178
|
-
// Only add version headers if enabled in environment
|
|
20179
|
-
if (!this.environment.sendAppVersionHeaders)
|
|
20180
|
-
return opts;
|
|
20211
|
+
addAppHeaders(opts) {
|
|
20181
20212
|
const updatedOpts = { ...opts };
|
|
20182
20213
|
if (!updatedOpts.headers) {
|
|
20183
20214
|
updatedOpts.headers = {};
|
|
@@ -20185,25 +20216,63 @@ class NetworkService extends StartableObservableService {
|
|
|
20185
20216
|
// Handle HttpHeaders instance
|
|
20186
20217
|
if (updatedOpts.headers instanceof HttpHeaders) {
|
|
20187
20218
|
let headers = updatedOpts.headers;
|
|
20188
|
-
// Add
|
|
20189
|
-
|
|
20190
|
-
|
|
20191
|
-
|
|
20192
|
-
|
|
20193
|
-
if (this.
|
|
20194
|
-
|
|
20219
|
+
// Add Authorization header
|
|
20220
|
+
const authorization = [];
|
|
20221
|
+
if (this._connectionParams.authToken) {
|
|
20222
|
+
authorization.push(`token ${this._connectionParams.authToken}`);
|
|
20223
|
+
}
|
|
20224
|
+
if (this._connectionParams.authBasic) {
|
|
20225
|
+
authorization.push(`Basic ${this._connectionParams.authBasic}`);
|
|
20226
|
+
}
|
|
20227
|
+
if (authorization.length > 0) {
|
|
20228
|
+
headers = headers.append('Authorization', authorization);
|
|
20229
|
+
}
|
|
20230
|
+
// Add Accept-Language header using settings.locale
|
|
20231
|
+
const locale = this.settings.locale;
|
|
20232
|
+
if (locale) {
|
|
20233
|
+
headers = headers.append('Accept-Language', locale);
|
|
20234
|
+
}
|
|
20235
|
+
// Only add version headers if enabled in environment
|
|
20236
|
+
if (this.environment.sendAppVersionHeaders) {
|
|
20237
|
+
// Add application version header
|
|
20238
|
+
if (this.environment.version) {
|
|
20239
|
+
headers = headers.append('X-App-Version', this.environment.version);
|
|
20240
|
+
}
|
|
20241
|
+
// Add application name header
|
|
20242
|
+
if (this.environment.defaultAppName) {
|
|
20243
|
+
headers = headers.append('X-App-Name', this.environment.defaultAppName);
|
|
20244
|
+
}
|
|
20195
20245
|
}
|
|
20196
20246
|
updatedOpts.headers = headers;
|
|
20197
20247
|
}
|
|
20198
20248
|
else {
|
|
20199
20249
|
// Handle plain object headers
|
|
20200
|
-
// Add
|
|
20201
|
-
|
|
20202
|
-
|
|
20203
|
-
|
|
20204
|
-
|
|
20205
|
-
if (this.
|
|
20206
|
-
|
|
20250
|
+
// Add Authorization header
|
|
20251
|
+
const authorization = [];
|
|
20252
|
+
if (this._connectionParams.authToken) {
|
|
20253
|
+
authorization.push(`token ${this._connectionParams.authToken}`);
|
|
20254
|
+
}
|
|
20255
|
+
if (this._connectionParams.authBasic) {
|
|
20256
|
+
authorization.push(`Basic ${this._connectionParams.authBasic}`);
|
|
20257
|
+
}
|
|
20258
|
+
if (authorization.length > 0) {
|
|
20259
|
+
updatedOpts.headers['Authorization'] = authorization;
|
|
20260
|
+
}
|
|
20261
|
+
// Add Accept-Language header using settings.locale
|
|
20262
|
+
const locale = this.settings.locale;
|
|
20263
|
+
if (locale) {
|
|
20264
|
+
updatedOpts.headers['Accept-Language'] = locale;
|
|
20265
|
+
}
|
|
20266
|
+
// Only add version headers if enabled in environment
|
|
20267
|
+
if (this.environment.sendAppVersionHeaders) {
|
|
20268
|
+
// Add application version header
|
|
20269
|
+
if (this.environment.version) {
|
|
20270
|
+
updatedOpts.headers['X-App-Version'] = this.environment.version;
|
|
20271
|
+
}
|
|
20272
|
+
// Add application name header
|
|
20273
|
+
if (this.environment.defaultAppName) {
|
|
20274
|
+
updatedOpts.headers['X-App-Name'] = this.environment.defaultAppName;
|
|
20275
|
+
}
|
|
20207
20276
|
}
|
|
20208
20277
|
}
|
|
20209
20278
|
return updatedOpts;
|
|
@@ -20212,7 +20281,7 @@ class NetworkService extends StartableObservableService {
|
|
|
20212
20281
|
let uri = path;
|
|
20213
20282
|
// If path is not an URI: prepend with peer URL
|
|
20214
20283
|
if (!uri.startsWith('http://') && !uri.startsWith('https://')) {
|
|
20215
|
-
let peerUrl = this.peer
|
|
20284
|
+
let peerUrl = this.peer?.url;
|
|
20216
20285
|
// Remove trailing slash
|
|
20217
20286
|
if (peerUrl.endsWith('/')) {
|
|
20218
20287
|
peerUrl = peerUrl.substring(0, peerUrl.length - 1);
|
|
@@ -20319,13 +20388,13 @@ class GraphqlService extends StartableService {
|
|
|
20319
20388
|
httpLink;
|
|
20320
20389
|
network;
|
|
20321
20390
|
storage;
|
|
20391
|
+
settings;
|
|
20322
20392
|
environment;
|
|
20323
20393
|
typePolicies;
|
|
20324
20394
|
fragments;
|
|
20325
20395
|
_networkStatusChanged$;
|
|
20326
20396
|
httpParams;
|
|
20327
20397
|
wsParams;
|
|
20328
|
-
connectionParams = {};
|
|
20329
20398
|
_defaultFetchPolicy;
|
|
20330
20399
|
onNetworkError = new Subject();
|
|
20331
20400
|
customErrors = {};
|
|
@@ -20339,13 +20408,17 @@ class GraphqlService extends StartableService {
|
|
|
20339
20408
|
get defaultFetchPolicy() {
|
|
20340
20409
|
return this._defaultFetchPolicy;
|
|
20341
20410
|
}
|
|
20342
|
-
|
|
20411
|
+
get connectionParams() {
|
|
20412
|
+
return this.network.connectionParams;
|
|
20413
|
+
}
|
|
20414
|
+
constructor(platform, apollo, httpLink, network, storage, settings, environment, typePolicies, fragments) {
|
|
20343
20415
|
super(platform); // Wait platform
|
|
20344
20416
|
this.platform = platform;
|
|
20345
20417
|
this.apollo = apollo;
|
|
20346
20418
|
this.httpLink = httpLink;
|
|
20347
20419
|
this.network = network;
|
|
20348
20420
|
this.storage = storage;
|
|
20421
|
+
this.settings = settings;
|
|
20349
20422
|
this.environment = environment;
|
|
20350
20423
|
this.typePolicies = typePolicies;
|
|
20351
20424
|
this.fragments = fragments;
|
|
@@ -20358,30 +20431,6 @@ class GraphqlService extends StartableService {
|
|
|
20358
20431
|
.pipe(throttleTime(300), filter(() => this.network.online), mergeMap(() => this.network.checkPeerAlive()), filter((alive) => !alive))
|
|
20359
20432
|
.subscribe(() => this.network.setForceOffline(true, { showToast: true }));
|
|
20360
20433
|
}
|
|
20361
|
-
async setAuthToken(token) {
|
|
20362
|
-
if (token) {
|
|
20363
|
-
console.debug('[graphql] Apply token authentication to headers');
|
|
20364
|
-
this.connectionParams.authToken = token;
|
|
20365
|
-
}
|
|
20366
|
-
// Clean auth token
|
|
20367
|
-
else if (this.connectionParams.authToken) {
|
|
20368
|
-
console.debug('[graphql] Remove token authentication from headers');
|
|
20369
|
-
delete this.connectionParams.authToken;
|
|
20370
|
-
await this.clearCache();
|
|
20371
|
-
}
|
|
20372
|
-
}
|
|
20373
|
-
async setAuthBasic(basic) {
|
|
20374
|
-
if (basic) {
|
|
20375
|
-
console.debug('[graphql] Apply basic authentication to headers');
|
|
20376
|
-
this.connectionParams.authBasic = basic;
|
|
20377
|
-
}
|
|
20378
|
-
// Clean auth basic
|
|
20379
|
-
else if (this.connectionParams.authBasic) {
|
|
20380
|
-
console.debug('[graphql] Remove basic authentication from headers');
|
|
20381
|
-
delete this.connectionParams.authBasic;
|
|
20382
|
-
await this.clearCache();
|
|
20383
|
-
}
|
|
20384
|
-
}
|
|
20385
20434
|
/**
|
|
20386
20435
|
* Allow to add a field resolver
|
|
20387
20436
|
* (see doc: https://www.apollographql.com/docs/react/data/local-state/#handling-client-fields-with-resolvers)
|
|
@@ -20826,6 +20875,11 @@ class GraphqlService extends StartableService {
|
|
|
20826
20875
|
if (authorization.length > 0) {
|
|
20827
20876
|
headers = headers.append('Authorization', authorization);
|
|
20828
20877
|
}
|
|
20878
|
+
// Add Accept-Language header using settings.locale
|
|
20879
|
+
const locale = this.settings.locale;
|
|
20880
|
+
if (locale) {
|
|
20881
|
+
headers = headers.append('Accept-Language', locale);
|
|
20882
|
+
}
|
|
20829
20883
|
// Add application version headers (if enabled)
|
|
20830
20884
|
if (this.environment.sendAppVersionHeaders) {
|
|
20831
20885
|
if (this.environment.version) {
|
|
@@ -21049,7 +21103,7 @@ class GraphqlService extends StartableService {
|
|
|
21049
21103
|
}
|
|
21050
21104
|
return undefined;
|
|
21051
21105
|
}
|
|
21052
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraphqlService, deps: [{ token: i2$1.Platform }, { token: i2$5.Apollo }, { token: i3$4.HttpLink }, { token: NetworkService }, { token: StorageService }, { token: ENVIRONMENT }, { token: APP_GRAPHQL_TYPE_POLICIES, optional: true }, { token: APP_GRAPHQL_FRAGMENTS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
21106
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraphqlService, deps: [{ token: i2$1.Platform }, { token: i2$5.Apollo }, { token: i3$4.HttpLink }, { token: NetworkService }, { token: StorageService }, { token: LocalSettingsService }, { token: ENVIRONMENT }, { token: APP_GRAPHQL_TYPE_POLICIES, optional: true }, { token: APP_GRAPHQL_FRAGMENTS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
21053
21107
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraphqlService, providedIn: 'root' });
|
|
21054
21108
|
}
|
|
21055
21109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraphqlService, decorators: [{
|
|
@@ -21057,7 +21111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
21057
21111
|
args: [{
|
|
21058
21112
|
providedIn: 'root',
|
|
21059
21113
|
}]
|
|
21060
|
-
}], ctorParameters: () => [{ type: i2$1.Platform }, { type: i2$5.Apollo }, { type: i3$4.HttpLink }, { type: NetworkService }, { type: StorageService }, { type: Environment, decorators: [{
|
|
21114
|
+
}], ctorParameters: () => [{ type: i2$1.Platform }, { type: i2$5.Apollo }, { type: i3$4.HttpLink }, { type: NetworkService }, { type: StorageService }, { type: LocalSettingsService }, { type: Environment, decorators: [{
|
|
21061
21115
|
type: Inject,
|
|
21062
21116
|
args: [ENVIRONMENT]
|
|
21063
21117
|
}] }, { type: undefined, decorators: [{
|
|
@@ -23173,8 +23227,8 @@ class AccountService extends BaseGraphqlService {
|
|
|
23173
23227
|
this._remoteLocalSettingsKeys = options?.remoteLocalSettingsKeys || [];
|
|
23174
23228
|
this.resetData();
|
|
23175
23229
|
// Send auth token to the graphql layer, when changed
|
|
23176
|
-
this.onAuthTokenChange.subscribe((token) => this.
|
|
23177
|
-
this.onAuthBasicChange.subscribe((basic) => this.
|
|
23230
|
+
this.onAuthTokenChange.subscribe((token) => this.network.setAuthToken(token));
|
|
23231
|
+
this.onAuthBasicChange.subscribe((basic) => this.network.setAuthBasic(basic));
|
|
23178
23232
|
// Force network to wait account service, after getting connection to the peer
|
|
23179
23233
|
this.network.on('beforeTryOnlineFinish', async (online) => {
|
|
23180
23234
|
// If online, wait a full restart, because it can force offline mode
|
|
@@ -33795,7 +33849,7 @@ class FeedService extends StartableService {
|
|
|
33795
33849
|
const feeds = await Promise.all((urls || []).map(async (url) => {
|
|
33796
33850
|
try {
|
|
33797
33851
|
// Get JSON
|
|
33798
|
-
const json = await this.network.
|
|
33852
|
+
const json = await this.network.get(url);
|
|
33799
33853
|
console.debug(`${this._logPrefix}Loaded JSON from ${url}`, json);
|
|
33800
33854
|
// Resolve feed
|
|
33801
33855
|
return await this.resolveFeed(json, url, opts);
|