From e54312d3b8980eeb02373e49d94dcbda40ee799a Mon Sep 17 00:00:00 2001 From: Cory McWilliams Date: Sat, 14 Jun 2025 20:27:19 -0400 Subject: [PATCH] ssb: Only admins are offered the option to enable peer exchange. --- apps/ssb.json | 2 +- apps/ssb/app.js | 3 +++ apps/ssb/tf-tab-news.js | 16 +++++++++++----- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/apps/ssb.json b/apps/ssb.json index c62a8be4..a8159a95 100644 --- a/apps/ssb.json +++ b/apps/ssb.json @@ -1,5 +1,5 @@ { "type": "tildefriends-app", "emoji": "🦀", - "previous": "&M+oVNf65iZ1xz3Lzmq0k86SmIhRSX2q2SV4K9/dib1U=.sha256" + "previous": "&6gubt0zYLPpQepw+Cg/coZNek8Eem/BmHRP1G39IZcc=.sha256" } diff --git a/apps/ssb/app.js b/apps/ssb/app.js index 83c7958d..fbad57a4 100644 --- a/apps/ssb/app.js +++ b/apps/ssb/app.js @@ -112,6 +112,9 @@ tfrpc.register(async function globalSettingsGet(key) { tfrpc.register(async function globalSettingsSet(key, value) { return core.globalSettingsSet(key, value); }); +tfrpc.register(function isAdministrator() { + return core.user?.credentials?.permissions?.administration; +}); core.register('onBroadcastsChanged', async function () { await tfrpc.rpc.set('broadcasts', await ssb.getBroadcasts()); diff --git a/apps/ssb/tf-tab-news.js b/apps/ssb/tf-tab-news.js index 51a98cbe..4fae6cc6 100644 --- a/apps/ssb/tf-tab-news.js +++ b/apps/ssb/tf-tab-news.js @@ -49,9 +49,7 @@ class TfTabNewsElement extends LitElement { tfrpc.rpc.localStorageGet('drafts').then(function (d) { self.drafts = JSON.parse(d || '{}'); }); - tfrpc.rpc.globalSettingsGet('peer_exchange').then(function (value) { - self.peer_exchange = value; - }); + this.check_peer_exchange(); } connectedCallback() { @@ -64,6 +62,14 @@ class TfTabNewsElement extends LitElement { document.body.removeEventListener('keypress', this.on_keypress.bind(this)); } + async check_peer_exchange() { + if (await tfrpc.rpc.isAdministrator()) { + this.peer_exchange = await tfrpc.rpc.globalSettingsGet('peer_exchange'); + } else { + this.peer_exchange = undefined; + } + } + load_latest() { let news = this.shadowRoot?.getElementById('news'); if (news) { @@ -174,7 +180,7 @@ class TfTabNewsElement extends LitElement { async enable_peer_exchange() { await tfrpc.rpc.globalSettingsSet('peer_exchange', true); - this.peer_exchange = await tfrpc.rpc.globalSettingsGet('peer_exchange'); + await this.check_peer_exchange(); } render_sidebar() { @@ -266,7 +272,7 @@ class TfTabNewsElement extends LitElement {