* help ios downlaod .crt and add begin add masked for addresses

* only require and show CA for public domain if addSsl

* fix type and revert i18n const

* feat: add address masking and adjust design (#3088)

* feat: add address masking and adjust design

* update lockfile

* chore: move eye button to actions

* chore: refresh notifications and handle action error

* static width for health check name

---------

Co-authored-by: Matt Hill <mattnine@protonmail.com>

* hide certificate authorities tab

* alpha.17

* add waiting health check status

* remove "on" from waiting message

* reject on abort in `.watch`

* id migration: nostr -> nostr-rs-relay

* health check waiting state

* use interface type for launch button

* better wording for masked

* cleaner

* sdk improvements

* fix type error

* fix notification badge issue

---------

Co-authored-by: Alex Inkin <alexander@inkin.ru>
Co-authored-by: Aiden McClelland <me@drbonez.dev>
This commit is contained in:
Matt Hill
2025-12-31 11:30:57 -07:00
committed by GitHub
parent 96ae532879
commit c9a7f519b9
99 changed files with 1535 additions and 1120 deletions

View File

@@ -1,16 +1,20 @@
import { inject, Injectable } from '@angular/core'
import { Clipboard } from '@angular/cdk/clipboard'
import { TuiAlertService } from '@taiga-ui/core'
import { copyToClipboard } from '../util/copy-to-clipboard'
import { i18nPipe } from '../i18n/i18n.pipe'
@Injectable({ providedIn: 'root' })
export class CopyService {
private readonly clipboard = inject(Clipboard)
private readonly i18n = inject(i18nPipe)
private readonly alerts = inject(TuiAlertService)
async copy(text: string) {
const success = await copyToClipboard(text)
const success = this.clipboard.copy(text)
const message = success ? 'Copied to clipboard' : 'Failed'
const appearance = success ? 'positive' : 'negative'
this.alerts
.open(success ? 'Copied to clipboard!' : 'Failed to copy to clipboard.')
.subscribe()
this.alerts.open(this.i18n.transform(message), { appearance }).subscribe()
}
}

View File

@@ -17,7 +17,9 @@ export class DownloadHTMLService {
const elem = this.document.createElement('a')
elem.setAttribute(
'href',
'data:text/plain;charset=utf-8,' + encodeURIComponent(html),
URL.createObjectURL(
new Blob([html], { type: 'application/octet-stream' }),
),
)
elem.setAttribute('download', filename)
elem.style.display = 'none'

View File

@@ -16,7 +16,6 @@ import {
HttpAngularOptions,
HttpOptions,
LocalHttpResponse,
Method,
} from '../types/http.types'
import { RPCResponse, RPCOptions } from '../types/rpc.types'
import { RELATIVE_URL } from '../tokens/relative-url'
@@ -42,7 +41,7 @@ export class HttpService {
const { method, headers, params, timeout } = opts
return this.httpRequest<RPCResponse<T>>({
method: Method.POST,
method: 'POST',
url: fullUrl || this.relativeUrl,
headers,
body: { method, params },
@@ -73,7 +72,7 @@ export class HttpService {
}
let req: Observable<LocalHttpResponse<T>>
if (method === Method.GET) {
if (method === 'GET') {
req = this.http.get(url, options as any) as any
} else {
req = this.http.post(url, body, options as any) as any