[FIX] 홈/채팅/대화목록/카드 결과 화면 UX 버그 모음 수정 - #40
Merged
Merged
Conversation
콜드 스타트 후 홈 진입 시 닉네임이 "OO" 플레이스홀더에서 실제 값으로 바뀌는 게 보이는 문제를 해결. - greeting은 항상 마운트해 레이아웃(자리)을 고정하고, 프로필이 준비되기 전엔 opacity 0으로만 감춤 — MessageComposerView가 밀리며 움직이지 않음 - 닉네임 텍스트가 확정되는 트랜잭션과 opacity 애니메이션 트랜잭션을 분리(isGreetingReady + onChange)해서, 텍스트 폭이 바뀌며 스냅되는 것 없이 화면이 제자리에서 크로스 디졸브로 나타남 - MessageComposerView는 프로필 조회 성공/로딩/실패 여부와 무관하게 항상 렌더링 — 조회 실패 시에도 메시지 입력이 막히지 않음
replyTarget이 sendMessageUseCase.execute() 완료(캐릭터 답장 생성까지 포함) 이후에만 nil로 바뀌어서, 답장 미리보기/취소 버튼이 캐릭터 응답이 올 때까지 화면에 남아있던 문제. input/pendingUserMessage와 동일하게 전송 시작 시점에 즉시 비우고, 실패 시엔 그 사이에 사용자가 새 답장을 고르지 않았을 때만 복원하도록 함(input 복원과 동일한 가드).
지금까지 ChatView는 토큰을 다 쓰면 입력창을 막고 안내 문구를 보여줬지만
HomeView는 그대로 입력이 가능했다. HomeViewModel에 GetTokenUsageUseCase를
추가해 화면 진입/재진입마다(채팅에서 토큰을 다 쓰고 돌아왔을 수 있어
캐싱하지 않음) 토큰 사용량을 확인하고, 다 썼으면 MessageComposerView에
동일 문구("오늘의 토큰을 모두 사용했어요")를 플레이스홀더로 보여주며
입력/감정선택/전송을 막는다. send()에도 가드를 추가해 이중 방어한다.
기어 아이콘이 탭 액션 없이 이미지로만 있어서 눌러도 아무 반응이 없었음. onTappedSettingButton 콜백을 추가하고 HomeView와 동일한 방식으로 SettingView에 navigationDestination 연결.
파일은 존재했지만 project.pbxproj에 빌드 대상으로 등록돼 있지 않아서, xcodebuild test를 아무리 돌려도 이 파일의 테스트 12개가 조용히 0개 실행되고 있었음(빌드/테스트 결과엔 실패로도 안 잡힘). 다른 테스트 파일과 동일한 방식으로 PBXBuildFile/PBXFileReference/그룹/Sources 빌드 페이즈에 등록.
동적으로 계층을 바꾸는 방식(dragOffset 임계값 넘으면 trashBin 뒤로 재배치)은 SwiftUI가 if/else 분기 전환 시 종이 뷰를 다시 만들면서 진행 중이던 오프셋 애니메이션이 끊겨, 일정 지점 아래로는 종이가 안 내려가는 문제가 있었음. 대신 종이/화살표를 항상 trashBin보다 뒤 계층에 고정해서, 아래로 스와이프하면 자연스럽게 쓰레기통 뒤로(안으로) 들어가는 것처럼 보이게 함 — 뷰가 다시 만들어지지 않으니 드래그/드롭 애니메이션이 끊기지 않는다. opacity(forDragOffset:)/isBehindTrashBin(dragOffset:) 모두 제거. 놓았을 때 손 뗀 위치에서 바로 닫히던 것도 이전 커밋에서 고친 대로 drop()으로 끝까지 떨어지는 애니메이션 재생 후 onComplete() 호출을 유지한다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Describe
홈/채팅/대화목록/카드 결과 화면에서 발견된 UX 버그 6건을 한 브랜치에서 모아 수정했습니다.
Works made
"OO"플레이스홀더가 실제 닉네임으로 바뀌는 게 보이던 문제.greeting을 항상 마운트해 레이아웃을 고정하고, 값이 준비된 뒤에만 크로스 디졸브로 나타나게 함.MessageComposerView는 프로필 조회 성공/로딩/실패와 무관하게 항상 렌더링input/pendingUserMessage와 동일하게 전송 시작 시점에 즉시replyTarget을 비우고, 실패 시엔 그 사이 사용자가 새 답장을 고르지 않았을 때만 복원.HomeViewModel에GetTokenUsageUseCase추가, 화면 진입/재진입마다(캐싱 없이) 토큰 사용량 확인 후 채팅과 동일한 문구로 입력/감정선택/전송을 막음.SettingView연결.