Add global admin user-view preview
Magent CI/CD / verify (push) Successful in 10m37s
Magent CI/CD / deploy-prod (push) Skipped
Magent CI/CD / deploy-beta (push) Successful in 22s

This commit is contained in:
2026-09-01 17:04:25 +12:00
parent b3c41f6dea
commit 7ed0f4b103
7 changed files with 228 additions and 55 deletions
+2 -17
View File
@@ -3,6 +3,7 @@
import { useRouter } from 'next/navigation'
import { useEffect, useMemo, useState } from 'react'
import { authFetch, clearToken, getApiBase, getToken } from '../../lib/auth'
import { useUserViewPreview } from '../../lib/viewMode'
type ProfileInfo = {
username: string
@@ -97,7 +98,7 @@ export default function ProfileInvitesPage() {
const [inviteManagedByMaster, setInviteManagedByMaster] = useState(false)
const [masterInviteTemplate, setMasterInviteTemplate] = useState<OwnedInvitesResponse['master_invite']>(null)
const [loading, setLoading] = useState(true)
const [viewAsUser, setViewAsUser] = useState(false)
const viewAsUser = useUserViewPreview()
const signupBaseUrl = useMemo(() => {
if (typeof window === 'undefined') return '/signup'
@@ -136,7 +137,6 @@ export default function ProfileInvitesPage() {
}
useEffect(() => {
setViewAsUser(new URLSearchParams(window.location.search).get('view') === 'user')
if (!getToken()) {
router.push('/login')
return
@@ -309,11 +309,6 @@ export default function ProfileInvitesPage() {
const canManageInvites = profile?.role === 'admin' || inviteAccessEnabled
const enterUserView = () => {
setViewAsUser(true)
router.replace('/profile/invites?view=user')
}
if (loading) {
return <main className="card">Loading invite tools...</main>
}
@@ -330,16 +325,6 @@ export default function ProfileInvitesPage() {
</p>
</div>
<div className="admin-inline-actions">
{profile?.role === 'admin' && !viewAsUser ? (
<button type="button" className="ghost-button" onClick={enterUserView}>
View as user
</button>
) : null}
{profile?.role === 'admin' && viewAsUser ? (
<button type="button" onClick={() => router.push('/admin/invites')}>
Return to admin view
</button>
) : null}
<button type="button" className="ghost-button" onClick={() => router.push('/profile')}>
Back to profile
</button>