From 79eab987cd39c7c24b7434512504186d40e5bc43 Mon Sep 17 00:00:00 2001 From: mkljczk Date: Wed, 29 Jan 2025 21:51:52 +0100 Subject: [PATCH] pl-fe: non-pleroma admin dashboard improvements Signed-off-by: mkljczk --- packages/pl-api/lib/entities/account.ts | 2 +- packages/pl-api/lib/features.ts | 1 + packages/pl-api/package.json | 2 +- packages/pl-fe/package.json | 2 +- .../src/features/admin/tabs/dashboard.tsx | 1 - packages/pl-fe/src/utils/scopes.ts | 24 +++++++++++++++---- packages/pl-fe/yarn.lock | 8 +++---- 7 files changed, 28 insertions(+), 12 deletions(-) diff --git a/packages/pl-api/lib/entities/account.ts b/packages/pl-api/lib/entities/account.ts index 9fae6a506..b7c0a7aad 100644 --- a/packages/pl-api/lib/entities/account.ts +++ b/packages/pl-api/lib/entities/account.ts @@ -47,7 +47,7 @@ const preprocessAccount = v.transform((account: any) => { discoverable: account.discoverable || account.pleroma?.source?.discoverable, verified: account.verified || account.pleroma?.tags?.includes('verified'), ...(account.role?.permissions ? { - is_admin: account.role?.permissions & 0x1, + is_admin: (account.role?.permissions & 0x1) === 0x1, } : {}), ...(pick(account.pleroma || {}, [ 'ap_id', diff --git a/packages/pl-api/lib/features.ts b/packages/pl-api/lib/features.ts index 22907197f..d4c98f1dc 100644 --- a/packages/pl-api/lib/features.ts +++ b/packages/pl-api/lib/features.ts @@ -877,6 +877,7 @@ const getFeatures = (instance: Instance) => { * @see GET /api/v2/admin/accounts */ mastodonAdminV2: any([ + v.software === GOTOSOCIAL, v.software === MASTODON && gte(v.version, '3.5.0'), ]), diff --git a/packages/pl-api/package.json b/packages/pl-api/package.json index 03ae2833e..dcf2d9be5 100644 --- a/packages/pl-api/package.json +++ b/packages/pl-api/package.json @@ -1,6 +1,6 @@ { "name": "pl-api", - "version": "1.0.0-rc.22", + "version": "1.0.0-rc.23", "type": "module", "homepage": "https://github.com/mkljczk/pl-fe/tree/develop/packages/pl-api", "repository": { diff --git a/packages/pl-fe/package.json b/packages/pl-fe/package.json index ed044565e..beeceb9fa 100644 --- a/packages/pl-fe/package.json +++ b/packages/pl-fe/package.json @@ -101,7 +101,7 @@ "multiselect-react-dropdown": "^2.0.25", "mutative": "^1.1.0", "path-browserify": "^1.0.1", - "pl-api": "^1.0.0-rc.19", + "pl-api": "^1.0.0-rc.23", "postcss": "^8.4.49", "process": "^0.11.10", "punycode": "^2.1.1", diff --git a/packages/pl-fe/src/features/admin/tabs/dashboard.tsx b/packages/pl-fe/src/features/admin/tabs/dashboard.tsx index fd9948224..b846e7b8d 100644 --- a/packages/pl-fe/src/features/admin/tabs/dashboard.tsx +++ b/packages/pl-fe/src/features/admin/tabs/dashboard.tsx @@ -25,7 +25,6 @@ const Dashboard: React.FC = () => { status_count: statusCount, domain_count: domainCount, } = instance.stats; - console.log(instance); const mau = instance.usage.users.active_month ?? instance.pleroma.stats.mau; const retention = (userCount && mau) ? Math.round(mau / userCount * 100) : undefined; diff --git a/packages/pl-fe/src/utils/scopes.ts b/packages/pl-fe/src/utils/scopes.ts index bfaf61d22..c2133036d 100644 --- a/packages/pl-fe/src/utils/scopes.ts +++ b/packages/pl-fe/src/utils/scopes.ts @@ -6,17 +6,33 @@ import type { RootState } from 'pl-fe/store'; * Get the OAuth scopes to use for login & signup. * Mastodon will refuse scopes it doesn't know, so care is needed. */ -const getInstanceScopes = (instance: Instance) => { +const getInstanceScopes = (instance: Instance, admin: boolean = true) => { const v = getFeatures(instance).version; + let scopes; + switch (v.software) { case TOKI: - return 'read write follow push write:bites'; + scopes = 'read write follow push write:bites'; + break; case PLEROMA: - return 'read write follow push admin'; + scopes = 'read write follow push admin'; + break; default: - return 'read write follow push'; + scopes = 'read write follow push'; } + + if (admin) { + switch (v.software) { + case PLEROMA: + scopes += ' admin'; + break; + default: + scopes += ' admin:read admin:write'; + } + } + + return scopes; }; /** Convenience function to get scopes from instance in store. */ diff --git a/packages/pl-fe/yarn.lock b/packages/pl-fe/yarn.lock index 1d98d6bc4..cf6612b7a 100644 --- a/packages/pl-fe/yarn.lock +++ b/packages/pl-fe/yarn.lock @@ -7553,10 +7553,10 @@ pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" -pl-api@^1.0.0-rc.19: - version "1.0.0-rc.19" - resolved "https://registry.yarnpkg.com/pl-api/-/pl-api-1.0.0-rc.19.tgz#561b982a7d5377b8f193368072ad15371c649bb4" - integrity sha512-1m9asR6RLq+jRSkk39ccl7TbkzoNDMJCdNgE08hA6FHecItfhMt2xM6FYUqV/Me4RzWUsnnswhuSNd4G2+D7uw== +pl-api@^1.0.0-rc.23: + version "1.0.0-rc.23" + resolved "https://registry.yarnpkg.com/pl-api/-/pl-api-1.0.0-rc.23.tgz#2ffb3ca2ee8f5cbb802e148a655c0983f42287b6" + integrity sha512-v59/dtsGLgvJpiO7P6ET9B+FubXbumEKr4IJTTxUlZpo1GWp7PDtdLkS9yeCWLTQJNC8BWUsr+VolW+xGa7pJg== dependencies: blurhash "^2.0.5" http-link-header "^1.1.3"