diff --git a/locales/index.d.ts b/locales/index.d.ts index 00fdc4649c14..6745be3a752f 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -927,6 +927,7 @@ export interface Locale { "recentNDays": string; "noEmailServerWarning": string; "thereIsUnresolvedAbuseReportWarning": string; + "pendingUserApprovals": string; "recommended": string; "check": string; "driveCapOverrideLabel": string; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 539054e012b6..26b46dd413cb 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -924,6 +924,7 @@ recentNHours: "直近{n}時間" recentNDays: "直近{n}日" noEmailServerWarning: "メールサーバーの設定がされていません。" thereIsUnresolvedAbuseReportWarning: "未対応の通報があります。" +pendingUserApprovals: "承認待ちのユーザーがいます。" recommended: "推奨" check: "チェック" driveCapOverrideLabel: "このユーザーのドライブ容量上限を変更" diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue index 5e92cbd60058..83b02006687e 100644 --- a/packages/frontend/src/pages/admin/index.vue +++ b/packages/frontend/src/pages/admin/index.vue @@ -16,6 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only {{ i18n.ts.noMaintainerInformationWarning }} {{ i18n.ts.configure }} {{ i18n.ts.noBotProtectionWarning }} {{ i18n.ts.configure }} {{ i18n.ts.noEmailServerWarning }} {{ i18n.ts.configure }} + {{ i18n.ts.pendingUserApprovals }} {{ i18n.ts.check }} @@ -60,6 +61,7 @@ let noMaintainerInformation = isEmpty(instance.maintainerName) || isEmpty(instan let noBotProtection = !instance.disableRegistration && !instance.enableHcaptcha && !instance.enableRecaptcha && !instance.enableTurnstile; let noEmailServer = !instance.enableEmail; const thereIsUnresolvedAbuseReport = ref(false); +const pendingUserApprovals = ref(false); const currentPage = computed(() => router.currentRef.value.child); os.api('admin/abuse-user-reports', { @@ -69,6 +71,13 @@ os.api('admin/abuse-user-reports', { if (reports.length > 0) thereIsUnresolvedAbuseReport.value = true; }); +os.api('admin/show-users', { + state: 'approved', + limit: 1, +}).then(approvals => { + if (approvals.length > 0) pendingUserApprovals.value = true; +}); + const NARROW_THRESHOLD = 600; const ro = new ResizeObserver((entries, observer) => { if (entries.length === 0) return;