async function get_apps() {
	let results = {};
	await ssb.sqlAsync(`
				SELECT messages.*
				FROM messages_fts('"application/tildefriends"')
				JOIN messages ON messages.rowid = messages_fts.rowid
				ORDER BY timestamp
		`,
		[],
		function(row) {
			let content = JSON.parse(row.content);
			for (let mention of content.mentions) {
				if (mention?.type === 'application/tildefriends') {
					results[JSON.stringify([row.author, mention.name])] = {
						message: row,
						blob: mention.link,
						name: mention.name,
					};
				}
			}
		});
	return Object.values(results).sort((x, y) => y.message.timestamp - x.message.timestamp);
}

function render_app(app) {
	return `
		<div style="border: 2px solid white; display: inline-block; margin: 8px; padding: 8px">
			<a href="/~cory/ssb/#${app.message.author}">@</a>
			<a href="/~cory/ssb/#${app.message.id}">%</a>
			<a href="/${app.blob}/">${app.name}</a>
		</div>
	`;
}

async function main() {
	let apps = await get_apps();
	app.setDocument(`
		<html>
			<head>
				<base target="_top">
				<style>
					a:link { color: #bbf; }
					a:visited { color: #ddd; }
					a:hover { color: #ddf; }
				</style>
			</head>
			<body style="color: #fff">
				<h1>${apps.length} apps</h1>
				${apps.map(render_app).join('\n')}
			</body>
		</html>
	`);
}

main();