Skip to content

Comments

[FE] 대시보드 카드 편집 API 연동 및 에러 fallback 처리#304

Merged
lwjmcn merged 61 commits intodevelopfrom
feature/#50-dashboard-edit-api
Feb 20, 2026
Merged

[FE] 대시보드 카드 편집 API 연동 및 에러 fallback 처리#304
lwjmcn merged 61 commits intodevelopfrom
feature/#50-dashboard-edit-api

Conversation

@lwjmcn
Copy link
Collaborator

@lwjmcn lwjmcn commented Feb 17, 2026

#️⃣ 변경 사항

  • 대시보드 목록 및 카드 레이아웃 조회/수정/삭제 API 연동
  • 대시보드 상태 관리 리팩터링 및 Local Storage를 통한 현재 대시보드 정보 유지
  • 공통 에러 핸들링 및 로딩 상태 처리를 위한 컴포넌트 도입 (FetchBoundary, Suspense, Skeleton)

#️⃣ 작업 상세 내용

1. 대시보드 및 카드 레이아웃 API 연동

  • 카드 편집 완료 기능:useSuspenseQueryuseMutation을 사용하여 서버 상태를 관리하며, 카드 편집 완료 시 invalidateQueries를 통해 최신 데이터를 유지합니다.

2. 상태 관리 및 컨텍스트 리팩터링

  • EditCardProvider 확장:
  • 상태 유지: Local Storage에 현재 선택된 대시보드 ID를 저장하여 페이지 새로고침 시에도 탭 상태가 유지되도록 했습니다. 특정 대시보드에서 카드 편집을 마치고 돌아왔을 때, 홈 대시보드로 돌아가는 것이 UX를 해친다고 생각했습니다.

3. 에러 핸들링 및 UI 컴포넌트 보강

  • URL 방어 로직: 사용자가 URL의 search parameter를 직접 조작하여 들어올 경우를 대비하여, EditCardProvider에서 유효성 여부를 체크하고, 유효하지 않은 경우 에러를 던집니다.
  • 기본 대시보드: 기본 대시보드의 경우 편집이 불가합니다. 1차로 대시보드 메인 화면에서 카드 편집 페이지로 가는 Link를 비활성화 하고, 2차로 편집 화면에서 EditCardProvider가 유효성을 검증합니다.
  • 공통 에러 컴포넌트: ErrorFallbackFetchBoundary를 분리하여 네트워크 에러와 런타임 에러를 분리해서 처리했습니다.
  • 로딩 UI: shadcn/ui 기반의 Skeleton 컴포넌트를 추가하고 DashboardMainSuspense를 통해 데이터 패칭 중 사용자 경험을 개선했습니다.
  • Fallback 스타일 개선: 기존의 LoadingFallback과 ErrorFallback의 내용이 전체 화면에 중앙 정렬되도록 스타일을 수정했습니다.

참고사항

#️⃣ 관련 이슈

- EditCardProvider에 드래그앤드랍 관련 상태 추가
- 대시보드 편집 영역 상수 및 타입 정의
- 대시보드 카드 타입에 드래그 상태 및 고스트 상태 추가
- 드래그앤드랍에서 충돌 로직을 계산할 때 grid 배열 시 코드가 복잡해지기 때문에 수정함
- 대시보드에서 카드의 위치와 크기를 계산하는 훅을 추가함
- 카드를 absolute 포지션으로 배치하고, 마우스 위치를 통해 그리드 셀을 도출해내는 로직을 위해 필요
- PlusIconButton과 TrashCanIconButton에서 클릭 이벤트가 부모 요소로 전파되지 않도록 수정
- 사용자 경험 개선을 위해 버튼 클릭 시 의도한 동작만 수행하도록 함
- 카드 밀어내기 알고리즘 구현
- 그리드 셀에 카드 위치 계산 기능 추가
- 드래그 이벤트 핸들러 구현
- dx, dy로 된 방향 객체 리터럴 선언
- 카드 편집 뷰에 드래그 앤 드롭 이벤트 핸들러 추가
- 미니 뷰에 드래그 앤 드롭 관련 상태 및 핸들러 통합
- 드래그 중인 카드의 시각적 피드백을 위한 Ghost 컴포넌트 추가
- 스로틀링을 통해 불필요한 함수 호출 방지
- 새로운 스로틀 유틸리티 함수 추가
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이번 PR 은 대시보드 카드 편집 기능의 API 연동, 드래그 앤 드롭 기능 구현, 그리고 전반적인 에러 처리 개선을 포함하고 있습니다. 상태 관리 로직이 크게 리팩토링되었으며, 코드의 품질, 유지보수성, 그리고 안정성 향상에 초점을 맞추어 리뷰를 진행했습니다. 일부 컴포넌트에서 로직의 명확성을 높이고, 하드코딩된 값을 상수로 대체하며, 에러 처리 방식을 개선하는 방향의 제안 사항들이 포함되어 있습니다.

@lwjmcn lwjmcn added the ✨ feat 새로운 기능이나 서비스 로직을 추가합니다. label Feb 17, 2026
@lwjmcn lwjmcn self-assigned this Feb 17, 2026
buttonText = '다시 시도',
onClickButton,
resetErrorBoundary,
}: ErrorFallbackProps) => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p5] 기존 코드에서 에러 메시지랑, 버튼 클릭 헨들러를 props로 추가로 받으셨네요! 범용성이 더 좋아진 것 같습니다 굳굳굳!

@lwjmcn lwjmcn merged commit e177df7 into develop Feb 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ feat 새로운 기능이나 서비스 로직을 추가합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FE] 3-3-2. 대시보드 카드 편집 저장 API 연동

3 participants