-
+ [addresses]="serviceInterface.addresses.clearnet"
+ >
+
+ Add a clearnet address to expose this interface on the Internet.
+ Clearnet addresses are fully public and not anonymous.
+
+ Learn More
+
+
+
Tor
-
+
+
+ Add an onion address to anonymously expose this interface on the
+ darknet. Onion addresses can only be reached over the Tor network.
+
+ Learn More
+
+
+
Local
-
+
+
+ Add a local address to expose this interface on your Local Area Network
+ (LAN). Local addresses can only be accessed by devices connected to the
+ same LAN as your server, either directly or using a VPN.
+
+ Learn More
+
+
+
`,
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [
CommonModule,
- InterfaceTorComponent,
- InterfaceLocalComponent,
- InterfaceClearnetComponent,
+ AddressGroupComponent,
TuiCardModule,
TuiSurfaceModule,
+ ClearnetAddressesDirective,
+ TorAddressesDirective,
+ LocalAddressesDirective,
],
})
export class InterfaceComponent {
diff --git a/web/projects/ui/src/app/apps/portal/components/interfaces/interface.utils.ts b/web/projects/ui/src/app/apps/portal/components/interfaces/interface.utils.ts
index 752b6b0b0..f9b0d4c7d 100644
--- a/web/projects/ui/src/app/apps/portal/components/interfaces/interface.utils.ts
+++ b/web/projects/ui/src/app/apps/portal/components/interfaces/interface.utils.ts
@@ -4,6 +4,11 @@ import { TuiPromptData } from '@taiga-ui/kit'
import { NetworkInfo } from 'src/app/services/patch-db/data-model'
import { configBuilderToSpec } from 'src/app/util/configBuilderToSpec'
+export abstract class AddressesService {
+ abstract add(): Promise
+ abstract remove(): Promise
+}
+
export const REMOVE: Partial> = {
label: 'Confirm',
size: 's',
diff --git a/web/projects/ui/src/app/apps/portal/routes/dashboard/controls.component.ts b/web/projects/ui/src/app/apps/portal/routes/dashboard/controls.component.ts
index 34747cb0a..9fc5faa22 100644
--- a/web/projects/ui/src/app/apps/portal/routes/dashboard/controls.component.ts
+++ b/web/projects/ui/src/app/apps/portal/routes/dashboard/controls.component.ts
@@ -82,7 +82,7 @@ export class ControlsComponent {
return this.errors.getPkgDepErrors$(id).pipe(
map(errors =>
Object.keys(this.pkg.currentDependencies)
- .map(id => !!(errors[id] as any)?.[id]) // @TODO fix
+ .map(id => !!(errors[id] as any)?.[id]) // @TODO-Alex fix
.some(Boolean),
),
)
diff --git a/web/projects/ui/src/app/apps/portal/routes/system/settings/settings.service.ts b/web/projects/ui/src/app/apps/portal/routes/system/settings/settings.service.ts
index 73de9df70..5f2425a8b 100644
--- a/web/projects/ui/src/app/apps/portal/routes/system/settings/settings.service.ts
+++ b/web/projects/ui/src/app/apps/portal/routes/system/settings/settings.service.ts
@@ -122,7 +122,7 @@ export class SettingsService {
await this.proxyService.presentModalSetOutboundProxy(proxy)
}
- // @TODO previous this was done in experimental settings using a template ref.
+ // @TODO-Alex previous this was done in experimental settings using a template ref.
private promptResetTor() {
this.dialogs
.open(TUI_PROMPT, {
diff --git a/web/projects/ui/src/app/apps/portal/routes/system/sideload/sideload.utils.ts b/web/projects/ui/src/app/apps/portal/routes/system/sideload/sideload.utils.ts
index 11343029f..3ebbc33e8 100644
--- a/web/projects/ui/src/app/apps/portal/routes/system/sideload/sideload.utils.ts
+++ b/web/projects/ui/src/app/apps/portal/routes/system/sideload/sideload.utils.ts
@@ -27,7 +27,7 @@ export async function parseS9pk(file: File): Promise {
const manifest = await getAsset(positions, file, 'manifest')
const [icon] = await Promise.all([
- await getIcon(positions, file, manifest),
+ await getIcon(positions, file),
// getAsset(positions, file, 'license'),
// getAsset(positions, file, 'instructions'),
])
@@ -147,11 +147,7 @@ async function getAsset(
return cbor.decode(data, true)
}
-async function getIcon(
- positions: Positions,
- file: Blob,
- manifest: Manifest,
-): Promise {
+async function getIcon(positions: Positions, file: Blob): Promise {
const contentType = '' // @TODO
const data = file.slice(
Number(positions['icon'][0]),
diff --git a/web/projects/ui/src/app/apps/portal/services/badge.service.ts b/web/projects/ui/src/app/apps/portal/services/badge.service.ts
index 69a388665..52b797f2e 100644
--- a/web/projects/ui/src/app/apps/portal/services/badge.service.ts
+++ b/web/projects/ui/src/app/apps/portal/services/badge.service.ts
@@ -73,7 +73,7 @@ export class BadgeService {
new Set(),
).size,
),
- // @TODO shareReplay is preventing the badge from decrementing
+ // @TODO-Alex shareReplay is preventing the badge from decrementing
shareReplay(1),
)
diff --git a/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts b/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts
index 359bb5b55..96aa518aa 100644
--- a/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts
+++ b/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts
@@ -1283,7 +1283,7 @@ export class MockApiService extends ApiService {
const patch = [
{
op: PatchOp.REPLACE,
- path: `/packageData/${params.packageId}/installed/interfaceInfo/${params.interfaceId}/addressInfo/domainInfo`,
+ path: `/packageData/${params.packageId}/serviceInterfaces/${params.interfaceId}/addressInfo/domainInfo`,
value: params.domainInfo,
},
]
@@ -1299,7 +1299,7 @@ export class MockApiService extends ApiService {
const patch = [
{
op: PatchOp.REPLACE,
- path: `/packageData/${params.packageId}/installed/outboundProxy`,
+ path: `/packageData/${params.packageId}/outboundProxy`,
value: params.proxy,
},
]
diff --git a/web/projects/ui/src/app/services/patch-monitor.service.ts b/web/projects/ui/src/app/services/patch-monitor.service.ts
index fcf59bcbd..7a01e4d20 100644
--- a/web/projects/ui/src/app/services/patch-monitor.service.ts
+++ b/web/projects/ui/src/app/services/patch-monitor.service.ts
@@ -10,7 +10,7 @@ import { LocalStorageBootstrap } from './patch-db/local-storage-bootstrap'
providedIn: 'root',
})
export class PatchMonitorService extends Observable {
- // @TODO not happy with Observable
+ // @TODO-Alex not happy with Observable
private readonly stream$ = this.authService.isVerified$.pipe(
tap(verified =>
verified ? this.patch.start(this.bootstrapper) : this.patch.stop(),