Build 2602261636: self-service invites and count fixes
This commit is contained in:
@@ -102,6 +102,7 @@ export default function AdminInviteManagementPage() {
|
||||
const [invites, setInvites] = useState<Invite[]>([])
|
||||
const [profiles, setProfiles] = useState<Profile[]>([])
|
||||
const [users, setUsers] = useState<AdminUserLite[]>([])
|
||||
const [jellyfinUsersCount, setJellyfinUsersCount] = useState<number | null>(null)
|
||||
const [loading, setLoading] = useState(true)
|
||||
|
||||
const [inviteSaving, setInviteSaving] = useState(false)
|
||||
@@ -175,6 +176,20 @@ export default function AdminInviteManagementPage() {
|
||||
setInvites(Array.isArray(inviteData?.invites) ? inviteData.invites : [])
|
||||
setProfiles(Array.isArray(profileData?.profiles) ? profileData.profiles : [])
|
||||
setUsers(Array.isArray(usersData?.users) ? usersData.users : [])
|
||||
try {
|
||||
const jellyfinRes = await authFetch(`${baseUrl}/admin/jellyfin/users`)
|
||||
if (jellyfinRes.ok) {
|
||||
const jellyfinData = await jellyfinRes.json()
|
||||
setJellyfinUsersCount(Array.isArray(jellyfinData?.users) ? jellyfinData.users.length : 0)
|
||||
} else if (jellyfinRes.status === 401 || jellyfinRes.status === 403) {
|
||||
if (handleAuthResponse(jellyfinRes)) return
|
||||
} else {
|
||||
setJellyfinUsersCount(null)
|
||||
}
|
||||
} catch (jellyfinErr) {
|
||||
console.warn('Could not load Jellyfin user count for invite overview', jellyfinErr)
|
||||
setJellyfinUsersCount(null)
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
setError('Could not load invite management data.')
|
||||
@@ -635,12 +650,19 @@ export default function AdminInviteManagementPage() {
|
||||
</div>
|
||||
</div>
|
||||
<div className="invite-admin-summary-row">
|
||||
<span className="label">Non-admin users</span>
|
||||
<span className="label">Local non-admin accounts</span>
|
||||
<div className="invite-admin-summary-row__value">
|
||||
<strong>{nonAdminUsers.length}</strong>
|
||||
<span>{profiledUsers} with profile</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="invite-admin-summary-row">
|
||||
<span className="label">Jellyfin users</span>
|
||||
<div className="invite-admin-summary-row__value">
|
||||
<strong>{jellyfinUsersCount ?? '—'}</strong>
|
||||
<span>{jellyfinUsersCount == null ? 'Unavailable/not configured' : 'Current Jellyfin user objects'}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="invite-admin-summary-row">
|
||||
<span className="label">Expiry rules</span>
|
||||
<div className="invite-admin-summary-row__value">
|
||||
@@ -724,12 +746,13 @@ export default function AdminInviteManagementPage() {
|
||||
<div>
|
||||
<h2>Blanket controls</h2>
|
||||
<p className="lede">
|
||||
Apply invite profile defaults or expiry to all non-admin users. Individual users can still be edited from their user page.
|
||||
Apply invite profile defaults or expiry to all local non-admin accounts. Individual users can still be edited from their user page.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="admin-meta-row">
|
||||
<span>Non-admin users: {nonAdminUsers.length}</span>
|
||||
<span>Local non-admin users: {nonAdminUsers.length}</span>
|
||||
<span>Jellyfin users: {jellyfinUsersCount ?? '—'}</span>
|
||||
<span>Profile assigned: {profiledUsers}</span>
|
||||
<span>Custom expiry set: {expiringUsers}</span>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user