git » sdk » commit 7705d95

API to list known accounts

author Stephen Paul Weber
2025-04-14 18:09:36 UTC
committer Stephen Paul Weber
2025-04-14 18:09:36 UTC
parent 000ab95153a722080a167ed3e8f2ab1eae541edf

API to list known accounts

snikket/Persistence.hx +1 -0
snikket/persistence/Dummy.hx +5 -0
snikket/persistence/Sqlite.hx +7 -0

diff --git a/snikket/Persistence.hx b/snikket/Persistence.hx
index adebe48..18b774b 100644
--- a/snikket/Persistence.hx
+++ b/snikket/Persistence.hx
@@ -30,6 +30,7 @@ interface Persistence {
 	public function storeLogin(login:String, clientId:String, displayName:String, token:Null<String>):Void;
 	public function getLogin(login:String, callback:(clientId:Null<String>, token:Null<String>, fastCount: Int, displayName:Null<String>)->Void):Void;
 	public function removeAccount(accountId: String, completely:Bool):Void;
+	public function listAccounts(callback:(Array<String>)->Void):Void;
 	public function storeStreamManagement(accountId:String, data:Null<BytesData>):Void;
 	public function getStreamManagement(accountId:String, callback: (Null<BytesData>)->Void):Void;
 	public function storeService(accountId:String, serviceId:String, name:Null<String>, node:Null<String>, caps:Caps):Void;
diff --git a/snikket/persistence/Dummy.hx b/snikket/persistence/Dummy.hx
index 1c1afbe..39ba123 100644
--- a/snikket/persistence/Dummy.hx
+++ b/snikket/persistence/Dummy.hx
@@ -118,6 +118,11 @@ class Dummy implements Persistence {
 	@HaxeCBridge.noemit
 	public function removeAccount(accountId:String, completely:Bool) { }
 
+	@HaxeCBridge.noemit
+	public function listAccounts(callback:(Array<String>)->Void) {
+		callback([]);
+	}
+
 	@HaxeCBridge.noemit
 	public function storeStreamManagement(accountId:String, sm:Null<BytesData>) { }
 
diff --git a/snikket/persistence/Sqlite.hx b/snikket/persistence/Sqlite.hx
index 678999a..68979ad 100644
--- a/snikket/persistence/Sqlite.hx
+++ b/snikket/persistence/Sqlite.hx
@@ -616,6 +616,13 @@ class Sqlite implements Persistence implements KeyValueStore {
 		db.exec("DELETE FROM services WHERE account_id=?", [accountId]);
 	}
 
+
+	public function listAccounts(callback:(Array<String>)->Void) {
+		db.exec("SELECT account_id FROM accounts").then(result ->
+			callback(result == null ? [] :  { iterator: () -> result }.map(row -> row.account_id))
+		);
+	}
+
 	private var smStoreInProgress = false;
 	private var smStoreNext: Null<BytesData> = null;
 	@HaxeCBridge.noemit