Files
sodalive-ios/docs/20260715_메인_복귀시_중복_초기화_방지/plan-task.md

2.2 KiB

메인 복귀 시 중복 초기화 방지 계획

Phase 1: 현재 동작 확인

  • Task 1.1: MainView 생명주기와 내비게이션 구조 확인
    • 확인: SodaLive/Sources/V2/Main/MainView.swift
    • 확인: SodaLive/Sources/ContentView.swift
    • 확인: SodaLive/Sources/App/AppState.swift
    • 검증 기준: MainViewNavigationStack 루트에 유지되고 복귀 시 첫 번째 .onAppear의 요청이 반복되는 구조를 확인한다.

Phase 2: 중복 초기화 차단

  • Task 2.1: MainView 인증 데이터 초기화에 1회 가드 적용
    • 수정: SodaLive/Sources/V2/Main/MainView.swift
    • 검증 기준: 로그인 상태에서 hasLoadedMainDatafalse인 경우에만 인증 데이터 요청이 실행된다.
    • 검증 기준: contentView와 push 메시지용 두 번째 .onAppear는 변경되지 않는다.

Phase 3: 검증

  • Task 3.1: 변경 범위 및 Debug 빌드 검증
    • 확인: SodaLive/Sources/V2/Main/MainView.swift
    • 실행 명령: git diff --check
    • 실행 명령: xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug -destination 'generic/platform=iOS Simulator' -derivedDataPath /private/tmp/SodaLiveDerivedData CODE_SIGNING_ALLOWED=NO build
    • 기대 결과: 공백 오류와 컴파일 오류 없이 빌드가 성공한다.

검증 기록

  • 2026-07-15: ContentViewAppState를 확인해 일반 상세 이동은 navigationPath에 destination을 추가하고, 메인 복귀는 path를 제거하는 구조임을 확인했다. MainView의 인증 데이터 요청은 첫 번째 .onAppear에 있어 복귀마다 다시 실행될 수 있다.
  • 2026-07-15: MainViewhasLoadedMainData 상태를 추가하고, 토큰이 존재하면서 아직 로드하지 않은 경우에만 인증 데이터 초기화 요청을 실행하도록 변경했다. contentView와 push 메시지용 두 번째 .onAppear는 변경하지 않았다.
  • 2026-07-15: git diff --check가 exit 0으로 통과했다. Simulator 접근이 필요한 빌드는 샌드박스 밖에서 실행했으며, 위 xcodebuild 명령이 기존 경고만 출력하고 ** BUILD SUCCEEDED ** 및 exit 0으로 완료됐다.