incyclist-services 1.7.37 → 1.7.39

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.
@@ -160,6 +160,7 @@ let RidePageService = (() => {
160
160
  const rideType = this.getRideDisplay().getRideType();
161
161
  switch (rideType) {
162
162
  case 'Video': return this.getVideoRideDisplayProps();
163
+ case 'GPX': return this.getGPXRideDisplayProps();
163
164
  default:
164
165
  return null;
165
166
  }
@@ -267,6 +268,22 @@ let RidePageService = (() => {
267
268
  };
268
269
  return displayProps;
269
270
  }
271
+ getGPXRideDisplayProps() {
272
+ const props = this.rideDisplayProps;
273
+ const state = this.getRideDisplay().getState();
274
+ const rideType = this.getRideDisplay().getRideType();
275
+ const isStarting = state === 'Idle' || state === 'Starting' || state === 'Error';
276
+ const displayProps = {
277
+ rideState: state,
278
+ rideType,
279
+ startGateProps: this.startGateProps,
280
+ startOverlayProps: isStarting ? this.getRideDisplay().getStartOverlayProps() : null,
281
+ menuProps: this.menuProps,
282
+ rideView: props.rideView,
283
+ route: props.route
284
+ };
285
+ return displayProps;
286
+ }
270
287
  async checkSecretValidity() {
271
288
  if (this.getBindings().appInfo.getChannel() === 'mobile') {
272
289
  const secretsStatus = this.getSecretBinding().getSecretsStatus?.();
@@ -6,7 +6,7 @@ class FollowRouteDisplayService extends GpxDisplayService_1.GpxDisplayService {
6
6
  getLogProps() {
7
7
  const route = this.route;
8
8
  const settings = this.startSettings;
9
- const rideView = this.getUserSettings().get('preferences.rideView', undefined) ?? 'sv(default)';
9
+ const rideView = this.getRideView();
10
10
  const bikeProps = this.getBikeLogProps();
11
11
  const props = {
12
12
  mode: 'follow route',
@@ -35,6 +35,7 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
35
35
  };
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  exports.GpxDisplayService = void 0;
38
+ const api_1 = require("../../api");
38
39
  const apps_1 = require("../../apps");
39
40
  const decorators_1 = require("../../base/decorators");
40
41
  const types_1 = require("../../base/types");
@@ -49,13 +50,16 @@ let GpxDisplayService = (() => {
49
50
  let _instanceExtraInitializers = [];
50
51
  let _getUserSettings_decorators;
51
52
  let _getGoogleMaps_decorators;
53
+ let _getBindings_decorators;
52
54
  return class GpxDisplayService extends _classSuper {
53
55
  static {
54
56
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
55
57
  _getUserSettings_decorators = [decorators_1.Injectable];
56
58
  _getGoogleMaps_decorators = [decorators_1.Injectable];
59
+ _getBindings_decorators = [decorators_1.Injectable];
57
60
  __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);
58
61
  __esDecorate(this, null, _getGoogleMaps_decorators, { kind: "method", name: "getGoogleMaps", static: false, private: false, access: { has: obj => "getGoogleMaps" in obj, get: obj => obj.getGoogleMaps }, metadata: _metadata }, null, _instanceExtraInitializers);
62
+ __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);
59
63
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
60
64
  }
61
65
  mapLoaded = (__runInitializers(this, _instanceExtraInitializers), false);
@@ -74,7 +78,7 @@ let GpxDisplayService = (() => {
74
78
  }
75
79
  initView() {
76
80
  try {
77
- const rideView = this.getUserSettings().get('preferences.rideView', 'sv');
81
+ const rideView = this.getRideView();
78
82
  if (rideView === 'sv') {
79
83
  const updateFreq = this.getDefaultUpdateFrequency();
80
84
  const minimalPause = this.getMinimalPause();
@@ -115,22 +119,30 @@ let GpxDisplayService = (() => {
115
119
  };
116
120
  }
117
121
  getStartOverlayProps() {
118
- const rideView = this.getUserSettings().get('preferences.rideView', 'sv');
122
+ const rideView = this.getRideView();
119
123
  if (rideView === 'map') {
120
- return {};
124
+ return {
125
+ mapType: this.getRideViewName(),
126
+ mapState: 'Loaded'
127
+ };
121
128
  }
122
129
  return {
123
- mapType: rideView === 'sv' ? 'StreetView' : 'SatelliteView',
130
+ mapType: this.getRideViewName(),
124
131
  mapState: this.mapLoaded ? 'Loaded' : 'Loading',
125
132
  mapStateError: this.mapError
126
133
  };
127
134
  }
128
135
  isStartRideCompleted() {
136
+ const rideView = this.getRideView();
137
+ if (rideView === 'map') {
138
+ this.mapLoaded = true;
139
+ return true;
140
+ }
129
141
  return this.mapLoaded;
130
142
  }
131
143
  getDisplayProperties(props) {
132
144
  let routeProps = super.getDisplayProperties(props);
133
- const rideView = this.getUserSettings().get('preferences.rideView', 'sv');
145
+ const rideView = this.getRideView();
134
146
  if (rideView === 'sv') {
135
147
  routeProps = { ...routeProps, ...this.getStreetViewProps(props) };
136
148
  }
@@ -145,6 +157,21 @@ let GpxDisplayService = (() => {
145
157
  ...routeProps
146
158
  };
147
159
  }
160
+ getRideView() {
161
+ if (this.isMobile())
162
+ return 'map';
163
+ const rideView = this.getUserSettings().get('preferences.rideView', 'sv');
164
+ return rideView;
165
+ }
166
+ getRideViewName() {
167
+ const rideView = this.getRideView();
168
+ const map = {
169
+ map: 'Map',
170
+ sv: 'Street View',
171
+ sat: 'Satellite View'
172
+ };
173
+ return map?.[rideView] ?? rideView;
174
+ }
148
175
  onSatelliteViewEvent(state, error) {
149
176
  if (state === 'Loaded') {
150
177
  this.mapLoaded = true;
@@ -232,7 +259,7 @@ let GpxDisplayService = (() => {
232
259
  }
233
260
  onPositionUpdate(state) {
234
261
  const { route, position } = state ?? {};
235
- const rideView = this.getUserSettings().getValue('preferences.rideView', 'sv');
262
+ const rideView = this.getRideView();
236
263
  if (rideView === 'sv') {
237
264
  const sincePrev = Date.now() - (this.tsPrevSVUpdate ?? 0);
238
265
  if (sincePrev > this.getStreetViewUpdateDelay() - 25) {
@@ -275,12 +302,18 @@ let GpxDisplayService = (() => {
275
302
  }
276
303
  catch { }
277
304
  }
305
+ isMobile() {
306
+ return this.getBindings().appInfo?.getChannel() === 'mobile';
307
+ }
278
308
  getUserSettings() {
279
309
  return (0, settings_1.useUserSettings)();
280
310
  }
281
311
  getGoogleMaps() {
282
312
  return (0, apps_1.useGoogleMaps)();
283
313
  }
314
+ getBindings() {
315
+ return (0, api_1.getBindings)();
316
+ }
284
317
  };
285
318
  })();
286
319
  exports.GpxDisplayService = GpxDisplayService;
@@ -157,6 +157,7 @@ let RidePageService = (() => {
157
157
  const rideType = this.getRideDisplay().getRideType();
158
158
  switch (rideType) {
159
159
  case 'Video': return this.getVideoRideDisplayProps();
160
+ case 'GPX': return this.getGPXRideDisplayProps();
160
161
  default:
161
162
  return null;
162
163
  }
@@ -264,6 +265,22 @@ let RidePageService = (() => {
264
265
  };
265
266
  return displayProps;
266
267
  }
268
+ getGPXRideDisplayProps() {
269
+ const props = this.rideDisplayProps;
270
+ const state = this.getRideDisplay().getState();
271
+ const rideType = this.getRideDisplay().getRideType();
272
+ const isStarting = state === 'Idle' || state === 'Starting' || state === 'Error';
273
+ const displayProps = {
274
+ rideState: state,
275
+ rideType,
276
+ startGateProps: this.startGateProps,
277
+ startOverlayProps: isStarting ? this.getRideDisplay().getStartOverlayProps() : null,
278
+ menuProps: this.menuProps,
279
+ rideView: props.rideView,
280
+ route: props.route
281
+ };
282
+ return displayProps;
283
+ }
267
284
  async checkSecretValidity() {
268
285
  if (this.getBindings().appInfo.getChannel() === 'mobile') {
269
286
  const secretsStatus = this.getSecretBinding().getSecretsStatus?.();
@@ -3,7 +3,7 @@ export class FollowRouteDisplayService extends GpxDisplayService {
3
3
  getLogProps() {
4
4
  const route = this.route;
5
5
  const settings = this.startSettings;
6
- const rideView = this.getUserSettings().get('preferences.rideView', undefined) ?? 'sv(default)';
6
+ const rideView = this.getRideView();
7
7
  const bikeProps = this.getBikeLogProps();
8
8
  const props = {
9
9
  mode: 'follow route',
@@ -32,6 +32,7 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
32
32
  if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
33
  done = true;
34
34
  };
35
+ import { getBindings } from "../../api";
35
36
  import { useGoogleMaps } from "../../apps";
36
37
  import { Injectable } from "../../base/decorators";
37
38
  import { Observer } from "../../base/types";
@@ -46,13 +47,16 @@ let GpxDisplayService = (() => {
46
47
  let _instanceExtraInitializers = [];
47
48
  let _getUserSettings_decorators;
48
49
  let _getGoogleMaps_decorators;
50
+ let _getBindings_decorators;
49
51
  return class GpxDisplayService extends _classSuper {
50
52
  static {
51
53
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
52
54
  _getUserSettings_decorators = [Injectable];
53
55
  _getGoogleMaps_decorators = [Injectable];
56
+ _getBindings_decorators = [Injectable];
54
57
  __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);
55
58
  __esDecorate(this, null, _getGoogleMaps_decorators, { kind: "method", name: "getGoogleMaps", static: false, private: false, access: { has: obj => "getGoogleMaps" in obj, get: obj => obj.getGoogleMaps }, metadata: _metadata }, null, _instanceExtraInitializers);
59
+ __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);
56
60
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
57
61
  }
58
62
  mapLoaded = (__runInitializers(this, _instanceExtraInitializers), false);
@@ -71,7 +75,7 @@ let GpxDisplayService = (() => {
71
75
  }
72
76
  initView() {
73
77
  try {
74
- const rideView = this.getUserSettings().get('preferences.rideView', 'sv');
78
+ const rideView = this.getRideView();
75
79
  if (rideView === 'sv') {
76
80
  const updateFreq = this.getDefaultUpdateFrequency();
77
81
  const minimalPause = this.getMinimalPause();
@@ -112,22 +116,30 @@ let GpxDisplayService = (() => {
112
116
  };
113
117
  }
114
118
  getStartOverlayProps() {
115
- const rideView = this.getUserSettings().get('preferences.rideView', 'sv');
119
+ const rideView = this.getRideView();
116
120
  if (rideView === 'map') {
117
- return {};
121
+ return {
122
+ mapType: this.getRideViewName(),
123
+ mapState: 'Loaded'
124
+ };
118
125
  }
119
126
  return {
120
- mapType: rideView === 'sv' ? 'StreetView' : 'SatelliteView',
127
+ mapType: this.getRideViewName(),
121
128
  mapState: this.mapLoaded ? 'Loaded' : 'Loading',
122
129
  mapStateError: this.mapError
123
130
  };
124
131
  }
125
132
  isStartRideCompleted() {
133
+ const rideView = this.getRideView();
134
+ if (rideView === 'map') {
135
+ this.mapLoaded = true;
136
+ return true;
137
+ }
126
138
  return this.mapLoaded;
127
139
  }
128
140
  getDisplayProperties(props) {
129
141
  let routeProps = super.getDisplayProperties(props);
130
- const rideView = this.getUserSettings().get('preferences.rideView', 'sv');
142
+ const rideView = this.getRideView();
131
143
  if (rideView === 'sv') {
132
144
  routeProps = { ...routeProps, ...this.getStreetViewProps(props) };
133
145
  }
@@ -142,6 +154,21 @@ let GpxDisplayService = (() => {
142
154
  ...routeProps
143
155
  };
144
156
  }
157
+ getRideView() {
158
+ if (this.isMobile())
159
+ return 'map';
160
+ const rideView = this.getUserSettings().get('preferences.rideView', 'sv');
161
+ return rideView;
162
+ }
163
+ getRideViewName() {
164
+ const rideView = this.getRideView();
165
+ const map = {
166
+ map: 'Map',
167
+ sv: 'Street View',
168
+ sat: 'Satellite View'
169
+ };
170
+ return map?.[rideView] ?? rideView;
171
+ }
145
172
  onSatelliteViewEvent(state, error) {
146
173
  if (state === 'Loaded') {
147
174
  this.mapLoaded = true;
@@ -229,7 +256,7 @@ let GpxDisplayService = (() => {
229
256
  }
230
257
  onPositionUpdate(state) {
231
258
  const { route, position } = state ?? {};
232
- const rideView = this.getUserSettings().getValue('preferences.rideView', 'sv');
259
+ const rideView = this.getRideView();
233
260
  if (rideView === 'sv') {
234
261
  const sincePrev = Date.now() - (this.tsPrevSVUpdate ?? 0);
235
262
  if (sincePrev > this.getStreetViewUpdateDelay() - 25) {
@@ -272,12 +299,18 @@ let GpxDisplayService = (() => {
272
299
  }
273
300
  catch { }
274
301
  }
302
+ isMobile() {
303
+ return this.getBindings().appInfo?.getChannel() === 'mobile';
304
+ }
275
305
  getUserSettings() {
276
306
  return useUserSettings();
277
307
  }
278
308
  getGoogleMaps() {
279
309
  return useGoogleMaps();
280
310
  }
311
+ getBindings() {
312
+ return getBindings();
313
+ }
281
314
  };
282
315
  })();
283
316
  export { GpxDisplayService };
@@ -99,8 +99,9 @@ export interface MapOverlayDisplayProps extends OverlayDisplayProps {
99
99
  bounds?: Number[][];
100
100
  onViewportChange?: (viewport: MapViewPort) => void;
101
101
  }
102
+ export type RideViewType = 'sv' | 'map' | 'sat';
102
103
  export interface GpxDisplayProps extends RouteDisplayProps {
103
- rideView: 'sv' | 'map' | 'sat';
104
+ rideView: RideViewType;
104
105
  }
105
106
  export interface RouteOptionDisplayProps {
106
107
  optionsDelay?: number;
@@ -1,6 +1,6 @@
1
1
  import { IncyclistPageService } from "../../base/pages";
2
2
  import { CurrentRideDisplayProps, CurrentRideState, IObserver, RideType } from "../../types";
3
- import { AnyRidePageDisplayProps, IRidePageService, RideMenuProps, StartGateProps, VideoRidePageDisplayProps } from "./types";
3
+ import { AnyRidePageDisplayProps, GPXRidePageDisplayProps, IRidePageService, RideMenuProps, StartGateProps, VideoRidePageDisplayProps } from "./types";
4
4
  import { ISecretBinding } from "../../api/secret";
5
5
  export declare class RidePageService extends IncyclistPageService implements IRidePageService {
6
6
  protected eventHandler: Record<string, Function>;
@@ -28,6 +28,7 @@ export declare class RidePageService extends IncyclistPageService implements IRi
28
28
  onIgnoreStart(): void;
29
29
  onCancelStart(): Promise<void>;
30
30
  protected getVideoRideDisplayProps(): VideoRidePageDisplayProps;
31
+ protected getGPXRideDisplayProps(): GPXRidePageDisplayProps;
31
32
  protected checkSecretValidity(): Promise<void>;
32
33
  protected showStartGate(): void;
33
34
  protected hideStartgate(): void;
@@ -1,7 +1,7 @@
1
1
  import { IPageService } from "../../base/pages";
2
2
  import { Route } from "../../routes/base/model/route";
3
3
  import { IObserver } from "../../types";
4
- import { CurrentRideState, GpxDisplayProps, GPXStartOverlayProps, RideType, StartOverlayProps, VideoDisplayProps, VideoStartOverlayProps } from "../types";
4
+ import { CurrentRideState, GPXStartOverlayProps, RideType, RideViewType, StartOverlayProps, VideoDisplayProps, VideoStartOverlayProps } from "../types";
5
5
  export interface StartGateProps {
6
6
  title: string;
7
7
  body: string;
@@ -19,7 +19,7 @@ export interface VideoRidePageDisplayProps extends RidePageDisplayProps {
19
19
  videos?: VideoDisplayProps[];
20
20
  }
21
21
  export interface GPXRidePageDisplayProps extends RidePageDisplayProps {
22
- gpx?: GpxDisplayProps;
22
+ rideView?: RideViewType;
23
23
  }
24
24
  export type AnyRidePageDisplayProps = VideoRidePageDisplayProps | RidePageDisplayProps;
25
25
  export interface RideMenuProps {
@@ -33,8 +33,8 @@ export declare class GpxDisplayService extends RouteDisplayService {
33
33
  displayPosition: import("../base").CurrentPosition;
34
34
  };
35
35
  getStartOverlayProps(): {
36
- mapType?: undefined;
37
- mapState?: undefined;
36
+ mapType: string;
37
+ mapState: string;
38
38
  mapStateError?: undefined;
39
39
  } | {
40
40
  mapType: string;
@@ -43,6 +43,8 @@ export declare class GpxDisplayService extends RouteDisplayService {
43
43
  };
44
44
  isStartRideCompleted(): boolean;
45
45
  getDisplayProperties(props: CurrentRideDisplayProps): GpxDisplayProps;
46
+ protected getRideView(): string;
47
+ protected getRideViewName(): string;
46
48
  protected onSatelliteViewEvent(state: SatelliteViewEvent, error?: string): void;
47
49
  protected onMapViewEvent(state: SatelliteViewEvent, error?: string): void;
48
50
  protected onStreetViewEvent(event: StreetViewEvent, data: any): void;
@@ -53,6 +55,8 @@ export declare class GpxDisplayService extends RouteDisplayService {
53
55
  protected getMinimalPause(): number;
54
56
  protected getBestCaseUpdateFrequency(): number;
55
57
  protected getNumSetting(key: string): number;
58
+ protected isMobile(): boolean;
56
59
  protected getUserSettings(): UserSettingsService;
57
60
  protected getGoogleMaps(): GoogleMapsService;
61
+ protected getBindings(): import("../../api").IncyclistBindings;
58
62
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "incyclist-services",
3
- "version": "1.7.37",
3
+ "version": "1.7.39",
4
4
  "peerDependencies": {
5
5
  "gd-eventlog": "^0.1.27"
6
6
  },