'use client'; import { useState, useTransition } from 'react'; import { FoxButton } from '@fox/core/components/fox-button'; import { FoxButtonGroup } from '@fox/core/components/fox-button-group'; import { FoxIconButton } from '@fox/core/components/fox-icon-button'; import { useFeedback } from '@/app/_hooks/use-feedback'; import type { AdminMember } from '@/lib/domain/admin-member'; import styles from './admin-member-row-actions.module.scss'; import { deleteAdminMemberAction } from '../_actions'; import { AdminMemberEditModal } from './admin-member-edit-modal'; interface AdminMemberRowActionsProps { member: AdminMember; isSelf: boolean; } const SELF_DELETE_HINT = '현재 로그인한 본인 계정은 삭제할 수 없습니다.'; export function AdminMemberRowActions({ member, isSelf, }: AdminMemberRowActionsProps) { const { showAlert, hideAlert, showToast } = useFeedback(); const [isEditOpen, setIsEditOpen] = useState(false); const [isDeleting, startDeleting] = useTransition(); function runDelete() { hideAlert(); startDeleting(async () => { const result = await deleteAdminMemberAction(member.id); if (result.status === 'error') { showToast({ variant: 'danger', message: result.message ?? '삭제하지 못했습니다.', }); return; } showToast({ variant: 'success', message: '관리자를 삭제했습니다.' }); }); } function confirmDelete() { showAlert({ variant: 'danger', title: '관리자를 삭제하시겠습니까?', message: `${member.name}(${member.loginId}) 계정을 삭제합니다. 삭제 후에는 되돌릴 수 없습니다.`, actions: ( ), }); } return ( ); }