imad-project / imad-ios

1 stars 0 forks source link

[향상]뷰 유저정보 의존성 제거 #145

Open QuaRang1225 opened 1 week ago

QuaRang1225 commented 1 week ago

현재 최상위뷰인 ContentView에서 유저정보를 얻게 되면 하위인 모든 View들이 그 user 정보를 가지고 있어야했기에 .environmentObject()로 데이터를 공유했음

132의 잇슈 내용 중 user데이터 부분만 해결

유저정보를 뷰끼리 공유하는 이유

  • 만약 네트워크 요청이 실패했을 때 중 인증정보가 만료되면 로그인을 유도해야하기 때문에, 강제로 로그아웃 시킴
  • 현재 iOS에서는 로그아웃 시 가지고 있던 유저정보와 토큰을 삭제하고, 최상위 뷰는 유저정보의 유무에 따라 로그인뷰를 표시할 지 메인뷰를 표시할 지 결정함
  • 그래서 어떤 뷰를 띄워놔도 토큰만료 시 최상위뷰의 유저정보를 핸들링하기 위해 전 화면이 모두 같은 퍼블리셔를 공유했음

문제

  • 뷰들끼리 의존성이 존재함(테스트 코드를 작성하거나,View끼리 데이터 연동을 하지 않을 시 런타임에러가 발생)
  • user정보를 사용하지 않는 뷰들도 하위뷰에게 넘겨주기 위해 데이터를 공유해야함
  • 코드수가 복잡해짐