~ knotless Search/
↑↓ move↵ open⇧↵ all results

johnandersen777.bsky.social/atlibs-socialweb-computer-app

app.socialweb.computer: socialweb.computer in one page, one atlibs composition

0
0
main
15 lines · 988 B Raw History
// No network, no session: the host sends {session, handle, vms, agents, vouches} over tp-data.
const status = document.querySelector('.status')
const list = (id, items, text) => document.getElementById(id).replaceChildren(...(items.length ? items : [null]).map((x) => Object.assign(document.createElement('li'), x ? { textContent: text(x) } : { className: 'muted', textContent: 'none' })))
try {
	const { addDataHandler, listen } = await import('/.well-known/web-tiles/data.js')
	addDataHandler((s) => {
		status.textContent = s.session === 'signed-in' ? `${s.handle}` : 'Sign in on the host page.'
		list('vms', s.vms ?? [], (v) => `${v.vm}: ${v.cpus} vCPUs, ${v.mem} GiB, until ${v.expires}`)
		list('agents', s.agents ?? [], (a) => `${a.nick} (${a.subhandle}) on ${a.vm}`)
		list('vouches', s.vouches ?? [], (v) => `${v.subject}${v.reason ? `: ${v.reason}` : ''}`)
	})
	listen()
} catch (error) {
	status.textContent = `This tile needs a host that speaks tp-data: ${error.message}`
}