import {Link} from 'react-router-dom'; import clsx from 'clsx'; import {AccountSettingsPanel} from '../account-settings-panel'; import {User} from '../../../user'; import {IllustratedMessage} from '../../../../ui/images/illustrated-message'; import {SvgImage} from '../../../../ui/images/svg-image/svg-image'; import {Button} from '../../../../ui/buttons/button'; import {FormattedDate} from '../../../../i18n/formatted-date'; import {AccessToken} from '../../../access-token'; import {DialogTrigger} from '../../../../ui/overlays/dialog/dialog-trigger'; import {ConfirmationDialog} from '../../../../ui/overlays/dialog/confirmation-dialog'; import {useDeleteAccessToken} from './delete-access-token'; import {CreateNewTokenDialog} from './create-new-token-dialog'; import {LinkStyle} from '../../../../ui/buttons/external-link'; import {useAuth} from '../../../use-auth'; import {Trans} from '../../../../i18n/trans'; import secureFilesSvg from './secure-files.svg'; import {useSettings} from '../../../../core/settings/use-settings'; import {queryClient} from '@common/http/query-client'; import {AccountSettingsId} from '@common/auth/ui/account-settings/account-settings-sidenav'; interface Props { user: User; } export function AccessTokenPanel({user}: Props) { const tokens = user.tokens || []; const {hasPermission} = useAuth(); const {api} = useSettings(); if (!api?.integrated || !hasPermission('api.access')) return null; return ( } titleSuffix={ } actions={} > {!tokens.length ? ( } title={} /> ) : ( tokens.map((token, index) => ( )) )} ); } interface TokenLineProps { token: AccessToken; isLast: boolean; } function TokenLine({token, isLast}: TokenLineProps) { return (
{token.name}
{token.last_used_at ? ( ) : ( )}
); } function CreateNewTokenButton() { return ( ); } interface DeleteTokenButtonProps { token: AccessToken; } function DeleteTokenButton({token}: DeleteTokenButtonProps) { const deleteToken = useDeleteAccessToken(); return ( { if (isConfirmed) { deleteToken.mutate( {id: token.id}, { onSuccess: () => queryClient.invalidateQueries({queryKey: ['users']}), }, ); } }} > } body={ } confirm={} /> ); }