Skip to content

fix: 설정 하위 화면 재진입 갱신과 편집 상태 보존 (#1920) - #2235

Merged
1hyok merged 5 commits into
developfrom
fix/1920-setting-return-refresh
Oct 6, 2026
Merged

1hyok merged 5 commits into
developfrom
fix/1920-setting-return-refresh

Conversation

@1hyok

@1hyok 1hyok commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator

먼저 볼 파일

  • profile/ProfileEditScreen.kt: 새 서버 값은 사용자가 아직 수정하지 않은 입력에만 반영합니다.
  • delivery/DeliveryConditionViewModel.kt: 편집 revision으로 전달 조건 선택을 보존하고 저장 전 오래된 조회를 취소합니다.
  • notification/PushNotificationViewModel.kt: 재진입 시 푸시·마케팅 동의를 갱신하고 저장과 조회의 경합을 막습니다.
  • SettingReentryViewModelTest.kt: 첫 진입, 중복 요청, 조회 실패, 저장 중 복귀와 편집 보존 회귀를 검증합니다.

변경 내용

Closes #1920

연결 계정, 전달 조건, 프로필 수정, 푸시 설정, 알림 설정에 다시 돌아오면 서버 상태를 갱신합니다. 최초 진입은 기존 조회를 재사용하고, 이미 진행 중인 조회나 저장에는 중복 요청을 보내지 않습니다. 알림 설정의 마케팅 수신 동의도 화면 복귀 시 갱신합니다.

자동 갱신 실패 시 기존 화면을 유지하고 저장하지 않은 이름·연락처·사진과 전달 조건 선택을 보존합니다. 저장을 시작하면 오래된 조회를 취소해 뒤늦은 응답이 저장 상태를 덮지 않게 했습니다. 프로필의 변경되지 않은 필드와 이메일은 최신 값으로 갱신합니다.

실제 base는 #2231의 fix/708-setting-error-retry입니다. 최종 MVI·Nav3 계약과 오류/재시도를 소비하며 이전 혼합 PR #1905와 닫힌 #1930의 코드를 통째로 되살리지 않습니다. 다른 모듈의 재진입 처리는 포함하지 않습니다.

검증

  • 설정 단위·Compose UI 테스트 205건과 Konsist 60건 통과(실패·오류·건너뜀 0건).
  • 화면 복귀·경합·입력 보존 테스트 23건 추가. 알림 설정은 실제 Lifecycle 상태 전환으로 재조회를 검증했습니다.
  • 설정·Konsist ktlint, 앱·Android 계측 테스트 컴파일, 스크린샷 테스트 컴파일 통과.
  • 독립 코드 리뷰에서 수정 필수 결함 없음. 프로덕션 visibility는 기존 범위를 유지했습니다.

CI Test Plan

{
  "androidTest": {
    "mode": "selected",
    "reason": "재진입 조회와 전달 조건 저장의 경합을 변경하므로 실제 SettingNavHost에서 저장 성공이 한 화면만 되돌리는 경계를 API34로 검증합니다. 다섯 화면의 재진입, 입력 보존, 마케팅 lifecycle과 요청 경합은 설정 JVM·Compose 테스트로 검증합니다.",
    "tests": [
      {
        "path": "app/src/androidTest/java/com/afternote/afternote_fe/SettingEditorSaveSignalAndroidTest.kt",
        "selector": "com.afternote.afternote_fe.SettingEditorSaveSignalAndroidTest#deliveryCondition_saveSuccessPopsExactlyOneScreenToReceiverSelection",
        "device": "api34"
      }
    ]
  }
}

@github-actions github-actions Bot added the android-test PR head에서 Android Managed Device 계측 테스트 실행 label Oct 1, 2026
@github-actions github-actions Bot added the sibling-conflict 열린 형제 PR 과 같은 파일에서 충돌 — 나중에 머지되는 쪽이 base 를 병합해야 한다. 해소되면 자동으로 떨어진다 label Oct 1, 2026
@github-actions

github-actions Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

형제 충돌이 해소됐다 — 지금은 이 PR 과 같은 파일을 서로 다르게 고친 열린 PR 이 없다 (#1750).
다시 생기면 이 코멘트를 현재 상태로 고쳐 쓴다.

@github-actions
github-actions Bot requested a review from Sadturtleman October 1, 2026 12:12

@Sadturtleman Sadturtleman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

재진입 갱신이 저장·편집 중에는 건너뛰고, 저장 시작 시 오래된 조회를 취소하며, 편집하지 않은 필드만 새 값으로 바꾸는 흐름을 확인했습니다. 승인합니다.

1hyok added 2 commits October 6, 2026 04:55
…rn-refresh

# Conflicts:
#	feature/setting/presentation/src/main/kotlin/com/afternote/feature/setting/presentation/delivery/DeliveryConditionViewModel.kt
@github-actions github-actions Bot added the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

이 PR 은 fix/708-setting-error-retry 와 충돌 상태이고, 그래서 CI 가 돌지 않는다.

pull_request 워크플로는 base 와 head 를 합친 가상 머지 커밋(refs/pull/<N>/merge)에서
실행되는데, 충돌이면 GitHub 이 그 ref 를 만들지 못해 워크플로가 트리거조차 되지 않는다.
체크가 실패하는 것이 아니라 아예 생성되지 않으므로, 새 커밋을 올려도 no checks reported
인 채 최신 커밋이 한 번도 검증되지 않은 상태로 남는다 (#1028).

fix/708-setting-error-retry 를 병합해 충돌을 풀면 검증이 다시 돈다. 해소되면 이 라벨은 자동으로 떨어진다.

@github-actions github-actions Bot added conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 and removed conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 sibling-conflict 열린 형제 PR 과 같은 파일에서 충돌 — 나중에 머지되는 쪽이 base 를 병합해야 한다. 해소되면 자동으로 떨어진다 labels Oct 6, 2026
…rn-refresh

# Conflicts:
#	konsist/src/test/kotlin/com/afternote/konsist/RefreshOnReturnWiringKonsistTest.kt
@github-actions github-actions Bot removed the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Oct 6, 2026
Base automatically changed from fix/708-setting-error-retry to develop October 6, 2026 07:11
@1hyok
1hyok added this pull request to the merge queue Oct 6, 2026
Merged via the queue into develop with commit 16a10f2 Oct 6, 2026
37 of 38 checks passed
@1hyok
1hyok deleted the fix/1920-setting-return-refresh branch October 6, 2026 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

android-test PR head에서 Android Managed Device 계측 테스트 실행

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(setting): 설정 하위 화면 4종의 재진입 갱신 (#703 분리)

2 participants