Skip to content

Chore: 시크릿 조회 화면 후속 처리 (didLock 연결·접근성·잔여 정리) #96

Description

@doyeonk429

📝 기능 설명

#93이 develop에 머지되면서, 그동안 다른 브랜치 의존으로 미뤄뒀던 항목들을 처리할 수 있게 됐습니다. 개별 이슈로 쪼갤 만큼 크지 않아 하나로 묶습니다.

1. 자동 잠금과 reveal 인증 창 연결

AppLifecycleEvent.didLockRevealAuthPolicy.invalidatesOnLock은 정의되어 있지만 이벤트를 발신하는 곳이 없습니다. 잠금 기능이 별도 브랜치에 있어 연결하지 못했습니다. 잠금 시 이 이벤트를 발신하면 인증 창과 열린 필드가 함께 닫혀 정책이 완성됩니다.

현재 AppLifecycleClientNSApplication.didResignActiveNotification만 관찰합니다.

2. 읽기 전용 체크박스 접근성

DetailSSLRequiredFieldViewDVCheckBox(readOnly:)는 비인터랙티브 도형만 그리므로 VoiceOver가 "SSL Required" 레이블만 읽고 현재 상태를 알려주지 않습니다. 행을 하나의 접근성 요소로 묶고 Required / Not Required 값을 제공해야 합니다. 접근성 인프라가 머지됐으므로 그 관례를 따릅니다.

3. 잔여 정리

  • SecretDetailFeature.didTapRetryReveal은 프로덕션 도달 경로가 없습니다(테스트만 참조). alert에 재시도 버튼을 붙이거나 제거해야 합니다.
  • DVMultilineTextContainer는 사용처가 0입니다. DVTextContainer가 줄바꿈으로 전환되며 역할이 사라졌으므로 제거를 검토합니다.
  • 인증 시트 문구가 리터럴입니다. UserAuthenticationServiceString을 받고 DVDomain에 문자열 카탈로그가 없어, 잠금·온보딩 문구까지 함께 정리해야 합니다.

✅ 작업 목록

  • 잠금 시 AppLifecycleEvent.didLock 발신 연결 — ⚠️ 전제 재확인 필요 (아래 참고)
  • 잠금 → 인증 창·열린 필드 무효화 동작 확인 (테스트 포함)
  • DetailSSLRequiredFieldView 접근성 값 제공 — 행을 하나로 묶고 Required / Not Required를 값으로 제공 (d4eb2ff)
  • didTapRetryReveal제거로 처리 (d4eb2ff). alert에 붙여도 continuation을 잃어 값만 받아오므로, 인증을 통과하고도 모든 필드가 마스킹된 채 남아 아무 일도 안 일어난 것처럼 보인다. 재시도는 눈 버튼이 이미 맡는다 — .failed에서 다시 누르면 그 필드를 continuation에 실은 채 복호화를 새로 걸어 실제로 열린다
  • DVMultilineTextContainer 제거 (d4eb2ff) — 사용처 0 확인 후 삭제(292줄). 메모를 여러 줄 입력으로 바꿀 때도 조회 화면은 DVTextContainer가 개행을 그대로 그려 손댈 필요가 없었다
  • 인증 문구 로컬라이제이션 (잠금·온보딩 포함)

🔗 참고 링크

Warning

1·2번은 전제가 달라졌습니다 — "연결"이 아니라 "존치 여부 결정"이 먼저입니다.

위 본문은 "잠금 시 이 이벤트를 발신하면 인증 창과 열린 필드가 함께 닫혀 정책이 완성된다"고 적었는데, AppFeature가 이미 그보다 강하게 처리하고 있습니다.

case .main(.delegate(.lockRequested)):
    state.main = nil        // ← MainFeature 전체 파괴
    state.locked = .init()

state.main = nil이면 SecretDetailFeature.State가 통째로 사라지므로 revealAuthorizedAt·revealedFields뿐 아니라 편집 중인 editFields까지 함께 없어집니다. .didLock을 발신해도 받을 State가 이미 없습니다.

따라서 AppLifecycleEvent.didLockRevealAuthPolicy.invalidatesOnLock지울지, 자동 잠금(아직 없음) 대비로 남길지 정하는 것이 선행 작업입니다.

Note

6번 범위가 늘었습니다. feature/#76이 수정 진입 인증 문구(AuthenticationReason.editSecret)를 추가해 리터럴이 1개 → 2개가 됐습니다.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions