import React, { useCallback } from 'react'; import type { IAdminExternalAccount } from '@growi/core'; import dateFnsFormat from 'date-fns/format'; import { useTranslation } from 'next-i18next'; import AdminExternalAccountsContainer from '~/client/services/AdminExternalAccountsContainer'; import { toastSuccess, toastError } from '~/client/util/toastr'; import { withUnstatedContainers } from '../../UnstatedUtils'; import styles from './ExternalAccountTable.module.scss'; type ExternalAccountTableProps = { adminExternalAccountsContainer: AdminExternalAccountsContainer, } const ExternalAccountTable = (props: ExternalAccountTableProps): JSX.Element => { const { t } = useTranslation('admin'); const { adminExternalAccountsContainer } = props; const removeExtenalAccount = useCallback(async(externalAccountId) => { try { const accountId = await adminExternalAccountsContainer.removeExternalAccountById(externalAccountId); toastSuccess(t('toaster.remove_external_user_success', { accountId })); } catch (err) { toastError(err); } }, [adminExternalAccountsContainer, t]); return (
{ adminExternalAccountsContainer.state.externalAccounts.map((ea: IAdminExternalAccount) => { return ( ); }) }
{t('user_management.authentication_provider')}
accountId
{t('user_management.related_username')}username
{t('user_management.password_setting')}
{t('Created')}
{ea.providerType} {ea.accountId} {ea.user.username} {ea.user.password ? ({t('user_management.set')}) : ({t('user_management.unset')}) } {dateFnsFormat(new Date(ea.createdAt), 'yyyy-MM-dd')}
  • {t('user_management.user_table.edit_menu')}
); }; const ExternalAccountTableWrapper = withUnstatedContainers(ExternalAccountTable, [AdminExternalAccountsContainer]); export default ExternalAccountTableWrapper;