From 31811eb91e66e18ec58f32f9531e8fcd1ea2f229 Mon Sep 17 00:00:00 2001 From: Matt Hill Date: Tue, 11 Jul 2023 12:53:42 -0600 Subject: [PATCH] fix errors in shared and marketplace --- .../release-notes/release-notes.component.ts | 10 +-- .../show/additional/additional.component.ts | 4 +- .../projects/marketplace/src/public-api.ts | 1 + .../projects/shared/src/classes/http-error.ts | 4 +- .../projects/shared/src/classes/rpc-error.ts | 4 +- .../responsive-col-viewport.directive.ts | 14 ++-- .../ui/pages/system/domains/domain.const.ts | 76 ++++++++++++++----- .../services/api/embassy-mock-api.service.ts | 2 +- 8 files changed, 77 insertions(+), 38 deletions(-) diff --git a/frontend/projects/marketplace/src/pages/release-notes/release-notes.component.ts b/frontend/projects/marketplace/src/pages/release-notes/release-notes.component.ts index 49da475d9..c075d09ea 100644 --- a/frontend/projects/marketplace/src/pages/release-notes/release-notes.component.ts +++ b/frontend/projects/marketplace/src/pages/release-notes/release-notes.component.ts @@ -10,17 +10,17 @@ import { AbstractMarketplaceService } from '../../services/marketplace.service' changeDetection: ChangeDetectionStrategy.OnPush, }) export class ReleaseNotesComponent { + constructor( + private readonly route: ActivatedRoute, + private readonly marketplaceService: AbstractMarketplaceService, + ) {} + private readonly pkgId = getPkgId(this.route) private selected: string | null = null readonly notes$ = this.marketplaceService.fetchReleaseNotes$(this.pkgId) - constructor( - private readonly route: ActivatedRoute, - private readonly marketplaceService: AbstractMarketplaceService, - ) {} - isSelected(key: string): boolean { return this.selected === key } diff --git a/frontend/projects/marketplace/src/pages/show/additional/additional.component.ts b/frontend/projects/marketplace/src/pages/show/additional/additional.component.ts index 8ac6164ae..6814aad6c 100644 --- a/frontend/projects/marketplace/src/pages/show/additional/additional.component.ts +++ b/frontend/projects/marketplace/src/pages/show/additional/additional.component.ts @@ -37,8 +37,6 @@ export class AdditionalComponent { @Output() version = new EventEmitter() - readonly url = this.route.snapshot.queryParamMap.get('url') || undefined - readonly displayEmver = displayEmver constructor( @@ -50,6 +48,8 @@ export class AdditionalComponent { private readonly route: ActivatedRoute, ) {} + readonly url = this.route.snapshot.queryParamMap.get('url') || undefined + presentAlertVersions(version: TemplateRef) { this.dialogs .open(version, { diff --git a/frontend/projects/marketplace/src/public-api.ts b/frontend/projects/marketplace/src/public-api.ts index 605b76ebe..c8863886f 100644 --- a/frontend/projects/marketplace/src/public-api.ts +++ b/frontend/projects/marketplace/src/public-api.ts @@ -24,6 +24,7 @@ export * from './pages/show/package/package.module' export * from './pipes/filter-packages.pipe' export * from './pipes/mime-type.pipe' +export * from './components/store-icon/store-icon.component' export * from './components/store-icon/store-icon.component.module' export * from './services/marketplace.service' diff --git a/frontend/projects/shared/src/classes/http-error.ts b/frontend/projects/shared/src/classes/http-error.ts index df5d66806..8c7153ba3 100644 --- a/frontend/projects/shared/src/classes/http-error.ts +++ b/frontend/projects/shared/src/classes/http-error.ts @@ -1,8 +1,8 @@ import { HttpErrorResponse } from '@angular/common/http' export class HttpError { + constructor(private readonly error: HttpErrorResponse) {} + readonly code = this.error.status readonly message = this.error.statusText - - constructor(private readonly error: HttpErrorResponse) {} } diff --git a/frontend/projects/shared/src/classes/rpc-error.ts b/frontend/projects/shared/src/classes/rpc-error.ts index 848fd5f4d..d8d3de816 100644 --- a/frontend/projects/shared/src/classes/rpc-error.ts +++ b/frontend/projects/shared/src/classes/rpc-error.ts @@ -1,11 +1,11 @@ import { RPCErrorDetails } from '../types/rpc.types' export class RpcError { + constructor(private readonly error: RPCErrorDetails) {} + readonly code = this.error.code readonly message = this.getMessage() - constructor(private readonly error: RPCErrorDetails) {} - private getMessage(): string { let message: string diff --git a/frontend/projects/shared/src/directives/responsive-col/responsive-col-viewport.directive.ts b/frontend/projects/shared/src/directives/responsive-col/responsive-col-viewport.directive.ts index 0ebb564c8..aeded81ac 100644 --- a/frontend/projects/shared/src/directives/responsive-col/responsive-col-viewport.directive.ts +++ b/frontend/projects/shared/src/directives/responsive-col/responsive-col-viewport.directive.ts @@ -46,13 +46,6 @@ export class ResponsiveColViewportDirective extends Observable { @Input() responsiveColViewport: Observable | '' = '' - private readonly stream$ = this.resize$.pipe( - map(() => this.elementRef.nativeElement.clientWidth), - map(width => this.breakpoints.find(([step]) => width >= step)?.[1] || 'xs'), - distinctUntilChanged(), - tuiZonefree(this.zone), - ) - constructor( @Inject(BREAKPOINTS) private readonly breakpoints: readonly [number, Step][], @@ -64,4 +57,11 @@ export class ResponsiveColViewportDirective extends Observable { (this.responsiveColViewport || this.stream$).subscribe(subscriber), ) } + + private readonly stream$ = this.resize$.pipe( + map(() => this.elementRef.nativeElement.clientWidth), + map(width => this.breakpoints.find(([step]) => width >= step)?.[1] || 'xs'), + distinctUntilChanged(), + tuiZonefree(this.zone), + ) } diff --git a/frontend/projects/ui/src/app/apps/ui/pages/system/domains/domain.const.ts b/frontend/projects/ui/src/app/apps/ui/pages/system/domains/domain.const.ts index 1670fde80..fade1dedd 100644 --- a/frontend/projects/ui/src/app/apps/ui/pages/system/domains/domain.const.ts +++ b/frontend/projects/ui/src/app/apps/ui/pages/system/domains/domain.const.ts @@ -1,25 +1,8 @@ import { Config } from '@start9labs/start-sdk/lib/config/builder/config' import { Value } from '@start9labs/start-sdk/lib/config/builder/value' +import { Variants } from '@start9labs/start-sdk/lib/config/builder/variants' -export const domainSpec = Config.of({ - provider: Value.select({ - name: 'Provider', - required: { default: null }, - values: { - namecheap: 'Namecheap', - googledomains: 'Google Domains', - duckdns: 'Duck DNS', - changeip: 'ChangeIP', - easydns: 'easyDNS', - zoneedit: 'Zoneedit', - dyn: 'DynDNS', - }, - }), - domain: Value.text({ - name: 'Domain Name', - required: { default: null }, - placeholder: 'yourdomain.com', - }), +const ddnsOptions = { username: Value.text({ name: 'Username', required: { default: null }, @@ -29,6 +12,61 @@ export const domainSpec = Config.of({ required: { default: null }, masked: true, }), +} +const ipv4Option = { + ipv4: Value.toggle({ + name: 'Enable IPv4', + default: false, + description: + 'Enable IPv4 if:
  1. Your ISP or router does not support IPv6
  2. You want those who lack IPv6 to reach your site
Warning! IPv4 addresses are closely correlated with geographic areas. If you are not using a reverse proxy, everyone will be able to determine the general location of your server on Earth.', + }), +} + +const options = Config.of(ddnsOptions) +const optionsPlus = Config.of({ ...ddnsOptions, ...ipv4Option }) + +export const domainSpec = Config.of({ + hostname: Value.text({ + name: 'Hostname', + required: { default: null }, + placeholder: 'yourdomain.com', + }), + provider: Value.union( + { + name: 'Dynamic DNS Provider', + required: { default: 'start9' }, + }, + Variants.of({ + start9: { + name: 'Start9', + spec: Config.of(ipv4Option), + }, + duckdns: { + name: 'Duck DNS', + spec: optionsPlus, + }, + dyn: { + name: 'DynDNS', + spec: optionsPlus, + }, + easydns: { + name: 'easyDNS', + spec: optionsPlus, + }, + googledomains: { + name: 'Google Domains', + spec: optionsPlus, + }, + namecheap: { + name: 'Namecheap (IPv4 only)', + spec: options, + }, + zoneedit: { + name: 'Zoneedit', + spec: optionsPlus, + }, + }), + ), }) export type DomainSpec = typeof domainSpec.validator._TYPE 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 d12f98389..fa305e16a 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 @@ -481,7 +481,7 @@ export class MockApiService extends ApiService { path: '/server-info/network/domains', value: [ { - value: params.domain, + value: params.hostname, provider: params.provider, createdAt: new Date(), },