사용자 삭제 기능 추가

- 헤더 오른쪽 버튼 시스템 구현
  - ContextType에 setOnRightClick 추가
  - useSetOnRightClick 훅 추가
  - HeaderNavigationProps에 onRightClick 추가
  - HeaderType.LeftArrow에 오른쪽 삭제 버튼 렌더링

- 사용자 삭제 API 및 타입 추가
  - UserDeleteParams, UserDeleteResponse 인터페이스 추가
  - use-user-delete-mutation 훅 생성
  - API_URL_USER.deleteUser() 엔드포인트 사용

- 사용자 설정 페이지에서 삭제 기능 구현
  - 현재 로그인한 사용자가 아닐 경우에만 삭제 버튼 표시
  - showConfirm 다이얼로그로 삭제 확인
  - 삭제 성공 시 토스트 메시지 표시 및 목록 페이지로 이동
  - 목록 페이지에서 refresh 상태로 자동 갱신

- showConfirm 위젯 추가
  - Promise 기반의 확인 다이얼로그
  - 취소/확인 버튼 지원
  - 다국어 지원 (common.cancel, common.confirm)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jay Sheen
2025-11-14 18:22:22 +09:00
parent c6d22e9856
commit f7db3236e8
9 changed files with 188 additions and 13 deletions

View File

@@ -39,6 +39,7 @@ import { AlarmRoutes } from '@/entities/alarm/ui/alarm-routes';
export interface ContextType {
setOnBack: (onBack: () => void) => void;
setOnRightClick: (onRightClick: () => void) => void;
setHeaderTitle: (title: string) => void;
setIsPullToRefreshEnabled: (enabled: boolean) => void;
setMenuOn: (menuOn: boolean) => void;
@@ -65,6 +66,7 @@ export const SubLayout = () => {
} = useUserInfo();
const [onBack, setOnBack] = useState(undefined);
const [onRightClick, setOnRightClick] = useState(undefined);
const [headerTitle, setHeaderTitle] = useState<string>('');
const [headerType, setHeaderType] = useState<HeaderType>(HeaderType.NoHeader);
const [footerMode, setFooterMode] = useState<boolean>(false);
@@ -405,9 +407,10 @@ export const SubLayout = () => {
return (
<div className={ wrapperClassName }>
<Fragment>
<HeaderNavigation
onBack={ onBack }
headerTitle={ headerTitle }
<HeaderNavigation
onBack={ onBack }
onRightClick={ onRightClick }
headerTitle={ headerTitle }
headerType={ headerType }
key={ headerNavigationKey }
loginSuccess={ loginSuccess }
@@ -418,6 +421,7 @@ export const SubLayout = () => {
<Outlet
context={{
setOnBack,
setOnRightClick,
setHeaderTitle,
setHeaderType,
setFooterMode,