Skip to content

Commit 03c3ec1

Browse files
authored
Migrate from Navigation 2 to Navigation 3 (#334)
* Migrate from Navigation 2 to Navigation 3 * fix errors * Fix viewmodel input * Spread NavEntry into each modules * refactor: update navigation keys and dependencies for modularization and consistency * integrate compose material3 adaptive navigation and update scene strategies for modularization * Multiple Stacks with NavigationSuiteScaffold * Make poster to dialog scene * Fix errors
1 parent bbfb122 commit 03c3ec1

File tree

43 files changed

+716
-737
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+716
-737
lines changed

β€Žapp/build.gradleβ€Ž

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ dependencies {
7373
implementation projects.core.kotlin
7474
implementation projects.core.designsystem
7575
implementation projects.core.logger
76+
implementation projects.core.resources
7677
implementation projects.data.repository.api
7778
implementation projects.data.model
7879
implementation projects.feature.home.api
@@ -108,13 +109,20 @@ dependencies {
108109
implementation libs.androidx.lifecycle.runtime
109110
implementation libs.androidx.lifecycle.compiler
110111

111-
implementation libs.androidx.navigation.compose
112+
implementation libs.androidx.navigation3.runtime
113+
implementation libs.androidx.navigation3.ui
114+
implementation libs.androidx.lifecycle.viewmodel.navigation3
112115

113116
implementation libs.androidx.activity.compose
114-
implementation libs.androidx.hilt.navigation.compose
117+
implementation libs.androidx.hilt.lifecycle.viewmodel.compose
115118
implementation libs.compose.foundation
116-
implementation libs.compose.material3
117119
implementation libs.compose.ui
120+
implementation libs.compose.material3
121+
implementation libs.compose.material3.adaptivenavigation
122+
implementation libs.compose.material3.adaptive.navigation3
123+
implementation libs.compose.animation.graphics
124+
125+
implementation libs.materialmotion.compose.core
118126

119127
implementation libs.androidx.profileinstaller
120128

β€Žapp/dependencies/releaseRuntimeClasspath.txtβ€Ž

Lines changed: 101 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
1-
androidx.activity:activity-compose:1.10.1
2-
androidx.activity:activity-ktx:1.10.1
3-
androidx.activity:activity:1.10.1
4-
androidx.annotation:annotation-experimental:1.4.1
1+
androidx.activity:activity-compose:1.12.1
2+
androidx.activity:activity-ktx:1.12.1
3+
androidx.activity:activity:1.12.1
4+
androidx.annotation:annotation-experimental:1.5.1
55
androidx.annotation:annotation-jvm:1.9.1
66
androidx.annotation:annotation:1.9.1
7-
androidx.appcompat:appcompat-resources:1.7.0
8-
androidx.appcompat:appcompat:1.7.0
7+
androidx.appcompat:appcompat-resources:1.7.1
8+
androidx.appcompat:appcompat:1.7.1
99
androidx.arch.core:core-common:2.2.0
1010
androidx.arch.core:core-runtime:2.2.0
1111
androidx.autofill:autofill:1.0.0
1212
androidx.browser:browser:1.8.0
1313
androidx.collection:collection-jvm:1.5.0
1414
androidx.collection:collection-ktx:1.5.0
1515
androidx.collection:collection:1.5.0
16-
androidx.compose.animation:animation-android:1.7.8
17-
androidx.compose.animation:animation-core-android:1.7.8
18-
androidx.compose.animation:animation-core:1.7.8
19-
androidx.compose.animation:animation-graphics-android:1.7.8
20-
androidx.compose.animation:animation-graphics:1.7.8
21-
androidx.compose.animation:animation:1.7.8
22-
androidx.compose.foundation:foundation-android:1.7.8
23-
androidx.compose.foundation:foundation-layout-android:1.7.8
24-
androidx.compose.foundation:foundation-layout:1.7.8
25-
androidx.compose.foundation:foundation:1.7.8
26-
androidx.compose.material3.adaptive:adaptive-android:1.0.0
27-
androidx.compose.material3.adaptive:adaptive:1.0.0
16+
androidx.compose.animation:animation-android:1.10.0-beta02
17+
androidx.compose.animation:animation-core-android:1.10.0-beta02
18+
androidx.compose.animation:animation-core:1.10.0-beta02
19+
androidx.compose.animation:animation-graphics-android:1.10.0-beta02
20+
androidx.compose.animation:animation-graphics:1.10.0-beta02
21+
androidx.compose.animation:animation:1.10.0-beta02
22+
androidx.compose.foundation:foundation-android:1.10.0-beta02
23+
androidx.compose.foundation:foundation-layout-android:1.10.0-beta02
24+
androidx.compose.foundation:foundation-layout:1.10.0-beta02
25+
androidx.compose.foundation:foundation:1.10.0-beta02
26+
androidx.compose.material3.adaptive:adaptive-android:1.3.0-alpha05
27+
androidx.compose.material3.adaptive:adaptive-layout-android:1.3.0-alpha05
28+
androidx.compose.material3.adaptive:adaptive-layout:1.3.0-alpha05
29+
androidx.compose.material3.adaptive:adaptive-navigation-android:1.3.0-alpha05
30+
androidx.compose.material3.adaptive:adaptive-navigation3-android:1.3.0-alpha05
31+
androidx.compose.material3.adaptive:adaptive-navigation3:1.3.0-alpha05
32+
androidx.compose.material3.adaptive:adaptive-navigation:1.3.0-alpha05
33+
androidx.compose.material3.adaptive:adaptive:1.3.0-alpha05
2834
androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.1
2935
androidx.compose.material3:material3-adaptive-navigation-suite:1.3.1
3036
androidx.compose.material3:material3-android:1.3.1
@@ -37,30 +43,34 @@ androidx.compose.material:material-icons-extended:1.7.8
3743
androidx.compose.material:material-ripple-android:1.7.8
3844
androidx.compose.material:material-ripple:1.7.8
3945
androidx.compose.material:material:1.7.8
40-
androidx.compose.runtime:runtime-android:1.8.2
41-
androidx.compose.runtime:runtime-saveable-android:1.8.2
42-
androidx.compose.runtime:runtime-saveable:1.8.2
43-
androidx.compose.runtime:runtime:1.8.2
44-
androidx.compose.ui:ui-android:1.8.2
45-
androidx.compose.ui:ui-geometry-android:1.8.2
46-
androidx.compose.ui:ui-geometry:1.8.2
47-
androidx.compose.ui:ui-graphics-android:1.8.2
48-
androidx.compose.ui:ui-graphics:1.8.2
49-
androidx.compose.ui:ui-text-android:1.8.2
50-
androidx.compose.ui:ui-text:1.8.2
51-
androidx.compose.ui:ui-tooling-preview-android:1.8.2
52-
androidx.compose.ui:ui-tooling-preview:1.8.2
53-
androidx.compose.ui:ui-unit-android:1.8.2
54-
androidx.compose.ui:ui-unit:1.8.2
55-
androidx.compose.ui:ui-util-android:1.8.2
56-
androidx.compose.ui:ui-util:1.8.2
57-
androidx.compose.ui:ui:1.8.2
46+
androidx.compose.runtime:runtime-android:1.10.0-beta02
47+
androidx.compose.runtime:runtime-annotation-android:1.10.0-beta02
48+
androidx.compose.runtime:runtime-annotation:1.10.0-beta02
49+
androidx.compose.runtime:runtime-retain-android:1.10.0-beta02
50+
androidx.compose.runtime:runtime-retain:1.10.0-beta02
51+
androidx.compose.runtime:runtime-saveable-android:1.10.0-beta02
52+
androidx.compose.runtime:runtime-saveable:1.10.0-beta02
53+
androidx.compose.runtime:runtime:1.10.0-beta02
54+
androidx.compose.ui:ui-android:1.10.0-beta02
55+
androidx.compose.ui:ui-geometry-android:1.10.0-beta02
56+
androidx.compose.ui:ui-geometry:1.10.0-beta02
57+
androidx.compose.ui:ui-graphics-android:1.10.0-beta02
58+
androidx.compose.ui:ui-graphics:1.10.0-beta02
59+
androidx.compose.ui:ui-text-android:1.10.0-beta02
60+
androidx.compose.ui:ui-text:1.10.0-beta02
61+
androidx.compose.ui:ui-tooling-preview-android:1.10.0-beta02
62+
androidx.compose.ui:ui-tooling-preview:1.10.0-beta02
63+
androidx.compose.ui:ui-unit-android:1.10.0-beta02
64+
androidx.compose.ui:ui-unit:1.10.0-beta02
65+
androidx.compose.ui:ui-util-android:1.10.0-beta02
66+
androidx.compose.ui:ui-util:1.10.0-beta02
67+
androidx.compose.ui:ui:1.10.0-beta02
5868
androidx.compose:compose-bom:2025.02.00
5969
androidx.concurrent:concurrent-futures-ktx:1.1.0
6070
androidx.concurrent:concurrent-futures:1.1.0
61-
androidx.core:core-ktx:1.16.0-alpha02
71+
androidx.core:core-ktx:1.17.0
6272
androidx.core:core-viewtree:1.0.0
63-
androidx.core:core:1.16.0-alpha02
73+
androidx.core:core:1.17.0
6474
androidx.cursoradapter:cursoradapter:1.0.0
6575
androidx.customview:customview-poolingcontainer:1.0.0
6676
androidx.customview:customview:1.0.0
@@ -76,7 +86,9 @@ androidx.datastore:datastore-preferences-external-protobuf:1.1.3
7686
androidx.datastore:datastore-preferences-proto:1.1.3
7787
androidx.datastore:datastore-preferences:1.1.3
7888
androidx.datastore:datastore:1.1.3
89+
androidx.documentfile:documentfile:1.0.0
7990
androidx.drawerlayout:drawerlayout:1.0.0
91+
androidx.dynamicanimation:dynamicanimation:1.0.0
8092
androidx.emoji2:emoji2-views-helper:1.4.0
8193
androidx.emoji2:emoji2:1.4.0
8294
androidx.exifinterface:exifinterface:1.3.7
@@ -85,63 +97,70 @@ androidx.graphics:graphics-path:1.0.1
8597
androidx.hilt:hilt-common:1.3.0
8698
androidx.hilt:hilt-lifecycle-viewmodel-compose:1.3.0
8799
androidx.hilt:hilt-lifecycle-viewmodel:1.3.0
88-
androidx.hilt:hilt-navigation-compose:1.3.0
89100
androidx.hilt:hilt-work:1.3.0
90101
androidx.interpolator:interpolator:1.0.0
91-
androidx.lifecycle:lifecycle-common-java8:2.9.1
92-
androidx.lifecycle:lifecycle-common-jvm:2.9.1
93-
androidx.lifecycle:lifecycle-common:2.9.1
94-
androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.1
95-
androidx.lifecycle:lifecycle-livedata-core:2.9.1
96-
androidx.lifecycle:lifecycle-livedata:2.9.1
97-
androidx.lifecycle:lifecycle-process:2.9.1
98-
androidx.lifecycle:lifecycle-runtime-android:2.9.1
99-
androidx.lifecycle:lifecycle-runtime-compose-android:2.9.1
100-
androidx.lifecycle:lifecycle-runtime-compose:2.9.1
101-
androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.1
102-
androidx.lifecycle:lifecycle-runtime-ktx:2.9.1
103-
androidx.lifecycle:lifecycle-runtime:2.9.1
104-
androidx.lifecycle:lifecycle-service:2.9.1
105-
androidx.lifecycle:lifecycle-viewmodel-android:2.9.1
106-
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.1
107-
androidx.lifecycle:lifecycle-viewmodel-compose:2.9.1
108-
androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.1
109-
androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.1
110-
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.1
111-
androidx.lifecycle:lifecycle-viewmodel:2.9.1
102+
androidx.legacy:legacy-support-core-utils:1.0.0
103+
androidx.lifecycle:lifecycle-common-java8:2.10.0
104+
androidx.lifecycle:lifecycle-common-jvm:2.10.0
105+
androidx.lifecycle:lifecycle-common:2.10.0
106+
androidx.lifecycle:lifecycle-livedata-core-ktx:2.10.0
107+
androidx.lifecycle:lifecycle-livedata-core:2.10.0
108+
androidx.lifecycle:lifecycle-livedata:2.10.0
109+
androidx.lifecycle:lifecycle-process:2.10.0
110+
androidx.lifecycle:lifecycle-runtime-android:2.10.0
111+
androidx.lifecycle:lifecycle-runtime-compose-android:2.10.0
112+
androidx.lifecycle:lifecycle-runtime-compose:2.10.0
113+
androidx.lifecycle:lifecycle-runtime-ktx-android:2.10.0
114+
androidx.lifecycle:lifecycle-runtime-ktx:2.10.0
115+
androidx.lifecycle:lifecycle-runtime:2.10.0
116+
androidx.lifecycle:lifecycle-service:2.10.0
117+
androidx.lifecycle:lifecycle-viewmodel-android:2.10.0
118+
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.10.0
119+
androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0
120+
androidx.lifecycle:lifecycle-viewmodel-ktx:2.10.0
121+
androidx.lifecycle:lifecycle-viewmodel-navigation3-android:2.10.0
122+
androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0
123+
androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.10.0
124+
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.10.0
125+
androidx.lifecycle:lifecycle-viewmodel:2.10.0
112126
androidx.loader:loader:1.0.0
113-
androidx.navigation:navigation-common-android:2.9.6
114-
androidx.navigation:navigation-common:2.9.6
115-
androidx.navigation:navigation-compose-android:2.9.6
116-
androidx.navigation:navigation-compose:2.9.6
117-
androidx.navigation:navigation-runtime-android:2.9.6
118-
androidx.navigation:navigation-runtime:2.9.6
127+
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
128+
androidx.navigation3:navigation3-runtime-android:1.0.0
129+
androidx.navigation3:navigation3-runtime:1.0.0
130+
androidx.navigation3:navigation3-ui-android:1.0.0
131+
androidx.navigation3:navigation3-ui:1.0.0
132+
androidx.navigationevent:navigationevent-android:1.0.1
133+
androidx.navigationevent:navigationevent-compose-android:1.0.1
134+
androidx.navigationevent:navigationevent-compose:1.0.1
135+
androidx.navigationevent:navigationevent:1.0.1
136+
androidx.print:print:1.0.0
119137
androidx.profileinstaller:profileinstaller:1.4.1
120138
androidx.resourceinspection:resourceinspection-annotation:1.0.1
121139
androidx.room:room-common-jvm:2.7.0-rc01
122140
androidx.room:room-common:2.7.0-rc01
123141
androidx.room:room-ktx:2.7.0-rc01
124142
androidx.room:room-runtime-android:2.7.0-rc01
125143
androidx.room:room-runtime:2.7.0-rc01
126-
androidx.savedstate:savedstate-android:1.3.0
127-
androidx.savedstate:savedstate-compose-android:1.3.0
128-
androidx.savedstate:savedstate-compose:1.3.0
129-
androidx.savedstate:savedstate-ktx:1.3.0
130-
androidx.savedstate:savedstate:1.3.0
144+
androidx.savedstate:savedstate-android:1.4.0
145+
androidx.savedstate:savedstate-compose-android:1.4.0
146+
androidx.savedstate:savedstate-compose:1.4.0
147+
androidx.savedstate:savedstate-ktx:1.4.0
148+
androidx.savedstate:savedstate:1.4.0
131149
androidx.sqlite:sqlite-android:2.5.0-rc01
132150
androidx.sqlite:sqlite-framework-android:2.5.0-rc01
133151
androidx.sqlite:sqlite-framework:2.5.0-rc01
134152
androidx.sqlite:sqlite:2.5.0-rc01
135153
androidx.startup:startup-runtime:1.2.0
136154
androidx.tracing:tracing-ktx:1.2.0
137155
androidx.tracing:tracing:1.2.0
156+
androidx.transition:transition:1.6.0
138157
androidx.vectordrawable:vectordrawable-animated:1.1.0
139158
androidx.vectordrawable:vectordrawable:1.1.0
140159
androidx.versionedparcelable:versionedparcelable:1.1.1
141160
androidx.viewpager:viewpager:1.0.0
142-
androidx.window:window-core-android:1.4.0-beta02
143-
androidx.window:window-core:1.4.0-beta02
144-
androidx.window:window:1.4.0-beta02
161+
androidx.window:window-core-android:1.5.0
162+
androidx.window:window-core:1.5.0
163+
androidx.window:window:1.5.0
145164
androidx.work:work-runtime:2.10.0
146165
com.google.accompanist:accompanist-drawablepainter:0.36.0
147166
com.google.code.findbugs:jsr305:3.0.2
@@ -174,18 +193,20 @@ io.github.fornewid:material-motion-compose-core:1.1.3
174193
io.github.fornewid:photo-compose:1.0.1
175194
jakarta.inject:jakarta.inject-api:2.0.1
176195
javax.inject:javax.inject:1
177-
org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4
178-
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4
179-
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4
180-
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4
196+
org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.5
197+
org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.5
198+
org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.5
199+
org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.5
200+
org.jetbrains.androidx.savedstate:savedstate-compose:1.3.5
201+
org.jetbrains.androidx.savedstate:savedstate:1.3.5
181202
org.jetbrains.compose.animation:animation-core:1.7.3
182203
org.jetbrains.compose.animation:animation:1.7.3
183204
org.jetbrains.compose.annotation-internal:annotation:1.7.3
184205
org.jetbrains.compose.collection-internal:collection:1.7.3
185206
org.jetbrains.compose.foundation:foundation-layout:1.7.3
186207
org.jetbrains.compose.foundation:foundation:1.7.3
187-
org.jetbrains.compose.runtime:runtime-saveable:1.7.3
188-
org.jetbrains.compose.runtime:runtime:1.7.3
208+
org.jetbrains.compose.runtime:runtime-saveable:1.9.2
209+
org.jetbrains.compose.runtime:runtime:1.9.2
189210
org.jetbrains.compose.ui:ui-geometry:1.7.3
190211
org.jetbrains.compose.ui:ui-graphics:1.7.3
191212
org.jetbrains.compose.ui:ui-text:1.7.3
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* Copyright 2025 SOUP
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package soup.movie.di
17+
18+
import dagger.Binds
19+
import dagger.Module
20+
import dagger.hilt.InstallIn
21+
import dagger.hilt.android.components.ActivityRetainedComponent
22+
import soup.movie.feature.navigator.Navigator
23+
import soup.movie.ui.main.NavigatorImpl
24+
25+
@Module
26+
@InstallIn(ActivityRetainedComponent::class)
27+
interface AppModule {
28+
29+
@Binds
30+
fun bindsNavigator(
31+
impl: NavigatorImpl,
32+
): Navigator
33+
}

β€Žapp/src/main/java/soup/movie/di/ApplicationModule.ktβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import soup.movie.feature.navigator.MainNavigator
2626
interface ApplicationModule {
2727

2828
@Binds
29-
fun provideMainNavigator(
29+
fun bindsMainNavigator(
3030
impl: MainNavigatorImpl,
3131
): MainNavigator
3232
}

0 commit comments

Comments
Β (0)