Skip to content

Commit 23e618b

Browse files
committed
Fix search page and remove shared transition scope.
1 parent 659d508 commit 23e618b

12 files changed

Lines changed: 1133 additions & 952 deletions

File tree

app/shared/src/commonMain/kotlin/ui/main/AniAppContent.kt

Lines changed: 111 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ package me.him188.ani.app.ui.main
1212
import androidx.compose.animation.AnimatedContentTransitionScope
1313
import androidx.compose.animation.EnterTransition
1414
import androidx.compose.animation.ExitTransition
15-
import androidx.compose.animation.SharedTransitionLayout
1615
import androidx.compose.foundation.background
1716
import androidx.compose.foundation.layout.Box
1817
import androidx.compose.foundation.layout.Row
@@ -72,8 +71,6 @@ import me.him188.ani.app.ui.exploration.schedule.ScheduleScreen
7271
import me.him188.ani.app.ui.exploration.schedule.ScheduleViewModel
7372
import me.him188.ani.app.ui.foundation.animation.NavigationMotionScheme
7473
import me.him188.ani.app.ui.foundation.animation.ProvideAniMotionCompositionLocals
75-
import me.him188.ani.app.ui.foundation.layout.LocalSharedTransitionScopeProvider
76-
import me.him188.ani.app.ui.foundation.layout.SharedTransitionScopeProvider
7774
import me.him188.ani.app.ui.foundation.layout.currentWindowAdaptiveInfo1
7875
import me.him188.ani.app.ui.foundation.layout.desktopTitleBar
7976
import me.him188.ani.app.ui.foundation.widgets.BackNavigationIconButton
@@ -149,77 +146,76 @@ private fun AniAppContentImpl(
149146
val navMotionScheme by rememberUpdatedState(NavigationMotionScheme.current)
150147
val emailLoginViewModel = viewModel<EmailLoginViewModel> { EmailLoginViewModel() }
151148

152-
SharedTransitionLayout {
153-
NavHost(navController, startDestination = initialRoute, modifier) {
154-
val enterTransition: AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition? =
155-
{ navMotionScheme.enterTransition }
156-
val exitTransition: AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition? =
157-
{ navMotionScheme.exitTransition }
158-
val popEnterTransition: AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition? =
159-
{ navMotionScheme.popEnterTransition }
160-
val popExitTransition: AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition? =
161-
{ navMotionScheme.popExitTransition }
149+
NavHost(navController, startDestination = initialRoute, modifier) {
150+
val enterTransition: AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition? =
151+
{ navMotionScheme.enterTransition }
152+
val exitTransition: AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition? =
153+
{ navMotionScheme.exitTransition }
154+
val popEnterTransition: AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition? =
155+
{ navMotionScheme.popEnterTransition }
156+
val popExitTransition: AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition? =
157+
{ navMotionScheme.popExitTransition }
162158

163-
composable<NavRoutes.Welcome>(
164-
enterTransition = enterTransition,
165-
exitTransition = exitTransition,
166-
popEnterTransition = popEnterTransition,
167-
popExitTransition = popExitTransition,
168-
) {
169-
WelcomeScreen(
170-
onClickContinue = {
171-
// 从 WelcomeScreen 进入 onboarding, 最后 navigateMain 要 popupTo Welcome
172-
aniNavigator.navigateOnboarding(NavRoutes.Welcome)
173-
},
174-
contactActions = { AniContactList() },
175-
Modifier.fillMaxSize(),
176-
windowInsets,
177-
)
178-
}
179-
composable<NavRoutes.EmailLoginStart>(
180-
enterTransition = enterTransition,
181-
exitTransition = exitTransition,
182-
popEnterTransition = popEnterTransition,
183-
popExitTransition = popExitTransition,
184-
) {
185-
EmailLoginStartScreen(
186-
onOtpSent = {
187-
aniNavigator.navigateEmailLoginVerify()
188-
},
189-
onBangumiLoginClick = {
190-
aniNavigator.navigateBangumiAuthorize()
191-
},
192-
onNavigateSettings = {
193-
aniNavigator.navigateSettings()
194-
},
195-
onNavigateBack = {
196-
aniNavigator.popBackStack(NavRoutes.EmailLoginStart, true)
197-
},
198-
vm = emailLoginViewModel,
199-
)
200-
}
201-
composable<NavRoutes.EmailLoginVerify>(
202-
enterTransition = enterTransition,
203-
exitTransition = exitTransition,
204-
popEnterTransition = popEnterTransition,
205-
popExitTransition = popExitTransition,
206-
) {
207-
EmailLoginVerifyScreen(
208-
onSuccess = {
209-
aniNavigator.popBackOrNavigateToMain(mainSceneInitialPage)
210-
},
211-
onBangumiLoginClick = {
212-
aniNavigator.navigateBangumiAuthorize()
213-
},
214-
onNavigateSettings = {
215-
aniNavigator.navigateSettings()
216-
},
217-
onNavigateBack = {
218-
aniNavigator.popBackStack(NavRoutes.EmailLoginVerify, true)
219-
},
220-
vm = emailLoginViewModel,
221-
)
222-
}
159+
composable<NavRoutes.Welcome>(
160+
enterTransition = enterTransition,
161+
exitTransition = exitTransition,
162+
popEnterTransition = popEnterTransition,
163+
popExitTransition = popExitTransition,
164+
) {
165+
WelcomeScreen(
166+
onClickContinue = {
167+
// 从 WelcomeScreen 进入 onboarding, 最后 navigateMain 要 popupTo Welcome
168+
aniNavigator.navigateOnboarding(NavRoutes.Welcome)
169+
},
170+
contactActions = { AniContactList() },
171+
Modifier.fillMaxSize(),
172+
windowInsets,
173+
)
174+
}
175+
composable<NavRoutes.EmailLoginStart>(
176+
enterTransition = enterTransition,
177+
exitTransition = exitTransition,
178+
popEnterTransition = popEnterTransition,
179+
popExitTransition = popExitTransition,
180+
) {
181+
EmailLoginStartScreen(
182+
onOtpSent = {
183+
aniNavigator.navigateEmailLoginVerify()
184+
},
185+
onBangumiLoginClick = {
186+
aniNavigator.navigateBangumiAuthorize()
187+
},
188+
onNavigateSettings = {
189+
aniNavigator.navigateSettings()
190+
},
191+
onNavigateBack = {
192+
aniNavigator.popBackStack(NavRoutes.EmailLoginStart, true)
193+
},
194+
vm = emailLoginViewModel,
195+
)
196+
}
197+
composable<NavRoutes.EmailLoginVerify>(
198+
enterTransition = enterTransition,
199+
exitTransition = exitTransition,
200+
popEnterTransition = popEnterTransition,
201+
popExitTransition = popExitTransition,
202+
) {
203+
EmailLoginVerifyScreen(
204+
onSuccess = {
205+
aniNavigator.popBackOrNavigateToMain(mainSceneInitialPage)
206+
},
207+
onBangumiLoginClick = {
208+
aniNavigator.navigateBangumiAuthorize()
209+
},
210+
onNavigateSettings = {
211+
aniNavigator.navigateSettings()
212+
},
213+
onNavigateBack = {
214+
aniNavigator.popBackStack(NavRoutes.EmailLoginVerify, true)
215+
},
216+
vm = emailLoginViewModel,
217+
)
218+
}
223219
composable<NavRoutes.BangumiAuthorize>(
224220
enterTransition = enterTransition,
225221
exitTransition = exitTransition,
@@ -332,21 +328,21 @@ private fun AniAppContentImpl(
332328
}
333329
},
334330
) {
335-
CompositionLocalProvider(
331+
/*CompositionLocalProvider(
336332
LocalSharedTransitionScopeProvider provides SharedTransitionScopeProvider(
337333
this@SharedTransitionLayout, this,
338334
),
339-
) {
340-
val selfInfo by vm.selfInfo.collectAsState() // not -WithLifecycle
341-
MainScreen(
342-
page = currentPage,
343-
selfInfo = selfInfo,
344-
onNavigateToPage = { currentPage = it },
345-
onNavigateToSettings = { aniNavigator.navigateSettings(it) },
346-
onNavigateToSearch = { aniNavigator.navigateSubjectSearch() },
347-
navigationLayoutType = navigationLayoutType,
348-
)
349-
}
335+
) {*/
336+
val selfInfo by vm.selfInfo.collectAsState() // not -WithLifecycle
337+
MainScreen(
338+
page = currentPage,
339+
selfInfo = selfInfo,
340+
onNavigateToPage = { currentPage = it },
341+
onNavigateToSettings = { aniNavigator.navigateSettings(it) },
342+
onNavigateToSearch = { aniNavigator.navigateSubjectSearch() },
343+
navigationLayoutType = navigationLayoutType,
344+
)
345+
// }
350346
}
351347
}
352348
composable<NavRoutes.SubjectSearch>(
@@ -364,6 +360,9 @@ private fun AniAppContentImpl(
364360
onNavigateBack = {
365361
aniNavigator.popBackStack()
366362
},
363+
onNavigateToSubjectDetails = { subjectId, placeholder ->
364+
navigator.navigateSubjectDetails(subjectId, placeholder)
365+
},
367366
onNavigateToEpisodeDetails = { subjectId, episodeId ->
368367
navigator.navigateEpisodeDetails(subjectId, episodeId)
369368
},
@@ -386,38 +385,38 @@ private fun AniAppContentImpl(
386385
}
387386
SubjectDetailsViewModel(details.subjectId, placeholder)
388387
}
389-
CompositionLocalProvider(
388+
/*CompositionLocalProvider(
390389
LocalSharedTransitionScopeProvider provides SharedTransitionScopeProvider(
391390
this@SharedTransitionLayout, this,
392391
),
393-
) {
394-
SubjectDetailsScreen(
395-
vm,
396-
onPlay = { aniNavigator.navigateEpisodeDetails(details.subjectId, it) },
397-
onLoadErrorRetry = { vm.reload() },
398-
onClickTag = { aniNavigator.navigateSubjectSearch(NavRoutes.SubjectSearch(tags = listOf(it.name))) },
399-
windowInsets = windowInsets,
400-
navigationIcon = {
401-
Row {
402-
BackNavigationIconButton(
403-
{
404-
aniNavigator.popBackStack(details, inclusive = true)
405-
},
392+
) {*/
393+
SubjectDetailsScreen(
394+
vm,
395+
onPlay = { aniNavigator.navigateEpisodeDetails(details.subjectId, it) },
396+
onLoadErrorRetry = { vm.reload() },
397+
onClickTag = { aniNavigator.navigateSubjectSearch(NavRoutes.SubjectSearch(tags = listOf(it.name))) },
398+
windowInsets = windowInsets,
399+
navigationIcon = {
400+
Row {
401+
BackNavigationIconButton(
402+
{
403+
aniNavigator.popBackStack(details, inclusive = true)
404+
},
405+
)
406+
TopAppBarActionButton(
407+
{
408+
aniNavigator.popBackOrNavigateToMain(mainSceneInitialPage)
409+
},
410+
) {
411+
Icon(
412+
Icons.Rounded.Home,
413+
contentDescription = null,
406414
)
407-
TopAppBarActionButton(
408-
{
409-
aniNavigator.popBackOrNavigateToMain(mainSceneInitialPage)
410-
},
411-
) {
412-
Icon(
413-
Icons.Rounded.Home,
414-
contentDescription = null,
415-
)
416-
}
417415
}
418-
},
419-
)
420-
}
416+
}
417+
},
418+
)
419+
// }
421420
}
422421
composable<NavRoutes.EpisodeDetail>(
423422
enterTransition = enterTransition,
@@ -647,7 +646,6 @@ private fun AniAppContentImpl(
647646
navController.navigate(initialRoute)
648647
}
649648
}
650-
}
651649
}
652650
}
653651

0 commit comments

Comments
 (0)