diff --git a/Makefile b/Makefile
index a4649fb74..326ea2b21 100644
--- a/Makefile
+++ b/Makefile
@@ -29,8 +29,8 @@ clean:
rm -rf patch-db/client/node_modules
rm -rf patch-db/client/dist
- rm libs/js_engine/src/artifacts/ARM_JS_SNAPSHOT.bin
- rm libs/js_engine/src/artifacts/JS_SNAPSHOT.bin
+ rm -f libs/js_engine/src/artifacts/ARM_JS_SNAPSHOT.bin
+ rm -f libs/js_engine/src/artifacts/JS_SNAPSHOT.bin
touch libs/snapshot-creator/Cargo.toml
eos.img: $(EMBASSY_SRC) system-images/compat/compat.tar system-images/utils/utils.tar $(EMBASSY_V8_SNAPSHOTS)
diff --git a/frontend/README.md b/frontend/README.md
index f41ad89fb..026c3c549 100644
--- a/frontend/README.md
+++ b/frontend/README.md
@@ -58,7 +58,7 @@ npm run start:diagnostic-ui
This section enables you to run a local frontend with a remote backend (eg. hosted on a live Embassy). It assumes you have completed Step 1 and Step 2 in the [section above](#running-locally-with-mocks)
-1. Set `useMocks: true` in `config.json`
+1. Set `useMocks: false` in `config.json`
2. Create a proxy configuration file from the sample:
diff --git a/frontend/projects/setup-wizard/src/app/modals/cifs-modal/cifs-modal.page.ts b/frontend/projects/setup-wizard/src/app/modals/cifs-modal/cifs-modal.page.ts
index a813f1ec4..713cd93fb 100644
--- a/frontend/projects/setup-wizard/src/app/modals/cifs-modal/cifs-modal.page.ts
+++ b/frontend/projects/setup-wizard/src/app/modals/cifs-modal/cifs-modal.page.ts
@@ -1,6 +1,14 @@
import { Component } from '@angular/core'
-import { AlertController, LoadingController, ModalController } from '@ionic/angular'
-import { ApiService, CifsBackupTarget, EmbassyOSRecoveryInfo } from 'src/app/services/api/api.service'
+import {
+ AlertController,
+ LoadingController,
+ ModalController,
+} from '@ionic/angular'
+import {
+ ApiService,
+ CifsBackupTarget,
+ EmbassyOSRecoveryInfo,
+} from 'src/app/services/api/api.service'
import { PasswordPage } from '../password/password.page'
@Component({
@@ -17,18 +25,18 @@ export class CifsModal {
password: '',
}
- constructor (
+ constructor(
private readonly modalController: ModalController,
private readonly apiService: ApiService,
private readonly loadingCtrl: LoadingController,
private readonly alertCtrl: AlertController,
- ) { }
+ ) {}
- cancel () {
+ cancel() {
this.modalController.dismiss()
}
- async submit (): Promise {
+ async submit(): Promise {
const loader = await this.loadingCtrl.create({
spinner: 'lines',
message: 'Connecting to shared folder...',
@@ -38,23 +46,30 @@ export class CifsModal {
try {
const embassyOS = await this.apiService.verifyCifs(this.cifs)
+
+ await loader.dismiss()
+
const is02x = embassyOS.version.startsWith('0.2')
if (is02x) {
- this.modalController.dismiss({
- cifs: this.cifs,
- }, 'success')
+ this.modalController.dismiss(
+ {
+ cifs: this.cifs,
+ },
+ 'success',
+ )
} else {
this.presentModalPassword(embassyOS)
}
} catch (e) {
+ await loader.dismiss()
this.presentAlertFailed()
- } finally {
- loader.dismiss()
}
}
- private async presentModalPassword (embassyOS: EmbassyOSRecoveryInfo): Promise {
+ private async presentModalPassword(
+ embassyOS: EmbassyOSRecoveryInfo,
+ ): Promise {
const target: CifsBackupTarget = {
...this.cifs,
mountable: true,
@@ -68,19 +83,23 @@ export class CifsModal {
})
modal.onDidDismiss().then(res => {
if (res.role === 'success') {
- this.modalController.dismiss({
- cifs: this.cifs,
- recoveryPassword: res.data.password,
- }, 'success')
+ this.modalController.dismiss(
+ {
+ cifs: this.cifs,
+ recoveryPassword: res.data.password,
+ },
+ 'success',
+ )
}
})
await modal.present()
}
- private async presentAlertFailed (): Promise {
+ private async presentAlertFailed(): Promise {
const alert = await this.alertCtrl.create({
header: 'Connection Failed',
- message: 'Unable to connect to shared folder. Ensure (1) target computer is connected to LAN, (2) target folder is being shared, and (3) hostname, path, and credentials are accurate.',
+ message:
+ 'Unable to connect to shared folder. Ensure (1) target computer is connected to LAN, (2) target folder is being shared, and (3) hostname, path, and credentials are accurate.',
buttons: ['OK'],
})
alert.present()
diff --git a/frontend/projects/ui/src/app/app/global/services/update-toast.service.ts b/frontend/projects/ui/src/app/app/global/services/update-toast.service.ts
index d4f262a82..5b06ce76f 100644
--- a/frontend/projects/ui/src/app/app/global/services/update-toast.service.ts
+++ b/frontend/projects/ui/src/app/app/global/services/update-toast.service.ts
@@ -45,23 +45,43 @@ export class UpdateToastService extends Observable {
super(subscriber => this.stream$.subscribe(subscriber))
}
+ LOADER: LoadingOptions = {
+ spinner: 'lines',
+ message: 'Restarting...',
+ }
+
+ TOAST: ToastOptions = {
+ header: 'EOS download complete!',
+ message:
+ 'Restart your Embassy for these updates to take effect. It can take several minutes to come back online.',
+ position: 'bottom',
+ duration: 0,
+ cssClass: 'success-toast',
+ buttons: [
+ {
+ side: 'start',
+ icon: 'close',
+ handler: () => true,
+ },
+ {
+ side: 'end',
+ text: 'Restart',
+ handler: () => {
+ this.restart()
+ },
+ },
+ ],
+ }
private async showToast() {
await this.updateToast?.dismiss()
- this.updateToast = await this.toastCtrl.create(TOAST)
- this.updateToast.buttons?.push({
- side: 'end',
- text: 'Restart',
- handler: () => {
- this.restart()
- },
- })
+ this.updateToast = await this.toastCtrl.create(this.TOAST)
await this.updateToast.present()
}
private async restart(): Promise {
- const loader = await this.loadingCtrl.create(LOADER)
+ const loader = await this.loadingCtrl.create(this.LOADER)
await loader.present()
@@ -74,24 +94,3 @@ export class UpdateToastService extends Observable {
}
}
}
-
-const LOADER: LoadingOptions = {
- spinner: 'lines',
- message: 'Restarting...',
-}
-
-const TOAST: ToastOptions = {
- header: 'EOS download complete!',
- message:
- 'Restart your Embassy for these updates to take effect. It can take several minutes to come back online.',
- position: 'bottom',
- duration: 0,
- cssClass: 'success-toast',
- buttons: [
- {
- side: 'start',
- icon: 'close',
- handler: () => true,
- },
- ],
-}
diff --git a/frontend/projects/ui/src/app/app/snek/snek.directive.ts b/frontend/projects/ui/src/app/app/snek/snek.directive.ts
index f1d826236..3e8cd327e 100644
--- a/frontend/projects/ui/src/app/app/snek/snek.directive.ts
+++ b/frontend/projects/ui/src/app/app/snek/snek.directive.ts
@@ -32,8 +32,8 @@ export class SnekDirective {
if (data?.highScore > highScore) {
const loader = await this.loadingCtrl.create({
- spinner: 'lines',
- message: 'Saving High Score...',
+ message: 'Saving high score...',
+ backdropDismiss: true,
})
await loader.present()
diff --git a/frontend/projects/ui/src/app/components/app-wizard/app-wizard.component.html b/frontend/projects/ui/src/app/components/app-wizard/app-wizard.component.html
index b9a9d450b..9618ff366 100644
--- a/frontend/projects/ui/src/app/components/app-wizard/app-wizard.component.html
+++ b/frontend/projects/ui/src/app/components/app-wizard/app-wizard.component.html
@@ -66,22 +66,30 @@
-
+
- Dismiss
+ Dismiss
- Continue
+ {{
+ currentIndex < swiper.slides.length - 2
+ ? 'Continue'
+ : params.submitBtn
+ }}
diff --git a/frontend/projects/ui/src/app/components/app-wizard/app-wizard.component.ts b/frontend/projects/ui/src/app/components/app-wizard/app-wizard.component.ts
index 8ced2fb3e..f88d92afb 100644
--- a/frontend/projects/ui/src/app/components/app-wizard/app-wizard.component.ts
+++ b/frontend/projects/ui/src/app/components/app-wizard/app-wizard.component.ts
@@ -27,6 +27,7 @@ export class AppWizardComponent {
action: WizardAction
title: string
slides: SlideDefinition[]
+ submitBtn: string
version?: string
}
@@ -76,7 +77,6 @@ export class AppWizardComponent {
}
setError(e: any) {
- console.log(e)
this.error = e
}
diff --git a/frontend/projects/ui/src/app/components/app-wizard/notes/notes.component.html b/frontend/projects/ui/src/app/components/app-wizard/notes/notes.component.html
index 8d521d0c8..f3bf63e23 100644
--- a/frontend/projects/ui/src/app/components/app-wizard/notes/notes.component.html
+++ b/frontend/projects/ui/src/app/components/app-wizard/notes/notes.component.html
@@ -7,7 +7,7 @@
{{ v.version }}
-
+
diff --git a/frontend/projects/ui/src/app/components/app-wizard/wizard-defs.ts b/frontend/projects/ui/src/app/components/app-wizard/wizard-defs.ts
index e4fb16894..001ee5115 100644
--- a/frontend/projects/ui/src/app/components/app-wizard/wizard-defs.ts
+++ b/frontend/projects/ui/src/app/components/app-wizard/wizard-defs.ts
@@ -63,6 +63,7 @@ export class WizardDefs {
title,
version,
slides: slides.filter(exists),
+ submitBtn: 'Begin Update',
}
}
@@ -110,6 +111,7 @@ export class WizardDefs {
title,
version,
slides: slides.filter(exists),
+ submitBtn: 'Begin Update',
}
}
@@ -160,6 +162,7 @@ export class WizardDefs {
title,
version,
slides: slides.filter(exists),
+ submitBtn: 'Begin Downgrade',
}
}
@@ -199,6 +202,7 @@ export class WizardDefs {
action: 'uninstall',
title,
slides: slides.filter(exists),
+ submitBtn: 'Uninstall Anyway',
}
}
@@ -228,6 +232,7 @@ export class WizardDefs {
action: 'stop',
title,
slides: slides.filter(exists),
+ submitBtn: 'Stop Anyway',
}
}
@@ -261,6 +266,7 @@ export class WizardDefs {
action: 'configure',
title,
slides: slides.filter(exists),
+ submitBtn: 'Configure Anyway',
}
}
}
diff --git a/frontend/projects/ui/src/app/components/status/status.component.html b/frontend/projects/ui/src/app/components/status/status.component.html
index 2f42db493..b77b7cebe 100644
--- a/frontend/projects/ui/src/app/components/status/status.component.html
+++ b/frontend/projects/ui/src/app/components/status/status.component.html
@@ -14,7 +14,7 @@
rendering.display === PR[PS.Stopping].display &&
(sigtermTimeout | durationToSeconds) > 30
"
- >This may take a while.this may take a while
diff --git a/frontend/projects/ui/src/app/modals/app-config/app-config.page.html b/frontend/projects/ui/src/app/modals/app-config/app-config.page.html
index 40cf050b6..28d72273d 100644
--- a/frontend/projects/ui/src/app/modals/app-config/app-config.page.html
+++ b/frontend/projects/ui/src/app/modals/app-config/app-config.page.html
@@ -107,19 +107,21 @@
>
Save
Close
diff --git a/frontend/projects/ui/src/app/modals/app-config/app-config.page.ts b/frontend/projects/ui/src/app/modals/app-config/app-config.page.ts
index 35170172e..16593a491 100644
--- a/frontend/projects/ui/src/app/modals/app-config/app-config.page.ts
+++ b/frontend/projects/ui/src/app/modals/app-config/app-config.page.ts
@@ -121,7 +121,7 @@ export class AppConfigPage {
async dismiss() {
if (this.configForm?.dirty) {
- await this.presentAlertUnsaved()
+ this.presentAlertUnsaved()
} else {
this.modalCtrl.dismiss()
}
diff --git a/frontend/projects/ui/src/app/modals/app-recover-select/app-recover-select.page.html b/frontend/projects/ui/src/app/modals/app-recover-select/app-recover-select.page.html
index 8fdb13794..4382b908a 100644
--- a/frontend/projects/ui/src/app/modals/app-recover-select/app-recover-select.page.html
+++ b/frontend/projects/ui/src/app/modals/app-recover-select/app-recover-select.page.html
@@ -20,13 +20,23 @@
Ready to restore
- Unavailable. {{ option.title }} is already installed.
+ Unavailable. {{ option.title }} is already installed.
- Unavailable. Backup was made on a newer version of EmbassyOS.
+ Unavailable. Backup was made on a newer version of
+ EmbassyOS.
-
+
@@ -34,7 +44,13 @@
-
+
Restore Selected
diff --git a/frontend/projects/ui/src/app/modals/enum-list/enum-list.page.html b/frontend/projects/ui/src/app/modals/enum-list/enum-list.page.html
index 660562bf1..e31202a87 100644
--- a/frontend/projects/ui/src/app/modals/enum-list/enum-list.page.html
+++ b/frontend/projects/ui/src/app/modals/enum-list/enum-list.page.html
@@ -1,26 +1,30 @@
-
+ {{ spec.name }}
+
-
- {{ spec.name }}
-
-
-
- {{ selectAll ? 'All' : 'None' }}
-
-
+
+
+
+ {{ selectAll ? 'All' : 'None' }}
+
+
+
{{ spec.spec['value-names'][option.key] }}
-
+
@@ -28,7 +32,12 @@
-
+
Done
diff --git a/frontend/projects/ui/src/app/modals/os-welcome/os-welcome.page.html b/frontend/projects/ui/src/app/modals/os-welcome/os-welcome.page.html
index dd27c2ef1..c7f245298 100644
--- a/frontend/projects/ui/src/app/modals/os-welcome/os-welcome.page.html
+++ b/frontend/projects/ui/src/app/modals/os-welcome/os-welcome.page.html
@@ -90,7 +90,12 @@
-
+
Begin
diff --git a/frontend/projects/ui/src/app/modals/snake/snake.page.html b/frontend/projects/ui/src/app/modals/snake/snake.page.html
index fbe8988f6..30e79de0d 100644
--- a/frontend/projects/ui/src/app/modals/snake/snake.page.html
+++ b/frontend/projects/ui/src/app/modals/snake/snake.page.html
@@ -15,9 +15,14 @@
High Score: {{ highScore }}
- Byeeeeeee!
+ Save and Quit
+
diff --git a/frontend/projects/ui/src/app/pages/apps-routes/app-list/app-list-icon/app-list-icon.component.scss b/frontend/projects/ui/src/app/pages/apps-routes/app-list/app-list-icon/app-list-icon.component.scss
index 0a8e75789..a78ebb826 100644
--- a/frontend/projects/ui/src/app/pages/apps-routes/app-list/app-list-icon/app-list-icon.component.scss
+++ b/frontend/projects/ui/src/app/pages/apps-routes/app-list/app-list-icon/app-list-icon.component.scss
@@ -1,7 +1,6 @@
.bulb {
position: absolute !important;
- left: 9px !important;
- top: 8px !important;
+ top: 6px !important;
height: 14px;
width: 14px;
border-radius: 100%;
@@ -10,7 +9,6 @@
.warning-icon {
position: absolute !important;
- left: 6px !important;
top: 6px !important;
font-size: 12px;
border-radius: 100%;
@@ -21,7 +19,6 @@
.spinner {
position: absolute !important;
- left: 6px !important;
top: 6px !important;
width: 18px;
}
diff --git a/frontend/projects/ui/src/app/pages/server-routes/marketplaces/marketplaces.page.ts b/frontend/projects/ui/src/app/pages/server-routes/marketplaces/marketplaces.page.ts
index d9ef79a99..35c43704a 100644
--- a/frontend/projects/ui/src/app/pages/server-routes/marketplaces/marketplaces.page.ts
+++ b/frontend/projects/ui/src/app/pages/server-routes/marketplaces/marketplaces.page.ts
@@ -12,19 +12,10 @@ import { ValueSpecObject } from 'src/app/pkg-config/config-types'
import { GenericFormPage } from 'src/app/modals/generic-form/generic-form.page'
import { PatchDbService } from '../../../services/patch-db/patch-db.service'
import { v4 } from 'uuid'
-import {
- UIData,
- UIMarketplaceData,
-} from '../../../services/patch-db/data-model'
+import { UIMarketplaceData } from '../../../services/patch-db/data-model'
import { ConfigService } from '../../../services/config.service'
import { MarketplaceService } from 'src/app/services/marketplace.service'
-import {
- distinctUntilChanged,
- finalize,
- first,
- map,
- startWith,
-} from 'rxjs/operators'
+import { distinctUntilChanged, finalize, first } from 'rxjs/operators'
type Marketplaces = {
id: string | undefined
@@ -55,11 +46,8 @@ export class MarketplacesPage {
ngOnInit() {
this.patch
- .watch$('ui')
- .pipe(
- map((ui: UIData) => ui.marketplace),
- distinctUntilChanged(),
- )
+ .watch$('ui', 'marketplace')
+ .pipe(distinctUntilChanged())
.subscribe((mp: UIMarketplaceData | undefined) => {
let marketplaces: Marketplaces = [
{
@@ -114,8 +102,7 @@ export class MarketplacesPage {
async presentAction(id: string = '') {
// no need to view actions if is selected marketplace
- if (!id || id === this.patch.getData().ui.marketplace?.['selected-id'])
- return
+ if (id === this.patch.getData().ui.marketplace?.['selected-id']) return
const buttons: ActionSheetButton[] = [
{
diff --git a/frontend/projects/ui/src/app/pages/server-routes/server-show/server-show.page.ts b/frontend/projects/ui/src/app/pages/server-routes/server-show/server-show.page.ts
index 8043b8c65..2b6cdf075 100644
--- a/frontend/projects/ui/src/app/pages/server-routes/server-show/server-show.page.ts
+++ b/frontend/projects/ui/src/app/pages/server-routes/server-show/server-show.page.ts
@@ -16,6 +16,7 @@ import { WizardDefs } from 'src/app/components/app-wizard/wizard-defs'
import { exists, isEmptyObject, ErrorToastService } from '@start9labs/shared'
import { EOSService } from 'src/app/services/eos.service'
import { LocalStorageService } from 'src/app/services/local-storage.service'
+import { RecoveredPackageDataEntry } from 'src/app/services/patch-db/data-model'
@Component({
selector: 'server-show',
@@ -47,7 +48,7 @@ export class ServerShowPage {
this.patch
.watch$('recovered-packages')
.pipe(filter(exists), take(1))
- .subscribe(rps => {
+ .subscribe((rps: { [id: string]: RecoveredPackageDataEntry }) => {
this.hasRecoveredPackage = !isEmptyObject(rps)
})
}
@@ -233,16 +234,36 @@ export class ServerShowPage {
try {
const updateAvailable = await this.eosService.getEOS()
+
+ await loader.dismiss()
+
if (updateAvailable) {
this.updateEos()
+ } else {
+ this.presentAlertLatest()
}
} catch (e: any) {
+ await loader.dismiss()
this.errToast.present(e)
- } finally {
- loader.dismiss()
}
}
+ async presentAlertLatest() {
+ const alert = await this.alertCtrl.create({
+ header: 'Up to date!',
+ message: 'You are on the latest version of EmbassyOS.',
+ buttons: [
+ {
+ text: 'OK',
+ role: 'cancel',
+ cssClass: 'enter-click',
+ },
+ ],
+ cssClass: 'alert-success-message',
+ })
+ alert.present()
+ }
+
settings: ServerSettings = {
Backups: [
{
@@ -332,8 +353,8 @@ export class ServerShowPage {
disabled: of(false),
},
{
- title: 'Manually install a service',
- description: `Install a service by drag n' drop`,
+ title: 'Manually Install A Service',
+ description: `Install a service by drag and drop`,
icon: 'push-outline',
action: () =>
this.navCtrl.navigateForward(['sideload'], {
diff --git a/frontend/projects/ui/src/app/pages/server-routes/sideload/sideload.page.html b/frontend/projects/ui/src/app/pages/server-routes/sideload/sideload.page.html
index 3929a8ad0..e320fae31 100644
--- a/frontend/projects/ui/src/app/pages/server-routes/sideload/sideload.page.html
+++ b/frontend/projects/ui/src/app/pages/server-routes/sideload/sideload.page.html
@@ -3,7 +3,7 @@
- Manually install a service
+ Manually Install A Service
diff --git a/frontend/projects/ui/src/app/services/api/api.fixures.ts b/frontend/projects/ui/src/app/services/api/api.fixures.ts
index dbd974159..3b5ca1972 100644
--- a/frontend/projects/ui/src/app/services/api/api.fixures.ts
+++ b/frontend/projects/ui/src/app/services/api/api.fixures.ts
@@ -5,6 +5,7 @@ import {
PackageDataEntry,
PackageMainStatus,
PackageState,
+ ServerStatusInfo,
} from 'src/app/services/patch-db/data-model'
import {
Log,
@@ -18,6 +19,11 @@ import { BTC_ICON, LND_ICON, PROXY_ICON } from './api-icons'
import { MarketplacePkg } from '@start9labs/marketplace'
export module Mock {
+ export const ServerUpdated: ServerStatusInfo = {
+ 'backing-up': false,
+ 'update-progress': null,
+ updated: true,
+ }
export const MarketplaceEos: RR.GetMarketplaceEOSRes = {
version: '0.3.2',
headline: 'Our biggest release ever.',
diff --git a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts
index 625e7e160..5711f4ca7 100644
--- a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts
+++ b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts
@@ -187,7 +187,6 @@ export class MockApiService extends ApiService {
value: initialProgress,
},
]
-
return this.withRevision(patch, 'updating')
}
@@ -860,6 +859,16 @@ export class MockApiService extends ApiService {
},
]
this.updateMock(patch4)
+ // set patch indicating update is complete
+ await pauseFor(100)
+ const patch6 = [
+ {
+ op: PatchOp.REPLACE,
+ path: '/server-info/status-info',
+ value: Mock.ServerUpdated,
+ },
+ ]
+ this.updateMock(patch6)
}, 1000)
}
diff --git a/frontend/projects/ui/src/app/services/api/mock-patch.ts b/frontend/projects/ui/src/app/services/api/mock-patch.ts
index 8cd05cd07..bc700f6df 100644
--- a/frontend/projects/ui/src/app/services/api/mock-patch.ts
+++ b/frontend/projects/ui/src/app/services/api/mock-patch.ts
@@ -444,7 +444,7 @@ export const mockPatchData: DataModel = {
'donation-url': null,
alerts: {
install: null,
- uninstall: undefined,
+ uninstall: null,
restore:
'If this is a duplicate instance of the same LND node, you may loose your funds.',
start: 'Starting LND is good for your health.',
diff --git a/frontend/projects/ui/src/app/services/eos.service.ts b/frontend/projects/ui/src/app/services/eos.service.ts
index 53943937c..3446c1d59 100644
--- a/frontend/projects/ui/src/app/services/eos.service.ts
+++ b/frontend/projects/ui/src/app/services/eos.service.ts
@@ -4,6 +4,7 @@ import { MarketplaceEOS } from 'src/app/services/api/api.types'
import { ApiService } from 'src/app/services/api/embassy-api.service'
import { Emver } from '@start9labs/shared'
import { PatchDbService } from 'src/app/services/patch-db/patch-db.service'
+import { switchMap, take } from 'rxjs/operators'
@Injectable({
providedIn: 'root',
diff --git a/frontend/projects/ui/src/app/services/marketplace.service.ts b/frontend/projects/ui/src/app/services/marketplace.service.ts
index 46b04e28f..52f4d00d3 100644
--- a/frontend/projects/ui/src/app/services/marketplace.service.ts
+++ b/frontend/projects/ui/src/app/services/marketplace.service.ts
@@ -12,13 +12,11 @@ import { ApiService } from 'src/app/services/api/embassy-api.service'
import { ConfigService } from 'src/app/services/config.service'
import {
ServerInfo,
- UIData,
UIMarketplaceData,
} from 'src/app/services/patch-db/data-model'
import { PatchDbService } from 'src/app/services/patch-db/patch-db.service'
import {
catchError,
- distinctUntilChanged,
filter,
map,
shareReplay,
@@ -34,11 +32,7 @@ export class MarketplaceService extends AbstractMarketplaceService {
private readonly altMarketplaceData$: Observable<
UIMarketplaceData | undefined
- > = this.patch.watch$('ui').pipe(
- map((ui: UIData) => ui.marketplace),
- distinctUntilChanged(),
- shareReplay({ bufferSize: 1, refCount: true }),
- )
+ > = this.patch.watch$('ui', 'marketplace').pipe(shareReplay())
private readonly marketplace$ = this.altMarketplaceData$.pipe(
map(data => this.toMarketplace(data)),
@@ -46,7 +40,7 @@ export class MarketplaceService extends AbstractMarketplaceService {
private readonly serverInfo$: Observable = this.patch
.watch$('server-info')
- .pipe(take(1), shareReplay({ bufferSize: 1, refCount: true }))
+ .pipe(take(1), shareReplay())
private readonly categories$: Observable = this.marketplace$.pipe(
switchMap(({ url }) =>
@@ -57,6 +51,7 @@ export class MarketplaceService extends AbstractMarketplaceService {
),
),
map(({ categories }) => categories),
+ shareReplay(),
)
private readonly pkg$: Observable =
@@ -79,7 +74,7 @@ export class MarketplaceService extends AbstractMarketplaceService {
return of([])
}),
- shareReplay({ bufferSize: 1, refCount: true }),
+ shareReplay(),
)
constructor(
diff --git a/frontend/projects/ui/src/app/services/patch-db/data-model.ts b/frontend/projects/ui/src/app/services/patch-db/data-model.ts
index 0d5e94d40..8eca23da2 100644
--- a/frontend/projects/ui/src/app/services/patch-db/data-model.ts
+++ b/frontend/projects/ui/src/app/services/patch-db/data-model.ts
@@ -52,15 +52,17 @@ export interface ServerInfo {
'lan-address': Url
'tor-address': Url
'unread-notification-count': number
- 'status-info': {
- 'backing-up': boolean
- updated: boolean
- 'update-progress': { size: number | null; downloaded: number } | null
- }
+ 'status-info': ServerStatusInfo
'eos-version-compat': string
'password-hash': string
}
+export interface ServerStatusInfo {
+ 'backing-up': boolean
+ updated: boolean
+ 'update-progress': { size: number | null; downloaded: number } | null
+}
+
export enum ServerStatus {
Running = 'running',
Updated = 'updated',
diff --git a/frontend/projects/ui/src/styles.scss b/frontend/projects/ui/src/styles.scss
index 5573723f8..70250ed65 100644
--- a/frontend/projects/ui/src/styles.scss
+++ b/frontend/projects/ui/src/styles.scss
@@ -60,6 +60,10 @@ $subheader-height: 48px;
}
}
+.btn-128 {
+ min-width: 128px;
+}
+
.subheader-padding {
--padding-top: #{$subheader-height} + 10px;
}
diff --git a/frontend/registries.json b/frontend/registries.json
index 07170e1d2..755f63edc 100644
--- a/frontend/registries.json
+++ b/frontend/registries.json
@@ -5,10 +5,10 @@
},
"beta": {
"url": "https://beta-registry-0-3.start9labs.com",
- "name": "Embassy Marketplace (Beta)"
+ "name": "Beta Marketplace"
},
"alpha": {
"url": "https://alpha-registry-0-3.start9labs.com",
- "name": "Embassy Marketplace (Alpha)"
+ "name": "Alpha Marketplace"
}
}