-
Notifications
You must be signed in to change notification settings - Fork 0
[FEAT] Runtime: NavController.navigateTo 백스택 재구성 및 탐색 API 구현 #16
Copy link
Copy link
Closed
Labels
FEAT✨Add a new feature or change the behavior/policy of an existing feature.Add a new feature or change the behavior/policy of an existing feature.
Description
Summary
NavController의 확장 함수 navigateTo(routes: List<Any>)를 구현합니다. 이 함수는 라우트 객체 리스트를 받아, popUpTo와 launchSingleTop을 사용하여 현재 백스택을 모두 지우고 새로운 백스택을 구성하여 탐색하는 역할을 합니다.
Motivation
이 함수는 라이브러리의 최종적인 "실행"을 담당하는 핵심 기능입니다. URI가 Wisp.resolveRoutes를 통해 라우트 객체 리스트로 성공적으로 해석된 후, 이 함수가 실제로 화면을 전환하고 사용자에게 결과를 보여줍니다.
Proposed solution
wisp-runtime모듈에NavController+Wisp.kt같은 파일을 생성합니다.fun NavController.navigateTo(routes: List<Any>)확장 함수를 구현합니다.- 다음 백스택 재구성 알고리즘에 따라 구현합니다.
- 입력받은 라우트 리스트가 비어있으면 아무것도 하지 않고 즉시 반환합니다.
- 첫 번째 라우트로
navigate를 호출하면서,popUpTo(graph.findStartDestination().id) { inclusive = true }옵션을 사용하여 기존의 모든 스택을 제거합니다.launchSingleTop = true도 함께 적용합니다. routes.drop(1)을 사용하여 나머지 라우트들을 순차적으로navigate호출하여 스택에 쌓습니다.
- 테스트 전략: 이 기능은
NavController에 대한 의존성이 높아 순수 단위 테스트가 어렵습니다. 따라서app모듈에서 이 함수를 실제로 호출하고,androidTest를 통해 UI 상에서 백스택이 올바르게 구성되었는지 검증하는 방식의 테스트가 필요합니다.
Additional context
- 이슈 종속성: 이 기능은 PR #15에서 구현 중인
Wisp.resolveRoutes에 의해 생성된 라우트 객체 리스트에 의존합니다.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
FEAT✨Add a new feature or change the behavior/policy of an existing feature.Add a new feature or change the behavior/policy of an existing feature.