admin/internet: show last result for dyndns
Massimo Melina committed
Feb 2, 2025 at 23:02 UTC
72fd0bdcc54301aaae9198f0e6ece3a6fe52ba8e
1 file changed
+5
-3
src/ddns.ts
+5
-3
@@ -33,6 +33,7 @@ events.onListeners(EVENT, cbs => {
33
34
export interface DynamicDnsResult { ts: string, error: string, url: string }
35
let stopEvent: any
36
+let last: DynamicDnsResult | undefined
37
dynamicDnsUrl.sub(v => {
38
stopEvent?.()
39
if (!v) return
@@ -47,13 +48,14 @@ dynamicDnsUrl.sub(v => {
48
}, (err: any) => err.code || err.message || String(err) )
49
return { ts: new Date().toJSON(), error, url }
50
}))
50
- const best = _.find(all, 'error') || all[0] // the system is designed for just one result, and we give precedence to errors
51
- events.emit('dynamicDnsError', best)
52
- console.log('dynamic dns update', best?.error || 'ok')
51
+ last = _.find(all, 'error') || all[0] // the system is designed for just one result, and we give precedence to errors
52
+ events.emit('dynamicDnsError', last)
53
+ console.log('dynamic dns update', last?.error || 'ok')
54
})
55
})
56
57
export async function* get_dynamic_dns_error() {
58
+ if (last) yield last
59
while (1) {
60
const res = await events.once('dynamicDnsError')
61
yield res[0]