You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
설정 ViewModel이 저장소 suspend 호출을 stdlib runCatching으로 감싸 CancellationException을 일반 실패로 처리하는 현재 잔여를 수정한다. 좁은 저장소 계약을 적용한 PR #2123과 저장 정책 추출 PR #2124를 포함한 현재 코드가 기준이다.
현재 범위
ConnectedAccountsViewModel의 계정 조회, 연결, 해제 3곳
SettingViewModel의 프로필 조회 1곳
PushNotificationViewModel의 마케팅 동의 조회 1곳
위 5곳에 기존 core:common runCatchingCancellable을 적용한다. 이미 취소를 전파하는 수신자·전달조건 저장과 알림 토글 저장, 계정 탈퇴 처리는 유지한다. 취소를 제외한 Throwable의 기존 실패 처리와 성공 동작, 상태·이벤트 갱신 순서는 보존한다.
닫힌 미병합 #1967, #1925, #1930, #2043에 있던 취소 수정은 develop에 반영된 결과가 아니다. 과거 설정 11곳이라는 수치는 역사적 실측이며 현재 수정 개수로 사용하지 않는다. 프로필 조회·수정 2곳의 취소 전파는 #2179의 MVI 선행에 포함되어 이 이슈의 코드 변경에서 빠진다. 그 종료 회귀 검증은 유지한다. 타임레터 몫은 #2041에서 별도로 다룬다.
완료 조건
현재 설정 presentation의 실제 저장소 suspend 호출에서 취소를 일반 실패로 소비하는 stdlib runCatching 잔여가 없다.
실제 ViewModelStore 종료로 진행 중인 7개 호출(이번 5곳과 선행 #2179의 프로필 2곳)을 취소하는 회귀 테스트에서 취소 도달, 상태 유지와 실패 이벤트 부재를 확인한다.
마케팅 동의 조회 취소 후 ErrorReporter 기록과 실패 Logcat이 모두 0건임을 확인한다.
기존 성공·일반 실패 계약을 유지하며 관련 단위 테스트, ktlint, 앱 컴파일과 Konsist 검사를 통과한다.
병합 순서
실제 선형 스택은 #2123, #2173, #2180, #2124, 이 이슈의 PR 순서다. #2124의 브랜치를 실제 base로 사용해 선행 변경이 이 PR diff에 섞이지 않도록 한다. #2123의 좁은 저장소 계약을 소비하며 #2124 뒤의 순서는 같은 설정 작업의 스택 통합을 위한 것이다.
changed the title [-]fix(setting,timeletter): ViewModel 이 저장소 suspend 를 감싼 runCatching 으로 취소를 삼킨다 — #661 의 presentation 잔여 20곳[/-][+]fix(setting): ViewModel 저장소 호출의 취소 전파 잔여를 마무리한다 (#661 후속)[/+]on Sep 13, 2026
Activity
github-actions commentedon Aug 29, 2026
bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:
등록 후 24시간이 지나도 비어 있으면 자동으로 닫습니다. 닫힌 뒤에는 값을 지정하고 다시 열어 주세요.
[-]fix(setting,timeletter): ViewModel 이 저장소 suspend 를 감싼 runCatching 으로 취소를 삼킨다 — #661 의 presentation 잔여 20곳[/-][+]fix(setting): ViewModel 저장소 호출의 취소 전파 잔여를 마무리한다 (#661 후속)[/+]github-actions commentedon Sep 13, 2026
이 이슈를 맡은 PR 은 #2043 다 (base
fix/963-setting-error-reporting).base 가 기본 브랜치(
develop)가 아니라서 GitHub 은 이 이슈의 Development 칸에아무것도 표시하지 않는다. 본문에
Closes #N이 있어도 마찬가지다 — 그 링크는 기본 브랜치를target 하는 PR 에서만 만들어진다.
PR 이 닫히거나 머지되면 이 이슈의
pr-open라벨은 다음 리컨사일에서 떨어진다.github-actions commentedon Sep 20, 2026
이 이슈를 맡은 PR 은 #2128 다 (base
refactor/1691-setting-save-usecases).base 가 기본 브랜치(
develop)가 아니라서 GitHub 은 이 이슈의 Development 칸에아무것도 표시하지 않는다. 본문에
Closes #N이 있어도 마찬가지다 — 그 링크는 기본 브랜치를target 하는 PR 에서만 만들어진다.
PR 이 닫히거나 머지되면 이 이슈의
pr-open라벨은 다음 리컨사일에서 떨어진다.test(setting): 취소 회귀를 MVI 프로필 계약에 맞춤 (#1501)
chore(setting): propagate current setting parent (#1501)
test(setting): propagate save error viewport check (#1501)