/* GoToSocial Copyright (C) GoToSocial Authors admin@gotosocial.org SPDX-License-Identifier: AGPL-3.0-or-later This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ import React from "react"; import { useGetAccountQuery } from "../../../../lib/query/admin"; import FormWithData from "../../../../lib/form/form-with-data"; import FakeProfile from "../../../../components/profile"; import { AdminAccount } from "../../../../lib/types/account"; import { AccountActions } from "./actions"; import { useParams } from "wouter"; import { useBaseUrl } from "../../../../lib/navigation/util"; import BackButton from "../../../../components/back-button"; import { UseOurInstanceAccount, yesOrNo } from "../../../../lib/util"; export default function AccountDetail() { const params: { accountID: string } = useParams(); const baseUrl = useBaseUrl(); const backLocation: String = history.state?.backLocation ?? `~${baseUrl}`; return (

Account Details

); } interface AccountDetailFormProps { data: AdminAccount; backLocation: string; } function AccountDetailForm({ data: adminAcct, backLocation }: AccountDetailFormProps) { // If this is our instance account, don't // bother returning detailed account information. const ourInstanceAccount = UseOurInstanceAccount(adminAcct); if (ourInstanceAccount) { return ( <>
This is the service account for your instance; you cannot perform moderation actions on this account.
); } const local = !adminAcct.domain; return ( <> { // Only show local account details // if this is a local account! local && } ); } function GeneralAccountDetails({ adminAcct } : { adminAcct: AdminAccount }) { const local = !adminAcct.domain; const created = new Date(adminAcct.created_at).toDateString(); let lastPosted = "never"; if (adminAcct.account.last_status_at) { lastPosted = new Date(adminAcct.account.last_status_at).toDateString(); } return ( <>

General Account Details

{ adminAcct.suspended &&
Account is suspended.
}
{ !local &&
Domain
{adminAcct.domain}
}
Created
Last posted
{lastPosted}
Suspended
{yesOrNo(adminAcct.suspended)}
Silenced
{yesOrNo(adminAcct.silenced)}
Statuses
{adminAcct.account.statuses_count}
Followers
{adminAcct.account.followers_count}
Following
{adminAcct.account.following_count}
); } function LocalAccountDetails({ adminAcct }: { adminAcct: AdminAccount }) { return ( <>

Local Account Details

{ !adminAcct.approved &&
Account is pending.
} { !adminAcct.confirmed &&
Account email not yet confirmed.
}
Email
{adminAcct.email} {{adminAcct.confirmed ? "(confirmed)" : "(not confirmed)"} }
Disabled
{yesOrNo(adminAcct.disabled)}
Approved
{yesOrNo(adminAcct.approved)}
Sign-Up Reason
{adminAcct.invite_request ?? none provided}
{ (adminAcct.ip && adminAcct.ip !== "0.0.0.0") &&
Sign-Up IP
{adminAcct.ip}
} { adminAcct.locale &&
Locale
{adminAcct.locale}
}
); }