Encrypt Backup
-
Enter your master password to create an encrypted backup.
+
Enter your master password to create an encrypted backup.
Decrypt Backup
-
Enter the password that was originally used to encrypt this backup.
+
Enter the password that was originally used to encrypt this backup.
diff --git a/ui/src/app/pages/apps-routes/app-actions/app-actions.module.ts b/ui/src/app/pages/apps-routes/app-actions/app-actions.module.ts
index a769ef9b9..8d5cb6e52 100644
--- a/ui/src/app/pages/apps-routes/app-actions/app-actions.module.ts
+++ b/ui/src/app/pages/apps-routes/app-actions/app-actions.module.ts
@@ -7,6 +7,7 @@ import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-b
import { QRComponentModule } from 'src/app/components/qr/qr.component.module'
import { SharingModule } from 'src/app/modules/sharing.module'
import { AppActionInputPageModule } from 'src/app/modals/app-action-input/app-action-input.module'
+import { AppRestoreComponentModule } from 'src/app/modals/app-restore/app-restore.component.module'
const routes: Routes = [
{
@@ -24,6 +25,7 @@ const routes: Routes = [
QRComponentModule,
SharingModule,
AppActionInputPageModule,
+ AppRestoreComponentModule,
],
declarations: [AppActionsPage],
})
diff --git a/ui/src/app/pages/apps-routes/app-actions/app-actions.page.html b/ui/src/app/pages/apps-routes/app-actions/app-actions.page.html
index 0567483dd..db49895c2 100644
--- a/ui/src/app/pages/apps-routes/app-actions/app-actions.page.html
+++ b/ui/src/app/pages/apps-routes/app-actions/app-actions.page.html
@@ -7,9 +7,57 @@
+
+
-
+
+
+
+
+
+
+
+
+
+
+ {{ action.value.name }}
+
+
+ {{ action.value.description }}
+
+
+
+
+
+
+
+
+
+ Restore From Backup
+
+
+ All changes since backup will be lost.
+
+
+
+
+
+
+
+
+
+ Uninstall
+
+
+ This will uninstall the service from your Embassy and delete all data permanently.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ui/src/app/pages/apps-routes/app-actions/app-actions.page.ts b/ui/src/app/pages/apps-routes/app-actions/app-actions.page.ts
index 09bfe0f5f..7ac13751c 100644
--- a/ui/src/app/pages/apps-routes/app-actions/app-actions.page.ts
+++ b/ui/src/app/pages/apps-routes/app-actions/app-actions.page.ts
@@ -10,6 +10,7 @@ import { Subscription } from 'rxjs'
import { ConfigCursor } from 'src/app/pkg-config/config-cursor'
import { AppActionInputPage } from 'src/app/modals/app-action-input/app-action-input.page'
import { ErrorToastService } from 'src/app/services/error-toast.service'
+import { AppRestoreComponent } from 'src/app/modals/app-restore/app-restore.component'
@Component({
selector: 'app-actions',
@@ -79,7 +80,7 @@ export class AppActionsPage {
await alert.present()
}
} else {
- const statuses = [...action.value['allowedStatuses']]
+ const statuses = [...action.value['allowed-statuses']]
const last = statuses.pop()
let statusesStr = statuses.join(', ')
let error = null
@@ -103,6 +104,23 @@ export class AppActionsPage {
}
}
+ async restore (): Promise
{
+ const m = await this.modalCtrl.create({
+ componentProps: {
+ pkgId: this.pkgId,
+ },
+ component: AppRestoreComponent,
+ backdropDismiss: false,
+ })
+
+ m.onWillDismiss().then(res => {
+ const data = res.data
+ if (data.error) this.errToast.present(data.error)
+ })
+
+ return await m.present()
+ }
+
async uninstall (manifest: Manifest) {
const { id, title, version, alerts } = manifest
const data = await wizardModal(
@@ -134,7 +152,6 @@ export class AppActionsPage {
header: 'Execution Complete',
message: res.message.split('\n').join(''),
buttons: ['OK'],
- cssClass: 'alert-success-message',
})
await successAlert.present()
} catch (e) {
diff --git a/ui/src/app/pages/apps-routes/app-config/app-config.page.html b/ui/src/app/pages/apps-routes/app-config/app-config.page.html
index 0674cb66e..97c9d0636 100644
--- a/ui/src/app/pages/apps-routes/app-config/app-config.page.html
+++ b/ui/src/app/pages/apps-routes/app-config/app-config.page.html
@@ -52,9 +52,9 @@
-
+
-
+
{{ rec.dependentTitle }}
diff --git a/ui/src/app/pages/apps-routes/app-config/app-config.page.ts b/ui/src/app/pages/apps-routes/app-config/app-config.page.ts
index 1bfeae07d..f47146bd8 100644
--- a/ui/src/app/pages/apps-routes/app-config/app-config.page.ts
+++ b/ui/src/app/pages/apps-routes/app-config/app-config.page.ts
@@ -206,7 +206,6 @@ export class AppConfigPage {
},
{
text: `Leave`,
- cssClass: 'alert-danger',
handler: () => {
this.navCtrl.back()
},
diff --git a/ui/src/app/pages/apps-routes/app-interfaces/app-interfaces.page.html b/ui/src/app/pages/apps-routes/app-interfaces/app-interfaces.page.html
index 57fc03920..1d82350a7 100644
--- a/ui/src/app/pages/apps-routes/app-interfaces/app-interfaces.page.html
+++ b/ui/src/app/pages/apps-routes/app-interfaces/app-interfaces.page.html
@@ -7,43 +7,37 @@
-
-
-
-
-
-
- {{ interface.value.name }}
- {{ interface.value.description }}
-
- Launch
-
-
-
-
-
-
-
- Tor Address
- {{ 'http://' + int['tor-address'] }}
-
-
-
-
-
-
-
- LAN Address
- {{ 'https://' + int['lan-address'] }}
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {{ interface.value.name }}
+ {{ interface.value.description }}
+
+ Launch
+
+
+
+
+
+
+
+ Tor Address
+ {{ 'http://' + int['tor-address'] }}
+
+
+
+
+
+
+
+ LAN Address
+ {{ 'https://' + int['lan-address'] }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ui/src/app/pages/apps-routes/app-list/app-list.page.html b/ui/src/app/pages/apps-routes/app-list/app-list.page.html
index baf87a241..abde30d58 100644
--- a/ui/src/app/pages/apps-routes/app-list/app-list.page.html
+++ b/ui/src/app/pages/apps-routes/app-list/app-list.page.html
@@ -10,10 +10,10 @@
-
Welcome to your Embassy
+
Welcome to Embassy
Get started by installing your first service.
-
+
Marketplace
diff --git a/ui/src/app/pages/apps-routes/app-list/app-list.page.scss b/ui/src/app/pages/apps-routes/app-list/app-list.page.scss
index 0678b11ce..a821184cb 100644
--- a/ui/src/app/pages/apps-routes/app-list/app-list.page.scss
+++ b/ui/src/app/pages/apps-routes/app-list/app-list.page.scss
@@ -25,7 +25,6 @@
.main-img {
width: 50%;
margin: 12px;
- border-radius: var(--icon-border-radius);
}
.bulb-on {
@@ -70,7 +69,7 @@
border-color: transparent;
}
ion-icon {
- color: var(--ion-color-medium);
+ color: var(--ion-color-dark-shade);
}
}
diff --git a/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html b/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html
index 23a61df63..b6ca9e725 100644
--- a/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html
+++ b/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html
@@ -12,7 +12,7 @@
-
+
diff --git a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html
index a85baed77..5aee68a73 100644
--- a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html
+++ b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html
@@ -3,62 +3,19 @@
- Health
+ Monitor
-
+
-
-
-
-
- Health Checks
-
-
-
-
-
- No health checks
-
-
-
-
-
-
-
-
-
-
-
-
{{ health.key }}
-
{{ health.value.error }}
-
-
-
-
-
-
-
-
-
-
-
- Metrics
-
-
-
-
-
-
-
- {{ metric.key }}
-
-
- {{ metric.value.value }} {{ metric.value.unit }}
-
-
-
-
-
+
+
+
+ {{ metric.key }}
+
+ {{ metric.value.value }} {{ metric.value.unit }}
+
+
+
diff --git a/ui/src/app/pages/apps-routes/app-show/app-show.module.ts b/ui/src/app/pages/apps-routes/app-show/app-show.module.ts
index 565484e3b..fdc51942e 100644
--- a/ui/src/app/pages/apps-routes/app-show/app-show.module.ts
+++ b/ui/src/app/pages/apps-routes/app-show/app-show.module.ts
@@ -6,7 +6,6 @@ import { AppShowPage } from './app-show.page'
import { StatusComponentModule } from 'src/app/components/status/status.component.module'
import { SharingModule } from 'src/app/modules/sharing.module'
import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module'
-import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module'
import { InstallWizardComponentModule } from 'src/app/components/install-wizard/install-wizard.component.module'
const routes: Routes = [
@@ -24,7 +23,6 @@ const routes: Routes = [
IonicModule,
RouterModule.forChild(routes),
PwaBackComponentModule,
- BadgeMenuComponentModule,
InstallWizardComponentModule,
],
declarations: [AppShowPage],
diff --git a/ui/src/app/pages/apps-routes/app-show/app-show.page.html b/ui/src/app/pages/apps-routes/app-show/app-show.page.html
index c847f5e01..43a6b06a5 100644
--- a/ui/src/app/pages/apps-routes/app-show/app-show.page.html
+++ b/ui/src/app/pages/apps-routes/app-show/app-show.page.html
@@ -3,53 +3,118 @@
- Service Details
-
-
-
+
+
+
+
+
+ 20">
+ {{ pkg.manifest.title }}
+
+ {{ pkg.manifest.version | displayEmver }}
+
+
-
+
-
-
-
-
-
-
-
- 20">
- {{ pkg.manifest.title }}
-
- {{ pkg.manifest.version | displayEmver }}
+
+
+ Status
+
+
+
-
-
-
-
-
- Configure
-
-
- Stop
-
-
- Fix
-
-
- Start
-
-
-
-
-
- Launch Web Interface
+
+ Web
-
-
+
+ Configure
+
+
+ Stop
+
+
+ Fix
+
+
+ Start
+
+
+
+
+
+
+
+ Health Checks
+
+
+
+
+
+
+ {{ health.key }}
+ {{ health.value.result }}
+ {{ health.value.error }}
+
+
+
+
+
+ Menu
+
+
+ {{ button.title }}
+
+
+
+
+ Dependencies
+
+
+
+
+
+
+ {{ patch.data['package-data'][dep.key] ? patch.data['package-data'][dep.key].manifest.title : pkg.installed.status['dependency-errors'][dep.key]?.title }}
+ {{ pkg.manifest.dependencies[dep.key].version | displayEmver }}
+ {{ pkg.installed.status['dependency-errors'][dep.key] ? pkg.installed.status['dependency-errors'][dep.key].type : 'satisfied' }}
+
+
+
+ View
+
+
+
+
+ Install
+
+
+
+
+ Start
+
+
+ Update
+
+
+ Configure
+
+
+
+
+
+
+
+
+
+
+
+
+
Downloading: {{ (pkg['install-progress'] | installState).downloadProgress }}%
-
-
-
-
-
-
-
-
-
-
- {{ button.title }}
-
-
-
-
-
-
-
-
-
- Dependencies
-
-
-
-
-
-
-
-
-
- {{ patch.data['package-data'][dep.key] ? patch.data['package-data'][dep.key].manifest.title : pkg.installed.status['dependency-errors'][dep.key]?.title }}
- {{ pkg.manifest.dependencies[dep.key].version | displayEmver }}
- {{ pkg.installed.status['dependency-errors'][dep.key] ? pkg.installed.status['dependency-errors'][dep.key].type : 'satisfied' }}
-
-
-
- View
-
-
-
-
- Install
-
-
-
-
- Start
-
-
- Update
-
-
- Configure
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/app/pages/apps-routes/app-show/app-show.page.scss b/ui/src/app/pages/apps-routes/app-show/app-show.page.scss
index 4eaf15be4..504da9ea1 100644
--- a/ui/src/app/pages/apps-routes/app-show/app-show.page.scss
+++ b/ui/src/app/pages/apps-routes/app-show/app-show.page.scss
@@ -1,45 +1,14 @@
.less-large {
- font-size: 20px !important;
+ font-size: 18px !important;
}
-.top-plate {
- background: var(--ion-item-background);
- margin: 0 16px;
- padding: 12px;
- border-radius: 10px;
- border-style: solid;
- border-color: #373737;
- ion-item {
- border-radius: 10px;
- }
-}
-
-.status-readout {
- --background: transparent;
- display: flex;
- justify-content: space-between;
- padding: 8px 16px;
- border-radius: 10px;
- align-items: center;
- background: var(--ion-background-color);
+.action-button {
margin: 10px;
- border-style: solid;
- border-width: 1px;
- border-color: #404040;
+ min-height: 36px;
+ min-width: 72px;
}
-.launch-button {
- --background: rgb(70 193 255 / 75%);
- --background-hover: rgb(70 193 255);
- --background-hover-opacity: 100%;
- --border-style: none;
- --color: white;
- --border-radius: 10px;
- margin: 12px 10px;
-}
-
-.dep-card {
- border-radius: 10px;
- border-style: solid;
- border-color: #404040;
-}
+.icon-spinner {
+ height: 20px;
+ width: 20px;
+}
\ No newline at end of file
diff --git a/ui/src/app/pages/apps-routes/app-show/app-show.page.ts b/ui/src/app/pages/apps-routes/app-show/app-show.page.ts
index 65f234782..0b1c6e51b 100644
--- a/ui/src/app/pages/apps-routes/app-show/app-show.page.ts
+++ b/ui/src/app/pages/apps-routes/app-show/app-show.page.ts
@@ -8,7 +8,7 @@ import { wizardModal } from 'src/app/components/install-wizard/install-wizard.co
import { WizardBaker } from 'src/app/components/install-wizard/prebaked-wizards'
import { ConfigService } from 'src/app/services/config.service'
import { PatchDbService } from 'src/app/services/patch-db/patch-db.service'
-import { DependencyErrorConfigUnsatisfied, DependencyErrorNotInstalled, DependencyErrorType, PackageDataEntry, PackageState } from 'src/app/services/patch-db/data-model'
+import { DependencyErrorConfigUnsatisfied, DependencyErrorNotInstalled, DependencyErrorType, MainStatus, PackageDataEntry, PackageState } from 'src/app/services/patch-db/data-model'
import { FEStatus, PkgStatusRendering, renderPkgStatus } from 'src/app/services/pkg-status-rendering.service'
import { ConnectionService } from 'src/app/services/connection.service'
import { ErrorToastService } from 'src/app/services/error-toast.service'
@@ -29,6 +29,8 @@ export class AppShowPage {
DependencyErrorType = DependencyErrorType
rendering: PkgStatusRendering
Math = Math
+ mainStatus: MainStatus
+
@ViewChild(IonContent) content: IonContent
subs: Subscription[] = []
@@ -59,6 +61,11 @@ export class AppShowPage {
this.connected = connected
this.rendering = renderPkgStatus(pkg.state, pkg.installed.status)
}),
+ this.patch.watch$('package-data', this.pkgId, 'installed', 'status', 'main')
+ .subscribe(main => {
+ this.mainStatus = main
+ console.log(this.mainStatus)
+ }),
]
this.setButtons()
}
@@ -236,17 +243,9 @@ export class AppShowPage {
color: 'danger',
disabled: [],
},
- {
- action: () => this.navCtrl.navigateForward(['metrics'], { relativeTo: this.route }),
- title: 'Monitor',
- icon: 'medkit-outline',
- color: 'danger',
- // @TODO make the disabled check better. Don't want to list every status here. Monitor should be disabled except is pkg is running.
- disabled: [FEStatus.Installing, FEStatus.Updating, FEStatus.Removing, FEStatus.BackingUp, FEStatus.Restoring],
- },
{
action: () => this.navCtrl.navigateForward(['config'], { relativeTo: this.route }),
- title: 'Configure',
+ title: 'Settings',
icon: 'construct-outline',
color: 'danger',
disabled: [FEStatus.Installing, FEStatus.Updating, FEStatus.Removing, FEStatus.BackingUp, FEStatus.Restoring],
@@ -272,6 +271,14 @@ export class AppShowPage {
color: 'danger',
disabled: [],
},
+ {
+ action: () => this.navCtrl.navigateForward(['metrics'], { relativeTo: this.route }),
+ title: 'Monitor',
+ icon: 'pulse-outline',
+ color: 'danger',
+ // @TODO make the disabled check better. Don't want to list every status here. Monitor should be disabled except is pkg is running.
+ disabled: [FEStatus.Installing, FEStatus.Updating, FEStatus.Removing, FEStatus.BackingUp, FEStatus.Restoring],
+ },
{
action: () => this.navCtrl.navigateForward(['logs'], { relativeTo: this.route }),
title: 'Logs',
@@ -279,13 +286,6 @@ export class AppShowPage {
color: 'danger',
disabled: [],
},
- {
- action: () => this.navCtrl.navigateForward(['restore'], { relativeTo: this.route }),
- title: 'Restore From Backup',
- icon: 'color-wand-outline',
- color: 'danger',
- disabled: [FEStatus.Connecting, FEStatus.Installing, FEStatus.Updating, FEStatus.Stopping, FEStatus.Removing, FEStatus.BackingUp, FEStatus.Restoring],
- },
{
action: () => this.navCtrl.navigateForward(['manifest'], { relativeTo: this.route }),
title: 'Package Details',
@@ -295,18 +295,11 @@ export class AppShowPage {
},
{
action: () => this.donate(),
- title: 'Support Project',
+ title: 'Donate',
icon: 'logo-bitcoin',
color: 'danger',
disabled: [],
},
- {
- action: () => this.navCtrl.navigateForward(['/marketplace', this.pkgId], { relativeTo: this.route }),
- title: 'Marketplace Listing',
- icon: 'storefront-outline',
- color: 'danger',
- disabled: [],
- },
]
}
}
diff --git a/ui/src/app/pages/apps-routes/apps-routing.module.ts b/ui/src/app/pages/apps-routes/apps-routing.module.ts
index 05ae01bc0..7816170c1 100644
--- a/ui/src/app/pages/apps-routes/apps-routing.module.ts
+++ b/ui/src/app/pages/apps-routes/apps-routing.module.ts
@@ -51,10 +51,6 @@ const routes: Routes = [
path: ':pkgId/properties',
loadChildren: () => import('./app-properties/app-properties.module').then(m => m.AppPropertiesPageModule),
},
- {
- path: ':pkgId/restore',
- loadChildren: () => import('./app-restore/app-restore.module').then(m => m.AppRestorePageModule),
- },
]
@NgModule({
diff --git a/ui/src/app/pages/login/login.page.html b/ui/src/app/pages/login/login.page.html
index c90bc5177..ef6a33ed2 100644
--- a/ui/src/app/pages/login/login.page.html
+++ b/ui/src/app/pages/login/login.page.html
@@ -1,31 +1,35 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+

+
+
+
+
+ Log in to Embassy
+
+
+
+
+
diff --git a/ui/src/app/pages/login/login.page.scss b/ui/src/app/pages/login/login.page.scss
index 3f4f0de05..eca54b7a1 100644
--- a/ui/src/app/pages/login/login.page.scss
+++ b/ui/src/app/pages/login/login.page.scss
@@ -1,3 +1,28 @@
-.sharp-button {
- --border-radius: 1px;
+ion-card-title {
+ margin: 24px 0;
+ font-family: 'Montserrat';
+ font-size: x-large;
+ --color: var(--ion-color-light);
+}
+
+ion-item {
+ --border-radius: 4px;
+ --border-style: solid;
+ --border-width: 1px;
+ --border-color: var(--ion-color-light);
+}
+
+.input-label {
+ text-align: left;
+ padding-bottom: 2px;
+ font-size: small;
+ font-weight: bold;
+}
+
+.login-button {
+ margin-inline-start: 0;
+ margin-inline-end: 0;
+ margin-top: 24px;
+ height: 48px;
+ --background: linear-gradient(45deg, var(--ion-color-light) 16%, var(--ion-color-dark) 150%);
}
\ No newline at end of file
diff --git a/ui/src/app/pages/login/login.page.ts b/ui/src/app/pages/login/login.page.ts
index f0efb80d1..dd40cbd80 100644
--- a/ui/src/app/pages/login/login.page.ts
+++ b/ui/src/app/pages/login/login.page.ts
@@ -33,7 +33,7 @@ export class LoginPage {
this.error = ''
this.loader = await this.loadingCtrl.create({
- message: 'Authenticating',
+ message: 'Logging in',
spinner: 'lines',
})
await this.loader.present()
diff --git a/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.html b/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.html
index e6fd347b6..a42d165e9 100644
--- a/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.html
+++ b/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.html
@@ -11,11 +11,23 @@
-
-
+
+
{{ note.key | displayEmver }}
-
+
diff --git a/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.scss b/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.scss
index 7a499cb08..e122c8b4b 100644
--- a/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.scss
+++ b/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.scss
@@ -1,8 +1,8 @@
-.metric-note {
- font-size: 16px;
+.panel {
+ margin: 0px;
+ padding: 0px 24px;
}
-.acc-text {
- margin: 0px 0px 10px 0px;
- padding: 15px;
+.active {
+ border: 5px solid #4d4d4d;
}
\ No newline at end of file
diff --git a/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.ts b/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.ts
index aaa52d4b4..7621c8494 100644
--- a/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.ts
+++ b/ui/src/app/pages/marketplace-routes/app-release-notes/app-release-notes.page.ts
@@ -37,6 +37,11 @@ export class AppReleaseNotes {
}
}
+ getDocSize (selected: string) {
+ const element = document.getElementById(selected)
+ return `${element.scrollHeight}px`
+ }
+
asIsOrder (a: any, b: any) {
return 0
}
diff --git a/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.html b/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.html
index 17e93fbe4..0113c999f 100644
--- a/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.html
+++ b/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.html
@@ -1,59 +1,59 @@
-
- Service Marketplace
+
+
-
-
-
-
+
-
-
- Now Available...
- EmbassyOS Version {{ eos.version }}
-
-
- {{ eos.headline }}
-
-
+ Embassy Marketplace
- Categories
-
-