diff --git a/apps/ssb.json b/apps/ssb.json
index 96e68d18..9cfe1d7c 100644
--- a/apps/ssb.json
+++ b/apps/ssb.json
@@ -1,5 +1,5 @@
{
"type": "tildefriends-app",
"emoji": "🦀",
- "previous": "&fHj5cygP9tDGnJRTFZes1kywnjetkTH9z74qFy8nhXg=.sha256"
+ "previous": "&lOCyez82jwCUs8R/Ynx2nBK598+qDZ7RhGnWOaNQO9U=.sha256"
}
diff --git a/apps/ssb/tf-app.js b/apps/ssb/tf-app.js
index 35d1b6ba..fca0fe5d 100644
--- a/apps/ssb/tf-app.js
+++ b/apps/ssb/tf-app.js
@@ -23,6 +23,8 @@ class TfElement extends LitElement {
url: {type: String},
private_messages: {type: Array},
recent_reactions: {type: Array},
+ is_administrator: {type: Boolean},
+ stay_connected: {type: Boolean},
};
}
@@ -73,6 +75,10 @@ class TfElement extends LitElement {
async initial_load() {
let whoami = await tfrpc.rpc.getActiveIdentity();
let ids = (await tfrpc.rpc.getIdentities()) || [];
+ this.is_administrator = await tfrpc.rpc.isAdministrator();
+ this.stay_connected =
+ this.is_administrator &&
+ (await tfrpc.rpc.globalSettingsGet('stay_connected'));
this.url = await tfrpc.rpc.url();
this.whoami = whoami ?? (ids.length ? ids[0] : undefined);
this.guest = !this.whoami?.length;
@@ -658,6 +664,18 @@ class TfElement extends LitElement {
tfrpc.rpc.sync();
}
+ async toggle_stay_connected() {
+ let stay_connected = await tfrpc.rpc.globalSettingsGet('stay_connected');
+ let new_stay_connected = !this.stay_connected;
+ try {
+ if (new_stay_connected != stay_connected) {
+ await tfrpc.rpc.globalSettingsSet('stay_connected', new_stay_connected);
+ }
+ } finally {
+ this.stay_connected = await tfrpc.rpc.globalSettingsGet('stay_connected');
+ }
+ }
+
render() {
let self = this;
@@ -680,14 +698,26 @@ class TfElement extends LitElement {
class="w3-bar w3-theme-l1"
style="position: static; top: 0; z-index: 10"
>
-
+ ${this.is_administrator
+ ? html`
+
+
+ `
+ : undefined}
${Object.entries(k_tabs).map(
([k, v]) => html`