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
{{ message }}
Repository navigation
refactor(afternote): 편집기 ViewModel과 직접 소비 경계를 MVI로 전환한다 #1804
현재 제공되는 AfternoteEditorViewModel과 직접 소비 경계를 MVI로 전환한다. 폼·미디어·수신자·저장·prefill 입력과 소비 호출을 Intent로 모으고 상태 변경은 순수 reducer로 처리한다. SavedState 저장·저장소 호출·계측은 reducer 밖에 둔다.
구현 PR #1972의 직접 base는 사진 값 객체 #1971이다. 선행은 #2164 → #2167 → #1837 → #1838 → #1971이다. 복원 입력 보호 #1839는 이 MVI 완료 뒤 최종 Intent/reducer에 적용한다. 기존 mutable 상태와 public 함수를 확장한 후 다시 옮기던 중간 구현을 만들지 않는다.
완료 조건:
Nav3 공유 flow와 직접 화면 소비처가 Intent 계약을 사용한다.
Save/PATCH·prefill skeleton·오류 소비·썸네일 재시도·수신자 선택 취소 계약을 유지한다.
프로덕션 가시성은 실제 소비 범위에 맞추고 테스트 전용 노출을 추가하지 않는다.
presentation 회귀와 app main/unit/androidTest 및 screenshot 소비자 컴파일을 통과한다.
기존 나머지 8개 ViewModel의 전환은 #1968이다. 현재 없는 임시저장 목록 ViewModel 또는 수동 임시저장 화면 구현은 예약하지 않는다.
changed the title [-]refactor(afternote): MVI 전환 — ViewModel 9개, 에디터 29 fun 포함[/-][+]refactor(afternote): 편집기 ViewModel과 직접 소비 경계를 MVI로 전환한다[/+]on Sep 8, 2026
Activity
[-]refactor(afternote): MVI 전환 — ViewModel 9개, 에디터 29 fun 포함[/-][+]refactor(afternote): 편집기 ViewModel과 직접 소비 경계를 MVI로 전환한다[/+]github-actions commentedon Sep 8, 2026
이 이슈를 맡은 PR 은 #1972 다 (base
refactor/1902-memorial-photo).base 가 기본 브랜치(
develop)가 아니라서 GitHub 은 이 이슈의 Development 칸에아무것도 표시하지 않는다. 본문에
Closes #N이 있어도 마찬가지다 — 그 링크는 기본 브랜치를target 하는 PR 에서만 만들어진다.
PR 이 닫히거나 머지되면 이 이슈의
pr-open라벨은 다음 리컨사일에서 떨어진다.fix(afternote): Preview에서 서비스 시트 본문을 렌더한다 (#1804)
test(afternote): 서비스 시트 접근성 스윕을 스크림만 빼고 되살린다 (#1804)
chore(afternote): propagate validated snapshot fixture (#1804)