| 
									
										
										
										
											2022-09-06 23:26:43 +00:00
										 |  |  | import * as tfrpc from '/tfrpc.js'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let g_database; | 
					
						
							|  |  |  | let g_hash; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | tfrpc.register(async function localStorageGet(key) { | 
					
						
							|  |  |  | 	return app.localStorageGet(key); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | tfrpc.register(async function localStorageSet(key, value) { | 
					
						
							|  |  |  | 	return app.localStorageSet(key, value); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | tfrpc.register(async function databaseGet(key) { | 
					
						
							|  |  |  | 	return g_database ? g_database.get(key) : undefined; | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | tfrpc.register(async function databaseSet(key, value) { | 
					
						
							|  |  |  | 	return g_database ? g_database.set(key, value) : undefined; | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-09-11 17:42:41 +00:00
										 |  |  | tfrpc.register(async function createIdentity() { | 
					
						
							|  |  |  | 	return ssb.createIdentity(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2023-10-20 14:37:24 +00:00
										 |  |  | tfrpc.register(async function getServerIdentity() { | 
					
						
							|  |  |  | 	return ssb.getServerIdentity(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-09-06 23:26:43 +00:00
										 |  |  | tfrpc.register(async function getIdentities() { | 
					
						
							|  |  |  | 	return ssb.getIdentities(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-09-10 02:56:15 +00:00
										 |  |  | tfrpc.register(async function getAllIdentities() { | 
					
						
							|  |  |  | 	return ssb.getAllIdentities(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2023-10-30 16:18:07 +00:00
										 |  |  | tfrpc.register(async function following(ids, depth) { | 
					
						
							|  |  |  | 	return ssb.following(ids, depth); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-09-10 02:56:15 +00:00
										 |  |  | tfrpc.register(async function getBroadcasts() { | 
					
						
							|  |  |  | 	return ssb.getBroadcasts(); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | tfrpc.register(async function getConnections() { | 
					
						
							|  |  |  | 	return ssb.connections(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2023-01-18 00:57:54 +00:00
										 |  |  | tfrpc.register(async function getStoredConnections() { | 
					
						
							|  |  |  | 	return ssb.storedConnections(); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | tfrpc.register(async function forgetStoredConnection(connection) { | 
					
						
							|  |  |  | 	return ssb.forgetStoredConnection(connection); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2023-01-17 23:10:17 +00:00
										 |  |  | tfrpc.register(async function createTunnel(portal, target) { | 
					
						
							|  |  |  | 	return ssb.createTunnel(portal, target); | 
					
						
							| 
									
										
										
										
											2022-11-13 03:36:48 +00:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-11-09 02:15:33 +00:00
										 |  |  | tfrpc.register(async function connect(token) { | 
					
						
							|  |  |  | 	await ssb.connect(token); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-11-09 01:47:47 +00:00
										 |  |  | tfrpc.register(async function closeConnection(id) { | 
					
						
							|  |  |  | 	await ssb.closeConnection(id); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-09-06 23:26:43 +00:00
										 |  |  | tfrpc.register(async function query(sql, args) { | 
					
						
							|  |  |  | 	let result = []; | 
					
						
							| 
									
										
										
										
											2023-02-15 02:43:08 +00:00
										 |  |  | 	await ssb.sqlAsync(sql, args, function callback(row) { | 
					
						
							| 
									
										
										
										
											2022-09-06 23:26:43 +00:00
										 |  |  | 		result.push(row); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 	return result; | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | tfrpc.register(async function appendMessage(id, message) { | 
					
						
							|  |  |  | 	return ssb.appendMessageWithIdentity(id, message); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | core.register('message', async function message_handler(message) { | 
					
						
							|  |  |  | 	if (message.event == 'hashChange') { | 
					
						
							|  |  |  | 		g_hash = message.hash; | 
					
						
							|  |  |  | 		await tfrpc.rpc.hashChanged(message.hash); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | tfrpc.register(function getHash(id, message) { | 
					
						
							|  |  |  | 	return g_hash; | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-09-15 00:16:37 +00:00
										 |  |  | tfrpc.register(function setHash(hash) { | 
					
						
							|  |  |  | 	return app.setHash(hash); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2024-05-22 18:51:21 -04:00
										 |  |  | core.register('onMessage', async function (id) { | 
					
						
							| 
									
										
										
										
											2022-09-06 23:26:43 +00:00
										 |  |  | 	await tfrpc.rpc.notifyNewMessage(id); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2025-09-24 11:34:34 -04:00
										 |  |  | core.register('onBlob', async function (id) { | 
					
						
							|  |  |  | 	await tfrpc.rpc.notifyNewBlob(id); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-09-06 23:26:43 +00:00
										 |  |  | tfrpc.register(async function store_blob(blob) { | 
					
						
							|  |  |  | 	if (Array.isArray(blob)) { | 
					
						
							|  |  |  | 		blob = Uint8Array.from(blob); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return await ssb.blobStore(blob); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-10-18 23:00:57 +00:00
										 |  |  | tfrpc.register(async function get_blob(id) { | 
					
						
							|  |  |  | 	return utf8Decode(await ssb.blobGet(id)); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2023-05-10 01:30:15 +00:00
										 |  |  | tfrpc.register(async function store_message(message) { | 
					
						
							|  |  |  | 	return await ssb.storeMessage(message); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-10-18 23:00:57 +00:00
										 |  |  | tfrpc.register(function apps() { | 
					
						
							|  |  |  | 	return core.apps(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2023-05-17 14:10:49 +00:00
										 |  |  | tfrpc.register(async function try_decrypt(id, content) { | 
					
						
							|  |  |  | 	return await ssb.privateMessageDecrypt(id, content); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2023-09-01 01:34:01 +00:00
										 |  |  | tfrpc.register(async function encrypt(id, recipients, content) { | 
					
						
							|  |  |  | 	return await ssb.privateMessageEncrypt(id, recipients, content); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2024-04-13 19:52:40 -04:00
										 |  |  | tfrpc.register(async function getActiveIdentity() { | 
					
						
							|  |  |  | 	return await ssb.getActiveIdentity(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2024-10-06 11:14:37 -04:00
										 |  |  | tfrpc.register(async function sync() { | 
					
						
							|  |  |  | 	return await ssb.sync(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2025-01-05 12:52:52 -05:00
										 |  |  | tfrpc.register(async function url() { | 
					
						
							|  |  |  | 	return core.url; | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2025-06-11 20:53:51 -04:00
										 |  |  | tfrpc.register(async function globalSettingsGet(key) { | 
					
						
							|  |  |  | 	return core.globalSettingsGet(key); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | tfrpc.register(async function globalSettingsSet(key, value) { | 
					
						
							|  |  |  | 	return core.globalSettingsSet(key, value); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2025-06-14 20:27:19 -04:00
										 |  |  | tfrpc.register(function isAdministrator() { | 
					
						
							|  |  |  | 	return core.user?.credentials?.permissions?.administration; | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2025-01-05 12:52:52 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-22 18:51:21 -04:00
										 |  |  | core.register('onBroadcastsChanged', async function () { | 
					
						
							| 
									
										
										
										
											2022-09-10 02:56:15 +00:00
										 |  |  | 	await tfrpc.rpc.set('broadcasts', await ssb.getBroadcasts()); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-24 11:09:34 -05:00
										 |  |  | core.register('onConnectionsChanged', async function () { | 
					
						
							| 
									
										
										
										
											2022-09-10 02:56:15 +00:00
										 |  |  | 	await tfrpc.rpc.set('connections', await ssb.connections()); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2024-04-13 19:52:40 -04:00
										 |  |  | core.register('setActiveIdentity', async function (id) { | 
					
						
							|  |  |  | 	await tfrpc.rpc.set('identity', id); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-09-06 23:26:43 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | async function main() { | 
					
						
							| 
									
										
										
										
											2024-02-24 11:09:34 -05:00
										 |  |  | 	if (typeof database !== 'undefined') { | 
					
						
							| 
									
										
										
										
											2022-09-06 23:26:43 +00:00
										 |  |  | 		g_database = await database('ssb'); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	await app.setDocument(utf8Decode(await getFile('index.html'))); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2024-02-24 11:09:34 -05:00
										 |  |  | main(); |