diff --git a/Slon/Http/AdminServer.HC b/Slon/Http/AdminServer.HC
index 07313c5..3b6e03a 100644
--- a/Slon/Http/AdminServer.HC
+++ b/Slon/Http/AdminServer.HC
@@ -264,7 +264,25 @@ U0 @slon_admin_new_account(SlonHttpSession* session)
U0 @slon_admin_manage_accounts(SlonHttpSession* session)
{
- session->send(db->a("accounts"));
+ SLON_SCRATCH_BUFFER_AND_REQUEST_JSON
+ no_warn scratch_buffer;
+
+ JsonArray* results = Json.CreateArray();
+ I64 skip = Str2I64(request_json->@("skip"));
+ I64 limit = 10;
+ I64 i;
+ I64 count = 0;
+ JsonArray* accounts = db->a("accounts");
+ for (i = skip; i < accounts->length && i < skip + limit; i++) {
+ results->append(Json.CreateItem(accounts->@(i), JSON_OBJECT));
+ ++count;
+ }
+ JsonObject* o = Json.CreateObject();
+ o->set("total", accounts->length, JSON_NUMBER);
+ o->set("skip", skip, JSON_NUMBER);
+ o->set("count", count, JSON_NUMBER);
+ o->set("accounts", results, JSON_ARRAY);
+ session->send(o);
}
U0 @slon_admin_info_stats(SlonHttpSession* session)
diff --git a/Slon/Static/html/admin/main.html b/Slon/Static/html/admin/main.html
index 4a3dc79..c93a857 100644
--- a/Slon/Static/html/admin/main.html
+++ b/Slon/Static/html/admin/main.html
@@ -34,7 +34,7 @@
@@ -63,18 +63,29 @@
setContent(html);
setActiveLink("stats");
}
- async function manageAccounts() {
+ async function manageAccounts(page) {
clearActiveLinks();
- const request = new Request("/manage/accounts");
+ const request = new Request("/manage/accounts?skip=" + (page*10).toString());
const response = await fetch(request);
- const accounts = await response.json();
+ const result = await response.json();
+ const accounts = result["accounts"];
let html = "Accounts
";
if (accounts.length) {
- html += "id | acct | display_name | type | delete |
";
+ html += " | id | acct | display_name | type | delete |
";
for (let i = 0; i < accounts.length; i++) {
- html += "" + accounts[i]["id"] + " | " + accounts[i]["acct"] + " | " + accounts[i]["display_name"] + " | "+ (accounts[i]["remote_actor"] == undefined ? "local" : "remote") + " | ❌ |
";
+ html += "
 | " + accounts[i]["id"] + " | " + accounts[i]["acct"] + " | " + accounts[i]["display_name"] + " | "+ (accounts[i]["remote_actor"] == undefined ? "local" : "remote") + " | ❌ |
";
}
html += "
";
+ html += "";
} else {
html += "No users";
}
@@ -87,7 +98,7 @@
const request = new Request("/delete/account?id=" + id);
const response = await fetch(request);
const empty_json = await response.json();
- manageAccounts();
+ manageAccounts(0);
}
}
function manageNewUser() {
@@ -142,7 +153,7 @@
const response = await fetch(request);
const json = await response.json();
if (!Object.keys(json).length) {
- manageAccounts();
+ manageAccounts(0);
} else {
alert(JSON.stringify(json));
}