wiz status check
This commit is contained in:
parent
6da5577b27
commit
0f5be06e94
5 changed files with 74 additions and 4 deletions
|
|
@ -80,7 +80,10 @@ export default (serverMethods: Types.ServerMethods, mainHandler: Main, nostrSett
|
||||||
}, event.startAtNano, event.startAtMs)
|
}, event.startAtNano, event.startAtMs)
|
||||||
})
|
})
|
||||||
|
|
||||||
return { Stop: () => nostr.Stop, Send: (...args) => nostr.Send(...args), Ping: () => nostr.Ping() }
|
// Mark nostr connected/ready after initial subscription tick
|
||||||
|
mainHandler.adminManager.setNostrConnected(true)
|
||||||
|
|
||||||
|
return { Stop: () => { mainHandler.adminManager.setNostrConnected(false); return nostr.Stop }, Send: (...args) => nostr.Send(...args), Ping: () => nostr.Ping() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ export class AdminManager {
|
||||||
interval: NodeJS.Timer
|
interval: NodeJS.Timer
|
||||||
appNprofile: string
|
appNprofile: string
|
||||||
lnd: LND
|
lnd: LND
|
||||||
|
nostrConnected: boolean = false
|
||||||
constructor(mainSettings: MainSettings, storage: Storage) {
|
constructor(mainSettings: MainSettings, storage: Storage) {
|
||||||
this.storage = storage
|
this.storage = storage
|
||||||
this.dataDir = mainSettings.storageSettings.dataDir
|
this.dataDir = mainSettings.storageSettings.dataDir
|
||||||
|
|
@ -42,6 +43,14 @@ export class AdminManager {
|
||||||
this.lnd = lnd
|
this.lnd = lnd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setNostrConnected = (connected: boolean) => {
|
||||||
|
this.nostrConnected = connected
|
||||||
|
}
|
||||||
|
|
||||||
|
GetNostrConnected = () => {
|
||||||
|
return this.nostrConnected
|
||||||
|
}
|
||||||
|
|
||||||
setAppNprofile = (nprofile: string) => {
|
setAppNprofile = (nprofile: string) => {
|
||||||
this.appNprofile = nprofile
|
this.appNprofile = nprofile
|
||||||
const enrollToken = this.ReadAdminEnrollToken()
|
const enrollToken = this.ReadAdminEnrollToken()
|
||||||
|
|
|
||||||
|
|
@ -46,15 +46,27 @@ export class Wizard {
|
||||||
const relays = this.settings.nostrRelaySettings ? this.settings.nostrRelaySettings.relays : [];
|
const relays = this.settings.nostrRelaySettings ? this.settings.nostrRelaySettings.relays : [];
|
||||||
const relayUrl = (relays && relays.length > 0) ? relays[0] : '';
|
const relayUrl = (relays && relays.length > 0) ? relays[0] : '';
|
||||||
const defaultApp = apps.find(a => a.name === this.settings.defaultAppName) || apps[0]
|
const defaultApp = apps.find(a => a.name === this.settings.defaultAppName) || apps[0]
|
||||||
|
// Determine LND state and watchdog
|
||||||
|
let lndState: WizardTypes.LndState = WizardTypes.LndState.OFFLINE
|
||||||
|
let watchdogOk = false
|
||||||
|
try {
|
||||||
|
const info = await this.adminManager.LndGetInfo()
|
||||||
|
const online = info.synced_to_chain && info.synced_to_graph
|
||||||
|
lndState = online ? WizardTypes.LndState.ONLINE : WizardTypes.LndState.SYNCING
|
||||||
|
watchdogOk = !info.watchdog_barking
|
||||||
|
} catch {
|
||||||
|
lndState = WizardTypes.LndState.OFFLINE
|
||||||
|
watchdogOk = false
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
admin_npub: this.adminManager.GetAdminNpub(),
|
admin_npub: this.adminManager.GetAdminNpub(),
|
||||||
http_url: this.settings.serviceUrl,
|
http_url: this.settings.serviceUrl,
|
||||||
lnd_state: WizardTypes.LndState.OFFLINE,
|
lnd_state: lndState,
|
||||||
nprofile: this.nprofile,
|
nprofile: this.nprofile,
|
||||||
provider_name: appNamesList,
|
provider_name: appNamesList,
|
||||||
relay_connected: false,
|
relay_connected: this.adminManager.GetNostrConnected(),
|
||||||
relays: this.relays,
|
relays: this.relays,
|
||||||
watchdog_ok: false,
|
watchdog_ok: watchdogOk,
|
||||||
source_name: this.settings.defaultAppName || appNamesList,
|
source_name: this.settings.defaultAppName || appNamesList,
|
||||||
relay_url: relayUrl,
|
relay_url: relayUrl,
|
||||||
automate_liquidity: this.settings.liquiditySettings.liquidityProviderPub !== 'null',
|
automate_liquidity: this.settings.liquiditySettings.liquidityProviderPub !== 'null',
|
||||||
|
|
@ -83,6 +95,8 @@ export class Wizard {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WizardState = async (): Promise<WizardTypes.StateResponse> => {
|
WizardState = async (): Promise<WizardTypes.StateResponse> => {
|
||||||
return {
|
return {
|
||||||
config_sent: this.pendingConfig !== null,
|
config_sent: this.pendingConfig !== null,
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,11 @@ $(() => {
|
||||||
$("#reset-box").show();
|
$("#reset-box").show();
|
||||||
$('.continue-button').attr('id', 'set-show-nostr');
|
$('.continue-button').attr('id', 'set-show-nostr');
|
||||||
});
|
});
|
||||||
|
$("#show-avatar").click(() => {
|
||||||
|
$('.show-avatar').show()
|
||||||
|
$('#show-avatar-text').hide()
|
||||||
|
$('input[name="show-avatar"]').focus();
|
||||||
|
});
|
||||||
$("#show-nodey").click(() => {
|
$("#show-nodey").click(() => {
|
||||||
$('.show-nodey').show()
|
$('.show-nodey').show()
|
||||||
$('#show-nodey-text').hide()
|
$('#show-nodey-text').hide()
|
||||||
|
|
@ -73,6 +78,21 @@ $(() => {
|
||||||
$('#show-nostr-text').show()
|
$('#show-nostr-text').show()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
$("#save-show-avatar").click(() => {
|
||||||
|
var targetInputVal = $('input[name="show-avatar"]').val()
|
||||||
|
postConfig({ avatar_url: targetInputVal }).then(ok => {
|
||||||
|
if (ok) {
|
||||||
|
$('#show-avatar-text').text(targetInputVal || '—')
|
||||||
|
if (targetInputVal) { $('#avatarImg').attr('src', targetInputVal) }
|
||||||
|
}
|
||||||
|
$('.show-avatar').hide()
|
||||||
|
$('#show-avatar-text').show()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
$("#cancel-show-avatar").click(() => {
|
||||||
|
$('.show-avatar').hide()
|
||||||
|
$('#show-avatar-text').show()
|
||||||
|
})
|
||||||
$("#cancel-show-nostr").click(() => {
|
$("#cancel-show-nostr").click(() => {
|
||||||
$('.show-nostr').hide()
|
$('.show-nostr').hide()
|
||||||
$('#show-nostr-text').show()
|
$('#show-nostr-text').show()
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,27 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="status-element" style="margin-top: 15px;">
|
||||||
|
<div style="text-align: left;">Avatar:</div>
|
||||||
|
<div class="fc-grey editable-content">
|
||||||
|
<div class="show-avatar" style="display: flex; flex-direction: column; display: none;">
|
||||||
|
<input type="text" value="" name="show-avatar" placeholder="https://example.com/avatar.png" />
|
||||||
|
<div style="display: flex;justify-content: end;">
|
||||||
|
<button class="small-btn" id="cancel-show-avatar">Cancel</button>
|
||||||
|
<button class="small-btn" id="save-show-avatar">Save</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="display:flex;align-items:center;gap:12px;">
|
||||||
|
<img id="avatarImg" src="" alt="avatar" style="width:48px;height:48px;border-radius:6px;object-fit:cover;box-shadow:0 0 2px rgba(0,0,0,1);" />
|
||||||
|
<div id="show-avatar-text" style="word-break:break-all;">—</div>
|
||||||
|
<div class="question-box">
|
||||||
|
<button class="icon-button" id="show-avatar">
|
||||||
|
<img src="img/pencil.svg" style="cursor: pointer;" />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="status-element" style="margin-top: 15px;">
|
<div class="status-element" style="margin-top: 15px;">
|
||||||
<div>Administrator:</div>
|
<div>Administrator:</div>
|
||||||
<div id="adminNpub" style="line-break: anywhere;">
|
<div id="adminNpub" style="line-break: anywhere;">
|
||||||
|
|
@ -165,8 +186,11 @@
|
||||||
const lndText = lndStateNum === 2 ? 'ONLINE' : (lndStateNum === 1 ? 'SYNCING' : 'OFFLINE')
|
const lndText = lndStateNum === 2 ? 'ONLINE' : (lndStateNum === 1 ? 'SYNCING' : 'OFFLINE')
|
||||||
const lndDot = lndStateNum === 2 ? 'green-dot' : (lndStateNum === 1 ? 'yellow-dot' : 'red-dot')
|
const lndDot = lndStateNum === 2 ? 'green-dot' : (lndStateNum === 1 ? 'yellow-dot' : 'red-dot')
|
||||||
const relayConnected = !!relayUrl
|
const relayConnected = !!relayUrl
|
||||||
|
const avatar = j.avatar_url || (j.app_id ? `https://robohash.org/${encodeURIComponent(j.app_id)}.png?size=128x128&set=set3` : '')
|
||||||
document.getElementById("show-nodey-text").innerHTML = name
|
document.getElementById("show-nodey-text").innerHTML = name
|
||||||
document.getElementById("show-nostr-text").innerHTML = relayUrl || '—'
|
document.getElementById("show-nostr-text").innerHTML = relayUrl || '—'
|
||||||
|
document.getElementById("show-avatar-text").innerHTML = avatar || '—'
|
||||||
|
if (avatar) { document.getElementById("avatarImg").src = avatar }
|
||||||
document.getElementById("adminNpub").innerText = admin
|
document.getElementById("adminNpub").innerText = admin
|
||||||
document.getElementById("relayStatus").innerHTML = `<span class="${relayConnected ? 'green-dot' : 'red-dot'}">●</span> ${relayConnected ? 'Connected' : 'Disconnected'}`
|
document.getElementById("relayStatus").innerHTML = `<span class="${relayConnected ? 'green-dot' : 'red-dot'}">●</span> ${relayConnected ? 'Connected' : 'Disconnected'}`
|
||||||
document.getElementById("lndStatus").innerHTML = `<span class="${lndDot}">●</span> ${lndText}`
|
document.getElementById("lndStatus").innerHTML = `<span class="${lndDot}">●</span> ${lndText}`
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue