Kundenseite: Kundenansicht oeffnen, letzter Login, Preview per Einmal-Link
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
370724a9a7
commit
fce2f41463
7 files changed
+92
-7
No files matched your search
@@ -0,0 +1,33 @@
|
||||
import { useState } from 'react'
|
||||
import { FaArrowUpRightFromSquare, FaSpinner } from 'react-icons/fa6'
|
||||
import { Button } from '../ui'
|
||||
import { createKundenansichtLink } from '../../lib/teamApi'
|
||||
import { openInNewTab } from '../../lib/openInNewTab'
|
||||
|
||||
/** Kundenansicht im Portal in einem neuen Tab öffnen (Einmal-Link). Ohne Portal-Zugang ausgegraut. */
|
||||
export default function KundenansichtButton({ customer, variant = 'primary' }) {
|
||||
const [busy, setBusy] = useState(false)
|
||||
const hasAccess = Boolean(customer?.portalAccessEnabled && customer?.appwriteUserId)
|
||||
|
||||
const open = async () => {
|
||||
setBusy(true)
|
||||
try {
|
||||
await openInNewTab(() => createKundenansichtLink(customer.$id))
|
||||
} catch (err) {
|
||||
window.alert(err.message || 'Die Kundenansicht konnte nicht geöffnet werden.')
|
||||
} finally {
|
||||
setBusy(false)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Button
|
||||
variant={variant}
|
||||
onClick={open}
|
||||
disabled={!hasAccess || busy}
|
||||
title={hasAccess ? 'Portal so öffnen, wie der Kunde es sieht' : 'Kein Portal-Zugang'}
|
||||
>
|
||||
{busy ? <FaSpinner className="spinner" /> : <FaArrowUpRightFromSquare />} Kundenansicht öffnen
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
Reference in new issue
Block a user