incyclist-services 1.7.26 → 1.7.28
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/lib/cjs/devices/page/service.js +2 -1
- package/lib/cjs/routes/base/utils/route.js +0 -1
- package/lib/cjs/routes/list/loaders/api.js +12 -8
- package/lib/cjs/routes/list/service.js +36 -10
- package/lib/cjs/routes/page/service.js +3 -3
- package/lib/esm/devices/page/service.js +2 -1
- package/lib/esm/routes/base/utils/route.js +0 -1
- package/lib/esm/routes/list/loaders/api.js +12 -8
- package/lib/esm/routes/list/service.js +36 -10
- package/lib/esm/routes/page/service.js +3 -3
- package/lib/types/routes/list/service.d.ts +4 -2
- package/lib/types/routes/types.d.ts +1 -0
- package/package.json +8 -8
|
@@ -218,7 +218,8 @@ let DevicesPageService = (() => {
|
|
|
218
218
|
enableInterface(i) { }
|
|
219
219
|
disableInterface(i) { }
|
|
220
220
|
reconnectInterface(i) { }
|
|
221
|
-
refreshInterface(i) {
|
|
221
|
+
refreshInterface(i) {
|
|
222
|
+
}
|
|
222
223
|
closeInterfaceSettings() {
|
|
223
224
|
this.openedInterfaceSettings = undefined;
|
|
224
225
|
this.interfaceSettingsObserver?.stop();
|
|
@@ -310,7 +310,6 @@ const getTotalDistance = (route) => {
|
|
|
310
310
|
};
|
|
311
311
|
exports.getTotalDistance = getTotalDistance;
|
|
312
312
|
const getRouteHash = (route) => {
|
|
313
|
-
console.log('# getRouteHash', 'crypto binding:', getCryptoBinding());
|
|
314
313
|
const cryptoImpl = getCryptoBinding() ?? require('crypto');
|
|
315
314
|
let json;
|
|
316
315
|
if (!route?.points) {
|
|
@@ -11,7 +11,7 @@ const route_1 = require("../../base/model/route");
|
|
|
11
11
|
const route_2 = require("../../base/utils/route");
|
|
12
12
|
const db_1 = require("./db");
|
|
13
13
|
const types_1 = require("./types");
|
|
14
|
-
const
|
|
14
|
+
const sleep_1 = require("../../../utils/sleep");
|
|
15
15
|
const valid = (v) => (v !== undefined && v !== null);
|
|
16
16
|
class ApiError extends Error {
|
|
17
17
|
_type;
|
|
@@ -67,10 +67,12 @@ class RoutesApiLoader extends types_1.Loader {
|
|
|
67
67
|
await this.processRouteFromApi(p.value[j], loadDetailRequired);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
|
|
70
|
+
this.loadObserver.emit('loaded');
|
|
71
|
+
if (loadDetailRequired.length > 0) {
|
|
71
72
|
await this.loadDetails(loadDetailRequired, true);
|
|
73
|
+
}
|
|
72
74
|
this.loadObserver.emit('done');
|
|
73
|
-
await (0,
|
|
75
|
+
await (0, sleep_1.sleep)(1);
|
|
74
76
|
this.loadObserver.stop();
|
|
75
77
|
delete this.loadObserver;
|
|
76
78
|
}
|
|
@@ -111,10 +113,11 @@ class RoutesApiLoader extends types_1.Loader {
|
|
|
111
113
|
this.verifyRouteHash(route);
|
|
112
114
|
}
|
|
113
115
|
if (!existing) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
this.emitRouteAdded(route);
|
|
117
|
+
items.push({ route, added: true });
|
|
118
|
+
if (isComplete) {
|
|
119
|
+
this.save(route, false);
|
|
120
|
+
}
|
|
118
121
|
}
|
|
119
122
|
else {
|
|
120
123
|
this.save(route, true);
|
|
@@ -123,6 +126,7 @@ class RoutesApiLoader extends types_1.Loader {
|
|
|
123
126
|
}
|
|
124
127
|
}
|
|
125
128
|
stopLoad() {
|
|
129
|
+
this.loadObserver?.stop();
|
|
126
130
|
delete this.loadObserver;
|
|
127
131
|
}
|
|
128
132
|
getDescriptionFromDB(id) {
|
|
@@ -182,7 +186,7 @@ class RoutesApiLoader extends types_1.Loader {
|
|
|
182
186
|
});
|
|
183
187
|
for (const element of success) {
|
|
184
188
|
const item = element;
|
|
185
|
-
this.emitRouteEvents(
|
|
189
|
+
this.emitRouteEvents(item.added === true, item.route);
|
|
186
190
|
await this.verifyCountry(item.route);
|
|
187
191
|
this.verifyRouteHash(item.route);
|
|
188
192
|
if (save)
|
|
@@ -67,6 +67,8 @@ const appstate_1 = require("../../appstate");
|
|
|
67
67
|
const i18n_1 = require("../../i18n");
|
|
68
68
|
const clone_1 = __importDefault(require("../../utils/clone"));
|
|
69
69
|
const SYNC_INTERVAL = 5 * 60 * 1000;
|
|
70
|
+
const PRELOAD_DESKTOP = 20;
|
|
71
|
+
const PRELOAD_MOBILE = 10;
|
|
70
72
|
let RouteListService = (() => {
|
|
71
73
|
let _classDecorators = [types_1.Singleton];
|
|
72
74
|
let _classDescriptor;
|
|
@@ -79,6 +81,7 @@ let RouteListService = (() => {
|
|
|
79
81
|
let _getAppState_decorators;
|
|
80
82
|
let _getAppsService_decorators;
|
|
81
83
|
let _getUnitConverter_decorators;
|
|
84
|
+
let _getBindings_decorators;
|
|
82
85
|
var RouteListService = class extends _classSuper {
|
|
83
86
|
static { _classThis = this; }
|
|
84
87
|
static {
|
|
@@ -88,11 +91,13 @@ let RouteListService = (() => {
|
|
|
88
91
|
_getAppState_decorators = [decorators_1.Injectable];
|
|
89
92
|
_getAppsService_decorators = [decorators_1.Injectable];
|
|
90
93
|
_getUnitConverter_decorators = [decorators_1.Injectable];
|
|
94
|
+
_getBindings_decorators = [decorators_1.Injectable];
|
|
91
95
|
__esDecorate(this, null, _getUserSettings_decorators, { kind: "method", name: "getUserSettings", static: false, private: false, access: { has: obj => "getUserSettings" in obj, get: obj => obj.getUserSettings }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
92
96
|
__esDecorate(this, null, _getRouteSyncFactory_decorators, { kind: "method", name: "getRouteSyncFactory", static: false, private: false, access: { has: obj => "getRouteSyncFactory" in obj, get: obj => obj.getRouteSyncFactory }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
93
97
|
__esDecorate(this, null, _getAppState_decorators, { kind: "method", name: "getAppState", static: false, private: false, access: { has: obj => "getAppState" in obj, get: obj => obj.getAppState }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
94
98
|
__esDecorate(this, null, _getAppsService_decorators, { kind: "method", name: "getAppsService", static: false, private: false, access: { has: obj => "getAppsService" in obj, get: obj => obj.getAppsService }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
95
99
|
__esDecorate(this, null, _getUnitConverter_decorators, { kind: "method", name: "getUnitConverter", static: false, private: false, access: { has: obj => "getUnitConverter" in obj, get: obj => obj.getUnitConverter }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
100
|
+
__esDecorate(this, null, _getBindings_decorators, { kind: "method", name: "getBindings", static: false, private: false, access: { has: obj => "getBindings" in obj, get: obj => obj.getBindings }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
96
101
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
97
102
|
RouteListService = _classThis = _classDescriptor.value;
|
|
98
103
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -321,7 +326,8 @@ let RouteListService = (() => {
|
|
|
321
326
|
routes.sort((a, b) => a.title > b.title ? 1 : -1);
|
|
322
327
|
const units = this.getUnitConverter().getDefaultUnits();
|
|
323
328
|
if (!filters) {
|
|
324
|
-
|
|
329
|
+
const cards = routes.map(r => this.getCard(r.id));
|
|
330
|
+
return { routes, cards, filters, observer: this.observer, units };
|
|
325
331
|
}
|
|
326
332
|
if (!filters.includeDeleted)
|
|
327
333
|
routes = routes.filter(r => !r?.isDeleted);
|
|
@@ -494,6 +500,9 @@ let RouteListService = (() => {
|
|
|
494
500
|
}
|
|
495
501
|
}
|
|
496
502
|
preload() {
|
|
503
|
+
if (this.preloadObserver) {
|
|
504
|
+
return this.preloadObserver;
|
|
505
|
+
}
|
|
497
506
|
try {
|
|
498
507
|
this.logEvent({ message: 'preload route list' });
|
|
499
508
|
if (!this.isStillLoading()) {
|
|
@@ -504,23 +513,26 @@ let RouteListService = (() => {
|
|
|
504
513
|
this.initialized = true;
|
|
505
514
|
this.logEvent({ message: 'preload route list completed' });
|
|
506
515
|
this.updateRepoStats();
|
|
507
|
-
|
|
508
|
-
|
|
516
|
+
(0, sleep_1.sleep)(0).then(() => {
|
|
517
|
+
delete this.preloadObserver;
|
|
518
|
+
this.emit('load-done');
|
|
519
|
+
this.emitLists('loaded', { log: true });
|
|
520
|
+
});
|
|
509
521
|
})
|
|
510
522
|
.catch((err) => {
|
|
511
523
|
this.logError(err, 'preload');
|
|
512
524
|
this.preloadObserver?.stop();
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
525
|
+
(0, sleep_1.sleep)(0).then(() => {
|
|
526
|
+
delete this.preloadObserver;
|
|
527
|
+
this.emit('load-done');
|
|
528
|
+
});
|
|
517
529
|
});
|
|
518
530
|
}
|
|
519
531
|
}
|
|
520
532
|
catch (err) {
|
|
521
533
|
this.logError(err, 'preload');
|
|
522
534
|
this.preloadObserver?.stop();
|
|
523
|
-
|
|
535
|
+
(0, sleep_1.sleep)(0).then(() => { delete this.preloadObserver; });
|
|
524
536
|
}
|
|
525
537
|
return this.preloadObserver;
|
|
526
538
|
}
|
|
@@ -780,8 +792,9 @@ let RouteListService = (() => {
|
|
|
780
792
|
}
|
|
781
793
|
addRoute(route, source = 'system') {
|
|
782
794
|
this.routes.push(route);
|
|
783
|
-
if (route.description?.isDeleted)
|
|
795
|
+
if (route.description?.isDeleted) {
|
|
784
796
|
return;
|
|
797
|
+
}
|
|
785
798
|
if (!route.description?.isDeleted) {
|
|
786
799
|
if (source === 'user') {
|
|
787
800
|
this.logEvent({ message: 'route added', route: route.description.title, source: route.description.source });
|
|
@@ -845,8 +858,9 @@ let RouteListService = (() => {
|
|
|
845
858
|
.catch(() => {
|
|
846
859
|
});
|
|
847
860
|
};
|
|
861
|
+
const maxPreload = this.isMobile() ? PRELOAD_MOBILE : PRELOAD_DESKTOP;
|
|
848
862
|
cards.forEach(card => {
|
|
849
|
-
if (!card || promises.length >
|
|
863
|
+
if (!card || promises.length > maxPreload)
|
|
850
864
|
return;
|
|
851
865
|
if (!card.getRouteData()) {
|
|
852
866
|
promises.push(loadDetails(card));
|
|
@@ -977,6 +991,7 @@ let RouteListService = (() => {
|
|
|
977
991
|
const update = this.update.bind(this);
|
|
978
992
|
observer.on('route.added', add);
|
|
979
993
|
observer.on('route.updated', update);
|
|
994
|
+
observer.on('loaded', done);
|
|
980
995
|
observer.on('done', done);
|
|
981
996
|
});
|
|
982
997
|
}
|
|
@@ -1256,6 +1271,14 @@ let RouteListService = (() => {
|
|
|
1256
1271
|
}
|
|
1257
1272
|
}
|
|
1258
1273
|
}
|
|
1274
|
+
isMobile() {
|
|
1275
|
+
const { appInfo } = this.getBindings();
|
|
1276
|
+
if (!appInfo) {
|
|
1277
|
+
return false;
|
|
1278
|
+
}
|
|
1279
|
+
const channel = appInfo?.getChannel();
|
|
1280
|
+
return channel === 'mobile';
|
|
1281
|
+
}
|
|
1259
1282
|
getUserSettings() {
|
|
1260
1283
|
return (0, settings_1.useUserSettings)();
|
|
1261
1284
|
}
|
|
@@ -1271,6 +1294,9 @@ let RouteListService = (() => {
|
|
|
1271
1294
|
getUnitConverter() {
|
|
1272
1295
|
return (0, i18n_1.useUnitConverter)();
|
|
1273
1296
|
}
|
|
1297
|
+
getBindings() {
|
|
1298
|
+
return (0, api_1.getBindings)();
|
|
1299
|
+
}
|
|
1274
1300
|
reset() {
|
|
1275
1301
|
super.reset();
|
|
1276
1302
|
if (this.syncInfo?.iv) {
|
|
@@ -94,13 +94,13 @@ let RoutesPageService = (() => {
|
|
|
94
94
|
if (this.serviceState.observer) {
|
|
95
95
|
this.startEventListener();
|
|
96
96
|
}
|
|
97
|
+
(0, sleep_1.sleep)(5).then(() => {
|
|
98
|
+
this.updatePageDisplay();
|
|
99
|
+
});
|
|
97
100
|
};
|
|
98
101
|
if (service.isStillLoading()) {
|
|
99
102
|
service.once('load-done', () => {
|
|
100
103
|
start();
|
|
101
|
-
(0, sleep_1.sleep)(5).then(() => {
|
|
102
|
-
this.updatePageDisplay();
|
|
103
|
-
});
|
|
104
104
|
});
|
|
105
105
|
}
|
|
106
106
|
else {
|
|
@@ -215,7 +215,8 @@ let DevicesPageService = (() => {
|
|
|
215
215
|
enableInterface(i) { }
|
|
216
216
|
disableInterface(i) { }
|
|
217
217
|
reconnectInterface(i) { }
|
|
218
|
-
refreshInterface(i) {
|
|
218
|
+
refreshInterface(i) {
|
|
219
|
+
}
|
|
219
220
|
closeInterfaceSettings() {
|
|
220
221
|
this.openedInterfaceSettings = undefined;
|
|
221
222
|
this.interfaceSettingsObserver?.stop();
|
|
@@ -291,7 +291,6 @@ export const getTotalDistance = (route) => {
|
|
|
291
291
|
return route.points[route.points.length - 1].routeDistance;
|
|
292
292
|
};
|
|
293
293
|
export const getRouteHash = (route) => {
|
|
294
|
-
console.log('# getRouteHash', 'crypto binding:', getCryptoBinding());
|
|
295
294
|
const cryptoImpl = getCryptoBinding() ?? require('crypto');
|
|
296
295
|
let json;
|
|
297
296
|
if (!route?.points) {
|
|
@@ -5,7 +5,7 @@ import { Route } from "../../base/model/route";
|
|
|
5
5
|
import { addDetails } from "../../base/utils/route";
|
|
6
6
|
import { RoutesDbLoader } from "./db";
|
|
7
7
|
import { Loader } from "./types";
|
|
8
|
-
import {
|
|
8
|
+
import { sleep } from "../../../utils/sleep";
|
|
9
9
|
const valid = (v) => (v !== undefined && v !== null);
|
|
10
10
|
class ApiError extends Error {
|
|
11
11
|
_type;
|
|
@@ -61,10 +61,12 @@ export class RoutesApiLoader extends Loader {
|
|
|
61
61
|
await this.processRouteFromApi(p.value[j], loadDetailRequired);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
this.loadObserver.emit('loaded');
|
|
65
|
+
if (loadDetailRequired.length > 0) {
|
|
65
66
|
await this.loadDetails(loadDetailRequired, true);
|
|
67
|
+
}
|
|
66
68
|
this.loadObserver.emit('done');
|
|
67
|
-
await
|
|
69
|
+
await sleep(1);
|
|
68
70
|
this.loadObserver.stop();
|
|
69
71
|
delete this.loadObserver;
|
|
70
72
|
}
|
|
@@ -105,10 +107,11 @@ export class RoutesApiLoader extends Loader {
|
|
|
105
107
|
this.verifyRouteHash(route);
|
|
106
108
|
}
|
|
107
109
|
if (!existing) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
this.emitRouteAdded(route);
|
|
111
|
+
items.push({ route, added: true });
|
|
112
|
+
if (isComplete) {
|
|
113
|
+
this.save(route, false);
|
|
114
|
+
}
|
|
112
115
|
}
|
|
113
116
|
else {
|
|
114
117
|
this.save(route, true);
|
|
@@ -117,6 +120,7 @@ export class RoutesApiLoader extends Loader {
|
|
|
117
120
|
}
|
|
118
121
|
}
|
|
119
122
|
stopLoad() {
|
|
123
|
+
this.loadObserver?.stop();
|
|
120
124
|
delete this.loadObserver;
|
|
121
125
|
}
|
|
122
126
|
getDescriptionFromDB(id) {
|
|
@@ -176,7 +180,7 @@ export class RoutesApiLoader extends Loader {
|
|
|
176
180
|
});
|
|
177
181
|
for (const element of success) {
|
|
178
182
|
const item = element;
|
|
179
|
-
this.emitRouteEvents(
|
|
183
|
+
this.emitRouteEvents(item.added === true, item.route);
|
|
180
184
|
await this.verifyCountry(item.route);
|
|
181
185
|
this.verifyRouteHash(item.route);
|
|
182
186
|
if (save)
|
|
@@ -61,6 +61,8 @@ import { useAppState } from "../../appstate";
|
|
|
61
61
|
import { useUnitConverter } from "../../i18n";
|
|
62
62
|
import clone from "../../utils/clone";
|
|
63
63
|
const SYNC_INTERVAL = 5 * 60 * 1000;
|
|
64
|
+
const PRELOAD_DESKTOP = 20;
|
|
65
|
+
const PRELOAD_MOBILE = 10;
|
|
64
66
|
let RouteListService = (() => {
|
|
65
67
|
let _classDecorators = [Singleton];
|
|
66
68
|
let _classDescriptor;
|
|
@@ -73,6 +75,7 @@ let RouteListService = (() => {
|
|
|
73
75
|
let _getAppState_decorators;
|
|
74
76
|
let _getAppsService_decorators;
|
|
75
77
|
let _getUnitConverter_decorators;
|
|
78
|
+
let _getBindings_decorators;
|
|
76
79
|
var RouteListService = class extends _classSuper {
|
|
77
80
|
static { _classThis = this; }
|
|
78
81
|
static {
|
|
@@ -82,11 +85,13 @@ let RouteListService = (() => {
|
|
|
82
85
|
_getAppState_decorators = [Injectable];
|
|
83
86
|
_getAppsService_decorators = [Injectable];
|
|
84
87
|
_getUnitConverter_decorators = [Injectable];
|
|
88
|
+
_getBindings_decorators = [Injectable];
|
|
85
89
|
__esDecorate(this, null, _getUserSettings_decorators, { kind: "method", name: "getUserSettings", static: false, private: false, access: { has: obj => "getUserSettings" in obj, get: obj => obj.getUserSettings }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
86
90
|
__esDecorate(this, null, _getRouteSyncFactory_decorators, { kind: "method", name: "getRouteSyncFactory", static: false, private: false, access: { has: obj => "getRouteSyncFactory" in obj, get: obj => obj.getRouteSyncFactory }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
87
91
|
__esDecorate(this, null, _getAppState_decorators, { kind: "method", name: "getAppState", static: false, private: false, access: { has: obj => "getAppState" in obj, get: obj => obj.getAppState }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
88
92
|
__esDecorate(this, null, _getAppsService_decorators, { kind: "method", name: "getAppsService", static: false, private: false, access: { has: obj => "getAppsService" in obj, get: obj => obj.getAppsService }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
89
93
|
__esDecorate(this, null, _getUnitConverter_decorators, { kind: "method", name: "getUnitConverter", static: false, private: false, access: { has: obj => "getUnitConverter" in obj, get: obj => obj.getUnitConverter }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
94
|
+
__esDecorate(this, null, _getBindings_decorators, { kind: "method", name: "getBindings", static: false, private: false, access: { has: obj => "getBindings" in obj, get: obj => obj.getBindings }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
90
95
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
91
96
|
RouteListService = _classThis = _classDescriptor.value;
|
|
92
97
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -315,7 +320,8 @@ let RouteListService = (() => {
|
|
|
315
320
|
routes.sort((a, b) => a.title > b.title ? 1 : -1);
|
|
316
321
|
const units = this.getUnitConverter().getDefaultUnits();
|
|
317
322
|
if (!filters) {
|
|
318
|
-
|
|
323
|
+
const cards = routes.map(r => this.getCard(r.id));
|
|
324
|
+
return { routes, cards, filters, observer: this.observer, units };
|
|
319
325
|
}
|
|
320
326
|
if (!filters.includeDeleted)
|
|
321
327
|
routes = routes.filter(r => !r?.isDeleted);
|
|
@@ -488,6 +494,9 @@ let RouteListService = (() => {
|
|
|
488
494
|
}
|
|
489
495
|
}
|
|
490
496
|
preload() {
|
|
497
|
+
if (this.preloadObserver) {
|
|
498
|
+
return this.preloadObserver;
|
|
499
|
+
}
|
|
491
500
|
try {
|
|
492
501
|
this.logEvent({ message: 'preload route list' });
|
|
493
502
|
if (!this.isStillLoading()) {
|
|
@@ -498,23 +507,26 @@ let RouteListService = (() => {
|
|
|
498
507
|
this.initialized = true;
|
|
499
508
|
this.logEvent({ message: 'preload route list completed' });
|
|
500
509
|
this.updateRepoStats();
|
|
501
|
-
|
|
502
|
-
|
|
510
|
+
sleep(0).then(() => {
|
|
511
|
+
delete this.preloadObserver;
|
|
512
|
+
this.emit('load-done');
|
|
513
|
+
this.emitLists('loaded', { log: true });
|
|
514
|
+
});
|
|
503
515
|
})
|
|
504
516
|
.catch((err) => {
|
|
505
517
|
this.logError(err, 'preload');
|
|
506
518
|
this.preloadObserver?.stop();
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
519
|
+
sleep(0).then(() => {
|
|
520
|
+
delete this.preloadObserver;
|
|
521
|
+
this.emit('load-done');
|
|
522
|
+
});
|
|
511
523
|
});
|
|
512
524
|
}
|
|
513
525
|
}
|
|
514
526
|
catch (err) {
|
|
515
527
|
this.logError(err, 'preload');
|
|
516
528
|
this.preloadObserver?.stop();
|
|
517
|
-
|
|
529
|
+
sleep(0).then(() => { delete this.preloadObserver; });
|
|
518
530
|
}
|
|
519
531
|
return this.preloadObserver;
|
|
520
532
|
}
|
|
@@ -774,8 +786,9 @@ let RouteListService = (() => {
|
|
|
774
786
|
}
|
|
775
787
|
addRoute(route, source = 'system') {
|
|
776
788
|
this.routes.push(route);
|
|
777
|
-
if (route.description?.isDeleted)
|
|
789
|
+
if (route.description?.isDeleted) {
|
|
778
790
|
return;
|
|
791
|
+
}
|
|
779
792
|
if (!route.description?.isDeleted) {
|
|
780
793
|
if (source === 'user') {
|
|
781
794
|
this.logEvent({ message: 'route added', route: route.description.title, source: route.description.source });
|
|
@@ -839,8 +852,9 @@ let RouteListService = (() => {
|
|
|
839
852
|
.catch(() => {
|
|
840
853
|
});
|
|
841
854
|
};
|
|
855
|
+
const maxPreload = this.isMobile() ? PRELOAD_MOBILE : PRELOAD_DESKTOP;
|
|
842
856
|
cards.forEach(card => {
|
|
843
|
-
if (!card || promises.length >
|
|
857
|
+
if (!card || promises.length > maxPreload)
|
|
844
858
|
return;
|
|
845
859
|
if (!card.getRouteData()) {
|
|
846
860
|
promises.push(loadDetails(card));
|
|
@@ -971,6 +985,7 @@ let RouteListService = (() => {
|
|
|
971
985
|
const update = this.update.bind(this);
|
|
972
986
|
observer.on('route.added', add);
|
|
973
987
|
observer.on('route.updated', update);
|
|
988
|
+
observer.on('loaded', done);
|
|
974
989
|
observer.on('done', done);
|
|
975
990
|
});
|
|
976
991
|
}
|
|
@@ -1250,6 +1265,14 @@ let RouteListService = (() => {
|
|
|
1250
1265
|
}
|
|
1251
1266
|
}
|
|
1252
1267
|
}
|
|
1268
|
+
isMobile() {
|
|
1269
|
+
const { appInfo } = this.getBindings();
|
|
1270
|
+
if (!appInfo) {
|
|
1271
|
+
return false;
|
|
1272
|
+
}
|
|
1273
|
+
const channel = appInfo?.getChannel();
|
|
1274
|
+
return channel === 'mobile';
|
|
1275
|
+
}
|
|
1253
1276
|
getUserSettings() {
|
|
1254
1277
|
return useUserSettings();
|
|
1255
1278
|
}
|
|
@@ -1265,6 +1288,9 @@ let RouteListService = (() => {
|
|
|
1265
1288
|
getUnitConverter() {
|
|
1266
1289
|
return useUnitConverter();
|
|
1267
1290
|
}
|
|
1291
|
+
getBindings() {
|
|
1292
|
+
return getBindings();
|
|
1293
|
+
}
|
|
1268
1294
|
reset() {
|
|
1269
1295
|
super.reset();
|
|
1270
1296
|
if (this.syncInfo?.iv) {
|
|
@@ -91,13 +91,13 @@ let RoutesPageService = (() => {
|
|
|
91
91
|
if (this.serviceState.observer) {
|
|
92
92
|
this.startEventListener();
|
|
93
93
|
}
|
|
94
|
+
sleep(5).then(() => {
|
|
95
|
+
this.updatePageDisplay();
|
|
96
|
+
});
|
|
94
97
|
};
|
|
95
98
|
if (service.isStillLoading()) {
|
|
96
99
|
service.once('load-done', () => {
|
|
97
100
|
start();
|
|
98
|
-
sleep(5).then(() => {
|
|
99
|
-
this.updatePageDisplay();
|
|
100
|
-
});
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
else {
|
|
@@ -151,11 +151,13 @@ export declare class RouteListService extends IncyclistService implements IRoute
|
|
|
151
151
|
protected getAllSearchCards(): RouteCard[];
|
|
152
152
|
protected handleConfigChanges(): void;
|
|
153
153
|
protected onRouteStatsUpdate(stats: ActiveRideCount[]): void;
|
|
154
|
+
protected isMobile(): boolean;
|
|
154
155
|
protected getUserSettings(): import("../../settings").UserSettingsService;
|
|
155
156
|
protected getRouteSyncFactory(): RouteSyncFactory;
|
|
156
157
|
protected getAppState(): import("../../appstate").AppStateService;
|
|
157
|
-
getAppsService(): import("../../apps").AppsService;
|
|
158
|
-
getUnitConverter(): import("../../i18n").UnitConverterService;
|
|
158
|
+
protected getAppsService(): import("../../apps").AppsService;
|
|
159
|
+
protected getUnitConverter(): import("../../i18n").UnitConverterService;
|
|
160
|
+
protected getBindings(): import("../../api").IncyclistBindings;
|
|
159
161
|
reset(): void;
|
|
160
162
|
}
|
|
161
163
|
export declare const useRouteList: () => RouteListService;
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "incyclist-services",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.28",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"gd-eventlog": "^0.1.27"
|
|
6
6
|
},
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"axios": "^1.13.
|
|
9
|
-
"incyclist-devices": "^3.0.
|
|
8
|
+
"axios": "^1.13.6",
|
|
9
|
+
"incyclist-devices": "^3.0.10",
|
|
10
10
|
"promise.any": "^2.0.6",
|
|
11
11
|
"semver": "^7.7.4",
|
|
12
12
|
"tcx-builder": "^1.1.1",
|
|
@@ -17,13 +17,13 @@
|
|
|
17
17
|
"@serialport/binding-mock": "^10.2.2",
|
|
18
18
|
"@serialport/bindings-interface": "^1.2.2",
|
|
19
19
|
"@types/jest": "^30.0.0",
|
|
20
|
-
"@types/node": "^25.
|
|
21
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
22
|
-
"@typescript-eslint/parser": "^8.
|
|
20
|
+
"@types/node": "^25.5.0",
|
|
21
|
+
"@typescript-eslint/eslint-plugin": "^8.57.0",
|
|
22
|
+
"@typescript-eslint/parser": "^8.57.0",
|
|
23
23
|
"dotenv": "^17.3.1",
|
|
24
|
-
"eslint": "^10.0.
|
|
24
|
+
"eslint": "^10.0.3",
|
|
25
25
|
"formdata-node": "^6.0.3",
|
|
26
|
-
"jest": "^30.
|
|
26
|
+
"jest": "^30.3.0",
|
|
27
27
|
"jsdoc": "^4.0.5",
|
|
28
28
|
"ts-jest": "^29.4.6",
|
|
29
29
|
"typedoc": "^0.28.17",
|