From e1200c2991ee937357bf37cbfd6c52e6e6aefedb Mon Sep 17 00:00:00 2001 From: Aaron Greenspan Date: Mon, 15 Feb 2021 11:27:21 -0700 Subject: [PATCH] ui: fix distinctUntilChanged() --- .../app-installed-show.page.html | 13 +++++++--- .../app-installed-show.page.scss | 1 - .../app-installed-show.page.ts | 25 ++++++++++++------- ui/src/app/services/api/mock-api.service.ts | 4 +-- ui/use-mocks.json | 4 +-- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.html b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.html index 5e33219cd..8a5220bb9 100644 --- a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.html +++ b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.html @@ -103,13 +103,18 @@

{{ vars.torAddress }}

- +

LAN Address

-

{{ vars.lanAddress }}

+

+ {{ vars.lanAddress }} +

+

+ Testing Connection + +

- - +
Backups diff --git a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.scss b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.scss index 6de287da0..31b6fdbc6 100644 --- a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.scss +++ b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.scss @@ -65,5 +65,4 @@ height: 1em; --handle-width: 0.9em; --handle-height: 0.9em; - margin-right: 10px; } diff --git a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.ts b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.ts index 2894ff47b..00743087c 100644 --- a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.ts +++ b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.ts @@ -6,7 +6,7 @@ import { copyToClipboard } from 'src/app/util/web.util' import { AppModel, AppStatus } from 'src/app/models/app-model' import { AppInstalledFull } from 'src/app/models/app-types' import { ModelPreload } from 'src/app/models/model-preload' -import { chill, modulateTime, pauseFor } from 'src/app/util/misc.util' +import { chill, modulateTime, pauseFor, traceWheel } from 'src/app/util/misc.util' import { PropertySubject, peekProperties } from 'src/app/util/property-subject.util' import { AppBackupPage } from 'src/app/modals/app-backup/app-backup.page' import { LoaderService, markAsLoadingDuring$, markAsLoadingDuringP } from 'src/app/services/loader.service' @@ -83,6 +83,8 @@ export class AppInstalledShowPage extends Cleanup { combineLatest([app.lanEnabled, this.$lanConnected$, app.status, this.$testingLanConnection$]).pipe( filter(([_, __, s, alreadyConnecting]) => s === AppStatus.RUNNING && !alreadyConnecting), concatMap(([enabled, connected]) => { + // console.log('enabled', enabled) + // console.log('connected', connected) if (enabled && !connected) return markAsLoadingDuring$(this.$testingLanConnection$, this.testLanConnection()) if (!enabled && connected) return of(this.$lanConnected$.next(false)) return of() @@ -90,19 +92,23 @@ export class AppInstalledShowPage extends Cleanup { ), // toggle lan combineLatest([this.$lanToggled$, app.lanEnabled, this.$testingLanConnection$]).pipe( - distinctUntilChanged(([toggled1], [toggled2]) => toggled1 !== toggled2), filter(([_, __, alreadyLoading]) => !alreadyLoading), map(([e, _]) => [(e as any).detail.checked, _]), + distinctUntilChanged(([toggled1], [toggled2]) => toggled1 === toggled2), // if the app is already in the desired state, we bail // this can happen because ionChange triggers when the [checked] value changes filter(([uiEnabled, appEnabled]) => (uiEnabled && !appEnabled) || (!uiEnabled && appEnabled)), - map(([enabled]) => enabled - ? this.enableLan().pipe(concatMap(() => this.testLanConnection())) - : this.disableLan(), - ), - concatMap(o => markAsLoadingDuring$(this.$testingLanConnection$, o).pipe( - catchError(e => this.setError(e)), - )), + concatMap( ([enabled]) => { + let o: Observable + if (enabled) { + o = this.enableLan().pipe(concatMap(() => this.testLanConnection())) + } else { + o = this.disableLan() + } + return markAsLoadingDuring$(this.$testingLanConnection$, o).pipe( + catchError(e => this.setError(e)), + ) + }), ), ), ), //must be final in stack @@ -119,6 +125,7 @@ export class AppInstalledShowPage extends Cleanup { retryWhen(errors => errors.pipe(delay(2500), take(20))), catchError(() => of(false)), take(1), + traceWheel('lan connected test'), map(connected => this.$lanConnected$.next(connected)), ) } diff --git a/ui/src/app/services/api/mock-api.service.ts b/ui/src/app/services/api/mock-api.service.ts index ef88419f3..15deb8c9d 100644 --- a/ui/src/app/services/api/mock-api.service.ts +++ b/ui/src/app/services/api/mock-api.service.ts @@ -45,8 +45,8 @@ export class MockApiService extends ApiService { async testConnection (): Promise { console.log('testing connection') this.testCounter ++ - await pauseFor(1000) - if (this.testCounter > 5) { + await pauseFor(10000000) + if (this.testCounter > 3) { return true } else { throw new Error('Not Connected') diff --git a/ui/use-mocks.json b/ui/use-mocks.json index 81031f548..dc204ef37 100644 --- a/ui/use-mocks.json +++ b/ui/use-mocks.json @@ -1,5 +1,5 @@ { - "useMocks": false, + "useMocks": true, "mockOver": "lan", - "skipStartupAlerts": false + "skipStartupAlerts": true }