mirror of
https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy.git
synced 2025-02-09 12:48:42 +01:00
fix: navigation issues
This commit is contained in:
parent
58a65a4b8d
commit
a661016e34
@ -5,6 +5,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.Co
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createcomment.CreateCommentViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createpost.CreatePostViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.instanceinfo.InstanceInfoViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation.NavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.postdetail.PostDetailViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDetailViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.comments.UserCommentsViewModel
|
||||
@ -15,6 +16,12 @@ import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||
import org.koin.core.parameter.parametersOf
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
|
||||
actual fun getNavigationCoordinator(): NavigationCoordinator {
|
||||
val res: NavigationCoordinator by inject(NavigationCoordinator::class.java)
|
||||
return res
|
||||
}
|
||||
|
||||
|
||||
actual fun getPostDetailViewModel(post: PostModel): PostDetailViewModel {
|
||||
val res: PostDetailViewModel by inject(
|
||||
clazz = PostDetailViewModel::class.java,
|
||||
|
@ -9,6 +9,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createcomment.Crea
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createpost.CreatePostViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.instanceinfo.InstanceInfoMviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.instanceinfo.InstanceInfoViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation.DefaultNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation.NavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.postdetail.PostDetailMviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.postdetail.PostDetailViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDetailMviModel
|
||||
@ -20,6 +22,9 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.posts.U
|
||||
import org.koin.dsl.module
|
||||
|
||||
val commonUiModule = module {
|
||||
single<NavigationCoordinator> {
|
||||
DefaultNavigationCoordinator()
|
||||
}
|
||||
factory { params ->
|
||||
PostDetailViewModel(
|
||||
mvi = DefaultMviModel(PostDetailMviModel.UiState()),
|
||||
|
@ -5,6 +5,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.Co
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createcomment.CreateCommentViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createpost.CreatePostViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.instanceinfo.InstanceInfoViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation.NavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.postdetail.PostDetailViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDetailViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.comments.UserCommentsViewModel
|
||||
@ -13,6 +14,8 @@ import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||
|
||||
expect fun getNavigationCoordinator(): NavigationCoordinator
|
||||
|
||||
expect fun getPostDetailViewModel(
|
||||
post: PostModel,
|
||||
): PostDetailViewModel
|
||||
|
@ -0,0 +1,22 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation
|
||||
|
||||
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
|
||||
internal class DefaultNavigationCoordinator : NavigationCoordinator {
|
||||
|
||||
private var connection: NestedScrollConnection? = null
|
||||
private var navigator: Navigator? = null
|
||||
|
||||
override fun setRootNavigator(value: Navigator?) {
|
||||
navigator = value
|
||||
}
|
||||
|
||||
override fun getRootNavigator(): Navigator? = navigator
|
||||
|
||||
override fun setBottomBarScrollConnection(value: NestedScrollConnection?) {
|
||||
connection = value
|
||||
}
|
||||
|
||||
override fun getBottomBarScrollConnection() = connection
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation
|
||||
|
||||
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
|
||||
interface NavigationCoordinator {
|
||||
|
||||
fun setRootNavigator(value: Navigator?)
|
||||
|
||||
fun getRootNavigator(): Navigator?
|
||||
fun setBottomBarScrollConnection(value: NestedScrollConnection?)
|
||||
|
||||
fun getBottomBarScrollConnection(): NestedScrollConnection?
|
||||
}
|
@ -24,6 +24,7 @@ import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import cafe.adriel.voyager.navigator.bottomSheet.LocalBottomSheetNavigator
|
||||
import com.github.diegoberaldin.racconforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
@ -110,7 +111,7 @@ class UserDetailScreen(
|
||||
verticalArrangement = Arrangement.spacedBy(Spacing.s),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
) {
|
||||
when (uiState.currentTab) {
|
||||
val screen = when (uiState.currentTab) {
|
||||
UserDetailSection.POSTS -> {
|
||||
UserDetailPostsScreen(
|
||||
modifier = Modifier.weight(1f).fillMaxWidth(),
|
||||
@ -120,7 +121,7 @@ class UserDetailScreen(
|
||||
onSectionSelected = {
|
||||
model.reduce(UserDetailMviModel.Intent.SelectTab(it))
|
||||
}
|
||||
}.Content()
|
||||
}
|
||||
}
|
||||
|
||||
UserDetailSection.COMMENTS -> {
|
||||
@ -132,9 +133,10 @@ class UserDetailScreen(
|
||||
onSectionSelected = {
|
||||
model.reduce(UserDetailMviModel.Intent.SelectTab(it))
|
||||
}
|
||||
}.Content()
|
||||
}
|
||||
}
|
||||
}
|
||||
Navigator(screen)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.Co
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createcomment.CreateCommentViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createpost.CreatePostViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.instanceinfo.InstanceInfoViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation.NavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.postdetail.PostDetailViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDetailViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.comments.UserCommentsViewModel
|
||||
@ -16,6 +17,8 @@ import org.koin.core.component.KoinComponent
|
||||
import org.koin.core.component.inject
|
||||
import org.koin.core.parameter.parametersOf
|
||||
|
||||
actual fun getNavigationCoordinator() = CommonUiViewModelHelper.navigationCoordinator
|
||||
|
||||
actual fun getPostDetailViewModel(post: PostModel): PostDetailViewModel =
|
||||
CommonUiViewModelHelper.getPostDetailModel(post)
|
||||
|
||||
@ -48,6 +51,8 @@ actual fun getCreatePostViewModel(communityId: Int): CreatePostViewModel =
|
||||
|
||||
object CommonUiViewModelHelper : KoinComponent {
|
||||
|
||||
val navigationCoordinator: NavigationCoordinator by inject()
|
||||
|
||||
fun getPostDetailModel(post: PostModel): PostDetailViewModel {
|
||||
val model: PostDetailViewModel by inject(
|
||||
parameters = { parametersOf(post) },
|
||||
|
@ -1,15 +1,10 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.feature.home.di
|
||||
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.BottomNavBarCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation.NavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.PostListViewModel
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
|
||||
actual fun getHomeScreenModel(): PostListViewModel {
|
||||
val res: PostListViewModel by inject(PostListViewModel::class.java)
|
||||
return res
|
||||
}
|
||||
|
||||
actual fun getBottomNavCoordinator(): BottomNavBarCoordinator {
|
||||
val res: BottomNavBarCoordinator by inject(BottomNavBarCoordinator::class.java)
|
||||
return res
|
||||
}
|
||||
}
|
@ -3,8 +3,6 @@ package com.github.diegoberaldin.raccoonforlemmy.feature.home.di
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.DefaultMviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.commonUiModule
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.di.repositoryModule
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.BottomNavBarCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.DefaultBottomNavCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.PostListMviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.PostListViewModel
|
||||
import org.koin.dsl.module
|
||||
@ -25,7 +23,4 @@ val homeTabModule = module {
|
||||
hapticFeedback = get(),
|
||||
)
|
||||
}
|
||||
single<BottomNavBarCoordinator> {
|
||||
DefaultBottomNavCoordinator()
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.feature.home.di
|
||||
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.BottomNavBarCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation.NavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.PostListViewModel
|
||||
|
||||
expect fun getHomeScreenModel(): PostListViewModel
|
||||
|
||||
expect fun getBottomNavCoordinator(): BottomNavBarCoordinator
|
@ -1,9 +0,0 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist
|
||||
|
||||
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
||||
|
||||
interface BottomNavBarCoordinator {
|
||||
fun setConnection(value: NestedScrollConnection?)
|
||||
|
||||
fun getConnection(): NestedScrollConnection?
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist
|
||||
|
||||
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
||||
|
||||
internal class DefaultBottomNavCoordinator : BottomNavBarCoordinator {
|
||||
private var connection: NestedScrollConnection? = null
|
||||
|
||||
override fun setConnection(value: NestedScrollConnection?) {
|
||||
connection = value
|
||||
}
|
||||
|
||||
override fun getConnection() = connection
|
||||
}
|
@ -30,6 +30,7 @@ import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
@ -37,7 +38,6 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.compose.ui.unit.dp
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.bottomSheet.LocalBottomSheetNavigator
|
||||
import com.github.diegoberaldin.racconforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
@ -46,11 +46,11 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.Co
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.PostCard
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.SwipeableCard
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createcomment.CreateCommentScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.ListingTypeBottomSheet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.SortBottomSheet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.postdetail.PostDetailScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDetailScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.di.getBottomNavCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.di.getHomeScreenModel
|
||||
|
||||
class PostListScreen : Screen {
|
||||
@ -62,9 +62,9 @@ class PostListScreen : Screen {
|
||||
model.bindToLifecycle(key)
|
||||
val uiState by model.uiState.collectAsState()
|
||||
val bottomSheetNavigator = LocalBottomSheetNavigator.current
|
||||
val navigator = LocalNavigator.current?.parent ?: throw Exception("Navigator not found")
|
||||
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
|
||||
val bottomNavCoordinator = getBottomNavCoordinator()
|
||||
val bottomNavCoordinator = remember { getNavigationCoordinator() }
|
||||
val navigator = remember { getNavigationCoordinator().getRootNavigator() }
|
||||
|
||||
Scaffold(
|
||||
modifier = Modifier.padding(Spacing.xxs),
|
||||
@ -107,16 +107,13 @@ class PostListScreen : Screen {
|
||||
model.reduce(PostListMviModel.Intent.Refresh)
|
||||
})
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.padding(padding)
|
||||
.nestedScroll(scrollBehavior.nestedScrollConnection)
|
||||
.let {
|
||||
val connection = bottomNavCoordinator.getConnection()
|
||||
modifier = Modifier.padding(padding)
|
||||
.nestedScroll(scrollBehavior.nestedScrollConnection).let {
|
||||
val connection = bottomNavCoordinator.getBottomBarScrollConnection()
|
||||
if (connection != null) {
|
||||
it.nestedScroll(connection)
|
||||
} else it
|
||||
}
|
||||
.pullRefresh(pullRefreshState),
|
||||
}.pullRefresh(pullRefreshState),
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -183,22 +180,21 @@ class PostListScreen : Screen {
|
||||
)
|
||||
},
|
||||
content = {
|
||||
PostCard(
|
||||
modifier = Modifier.onClick {
|
||||
navigator.push(
|
||||
PostDetailScreen(
|
||||
post = post,
|
||||
).apply {
|
||||
onBack = {
|
||||
navigator.pop()
|
||||
}
|
||||
},
|
||||
)
|
||||
},
|
||||
PostCard(modifier = Modifier.onClick {
|
||||
navigator?.push(
|
||||
PostDetailScreen(
|
||||
post = post,
|
||||
).apply {
|
||||
onBack = {
|
||||
navigator.pop()
|
||||
}
|
||||
},
|
||||
)
|
||||
},
|
||||
post = post,
|
||||
blurNsfw = uiState.blurNsfw,
|
||||
onOpenCommunity = { community ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
CommunityDetailScreen(
|
||||
community = community,
|
||||
).apply {
|
||||
@ -209,7 +205,7 @@ class PostListScreen : Screen {
|
||||
)
|
||||
},
|
||||
onOpenCreator = { user ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
UserDetailScreen(
|
||||
user = user,
|
||||
).apply {
|
||||
@ -245,16 +241,13 @@ class PostListScreen : Screen {
|
||||
},
|
||||
onReply = {
|
||||
bottomSheetNavigator.show(
|
||||
CreateCommentScreen(
|
||||
originalPost = post,
|
||||
CreateCommentScreen(originalPost = post,
|
||||
onCommentCreated = {
|
||||
bottomSheetNavigator.hide()
|
||||
model.reduce(PostListMviModel.Intent.Refresh)
|
||||
}
|
||||
)
|
||||
})
|
||||
)
|
||||
}
|
||||
)
|
||||
})
|
||||
},
|
||||
)
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.graphics.vector.rememberVectorPainter
|
||||
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import cafe.adriel.voyager.navigator.tab.Tab
|
||||
import cafe.adriel.voyager.navigator.tab.TabOptions
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.PostListScreen
|
||||
@ -36,6 +37,6 @@ object HomeTab : Tab {
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
PostListScreen().Content()
|
||||
Navigator(PostListScreen())
|
||||
}
|
||||
}
|
||||
|
@ -1,16 +1,12 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.feature.home.di
|
||||
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.BottomNavBarCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.navigation.NavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.postlist.PostListViewModel
|
||||
import org.koin.core.component.KoinComponent
|
||||
import org.koin.core.component.inject
|
||||
|
||||
actual fun getHomeScreenModel() = HomeScreenModelHelper.model
|
||||
|
||||
actual fun getBottomNavCoordinator() = HomeScreenModelHelper.bottomNavBarCoordinator
|
||||
|
||||
|
||||
object HomeScreenModelHelper : KoinComponent {
|
||||
val model: PostListViewModel by inject()
|
||||
val bottomNavBarCoordinator: BottomNavBarCoordinator by inject()
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import cafe.adriel.voyager.navigator.bottomSheet.LocalBottomSheetNavigator
|
||||
import com.github.diegoberaldin.racconforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
@ -132,16 +133,19 @@ class InboxScreen : Screen {
|
||||
model.reduce(InboxMviModel.Intent.ChangeSection(section))
|
||||
},
|
||||
)
|
||||
when (uiState.section) {
|
||||
val screen = when (uiState.section) {
|
||||
InboxSection.REPLIES -> InboxRepliesScreen(
|
||||
parentModel = model,
|
||||
).Content()
|
||||
)
|
||||
|
||||
InboxSection.MENTIONS -> InboxMentionsScreen(
|
||||
parentModel = model,
|
||||
).Content()
|
||||
)
|
||||
|
||||
InboxSection.MESSAGES -> Unit
|
||||
InboxSection.MESSAGES -> null
|
||||
}
|
||||
if (screen != null) {
|
||||
Navigator(screen)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,18 +28,19 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.bindToLifecycle
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.CommunityDetailScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.InboxMentionCard
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.SwipeableCard
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.postdetail.PostDetailScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDetailScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.inbox.di.getInboxMentionsViewModel
|
||||
@ -60,7 +61,7 @@ class InboxMentionsScreen(
|
||||
model.bindToLifecycle(key)
|
||||
val uiState by model.uiState.collectAsState()
|
||||
val parentUiState by parentModel.uiState.collectAsState()
|
||||
val navigator = LocalNavigator.current?.parent ?: throw Exception("Navigator not found")
|
||||
val navigator = remember { getNavigationCoordinator().getRootNavigator() }
|
||||
|
||||
LaunchedEffect(parentModel) {
|
||||
parentModel.uiState.map { it.unreadOnly }.distinctUntilChanged().onEach {
|
||||
@ -151,7 +152,7 @@ class InboxMentionsScreen(
|
||||
InboxMentionCard(
|
||||
mention = mention,
|
||||
onOpenPost = { post ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
PostDetailScreen(
|
||||
post = post,
|
||||
).apply {
|
||||
@ -162,7 +163,7 @@ class InboxMentionsScreen(
|
||||
)
|
||||
},
|
||||
onOpenCreator = { user ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
UserDetailScreen(
|
||||
user = user,
|
||||
).apply {
|
||||
@ -173,7 +174,7 @@ class InboxMentionsScreen(
|
||||
)
|
||||
},
|
||||
onOpenCommunity = { community ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
CommunityDetailScreen(
|
||||
community = community,
|
||||
).apply {
|
||||
|
@ -28,18 +28,19 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.bindToLifecycle
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.CommunityDetailScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.InboxMentionCard
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.SwipeableCard
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.postdetail.PostDetailScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDetailScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.inbox.di.getInboxRepliesViewModel
|
||||
@ -60,7 +61,7 @@ class InboxRepliesScreen(
|
||||
model.bindToLifecycle(key)
|
||||
val uiState by model.uiState.collectAsState()
|
||||
val parentUiState by parentModel.uiState.collectAsState()
|
||||
val navigator = LocalNavigator.current?.parent ?: throw Exception("Navigator not found")
|
||||
val navigator = remember { getNavigationCoordinator().getRootNavigator() }
|
||||
|
||||
LaunchedEffect(parentModel) {
|
||||
parentModel.uiState.map { it.unreadOnly }.distinctUntilChanged().onEach {
|
||||
@ -151,7 +152,7 @@ class InboxRepliesScreen(
|
||||
InboxMentionCard(
|
||||
mention = mention,
|
||||
onOpenPost = { post ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
PostDetailScreen(
|
||||
post = post,
|
||||
).apply {
|
||||
@ -162,7 +163,7 @@ class InboxRepliesScreen(
|
||||
)
|
||||
},
|
||||
onOpenCreator = { user ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
UserDetailScreen(
|
||||
user = user,
|
||||
).apply {
|
||||
@ -173,7 +174,7 @@ class InboxRepliesScreen(
|
||||
)
|
||||
},
|
||||
onOpenCommunity = { community ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
CommunityDetailScreen(
|
||||
community = community,
|
||||
).apply {
|
||||
|
@ -40,6 +40,6 @@ object InboxTab : Tab {
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
InboxScreen().Content()
|
||||
Navigator(InboxScreen())
|
||||
}
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import cafe.adriel.voyager.navigator.bottomSheet.LocalBottomSheetNavigator
|
||||
import com.github.diegoberaldin.racconforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
@ -84,7 +85,7 @@ internal class ProfileContentScreen : Screen {
|
||||
) {
|
||||
if (!uiState.initial) {
|
||||
val user = uiState.currentUser
|
||||
if (user == null) {
|
||||
val screen = if (user == null) {
|
||||
ProfileNotLoggedContent().apply {
|
||||
onLogin = {
|
||||
bottomSheetNavigator.show(
|
||||
@ -95,12 +96,13 @@ internal class ProfileContentScreen : Screen {
|
||||
),
|
||||
)
|
||||
}
|
||||
}.Content()
|
||||
}
|
||||
} else {
|
||||
ProfileLoggedScreen(
|
||||
user = user,
|
||||
).Content()
|
||||
)
|
||||
}
|
||||
Navigator(screen)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,16 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.CurrentScreen
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.bindToLifecycle
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||
@ -19,6 +23,10 @@ import com.github.diegoberaldin.raccoonforlemmy.feature.profile.content.logged.c
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.profile.content.logged.posts.ProfilePostsScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.profile.content.logged.saved.ProfileSavedScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.profile.di.getProfileLoggedViewModel
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
|
||||
internal class ProfileLoggedScreen(
|
||||
private val user: UserModel,
|
||||
@ -33,40 +41,52 @@ internal class ProfileLoggedScreen(
|
||||
) {
|
||||
val model = rememberScreenModel { getProfileLoggedViewModel() }
|
||||
model.bindToLifecycle(key)
|
||||
val uiState by model.uiState.collectAsState()
|
||||
|
||||
when (uiState.currentTab) {
|
||||
ProfileLoggedSection.POSTS -> {
|
||||
ProfilePostsScreen(
|
||||
modifier = Modifier.weight(1f).fillMaxWidth(),
|
||||
user = user,
|
||||
).apply {
|
||||
onSectionSelected = {
|
||||
model.reduce(ProfileLoggedMviModel.Intent.SelectTab(it))
|
||||
}
|
||||
}.Content()
|
||||
}
|
||||
val screens = listOf(
|
||||
ProfilePostsScreen(
|
||||
modifier = Modifier.weight(1f).fillMaxWidth(),
|
||||
user = user,
|
||||
).apply {
|
||||
onSectionSelected = {
|
||||
model.reduce(ProfileLoggedMviModel.Intent.SelectTab(it))
|
||||
}
|
||||
},
|
||||
ProfileCommentsScreen(
|
||||
modifier = Modifier.weight(1f).fillMaxWidth(),
|
||||
user = user,
|
||||
).apply {
|
||||
onSectionSelected = {
|
||||
model.reduce(ProfileLoggedMviModel.Intent.SelectTab(it))
|
||||
}
|
||||
},
|
||||
ProfileSavedScreen(
|
||||
modifier = Modifier.weight(1f).fillMaxWidth(),
|
||||
user = user,
|
||||
).apply {
|
||||
onSectionSelected = {
|
||||
model.reduce(ProfileLoggedMviModel.Intent.SelectTab(it))
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
ProfileLoggedSection.COMMENTS -> {
|
||||
ProfileCommentsScreen(
|
||||
modifier = Modifier.weight(1f).fillMaxWidth(),
|
||||
user = user,
|
||||
).apply {
|
||||
onSectionSelected = {
|
||||
model.reduce(ProfileLoggedMviModel.Intent.SelectTab(it))
|
||||
}
|
||||
}.Content()
|
||||
}
|
||||
Navigator(screens) {
|
||||
CurrentScreen()
|
||||
|
||||
ProfileLoggedSection.SAVED -> {
|
||||
ProfileSavedScreen(
|
||||
modifier = Modifier.weight(1f).fillMaxWidth(),
|
||||
user = user,
|
||||
).apply {
|
||||
onSectionSelected = {
|
||||
model.reduce(ProfileLoggedMviModel.Intent.SelectTab(it))
|
||||
}
|
||||
}.Content()
|
||||
val navigator = LocalNavigator.current
|
||||
LaunchedEffect(model) {
|
||||
model.uiState.map { it.currentTab }
|
||||
.distinctUntilChanged()
|
||||
.onEach {
|
||||
val index = when (it) {
|
||||
ProfileLoggedSection.POSTS -> 0
|
||||
ProfileLoggedSection.COMMENTS -> 1
|
||||
ProfileLoggedSection.SAVED -> 2
|
||||
}
|
||||
navigator?.apply {
|
||||
popUntilRoot()
|
||||
push(screens[index])
|
||||
}
|
||||
}.launchIn(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,13 +20,13 @@ import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.unit.dp
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import com.github.diegoberaldin.racconforlemmy.core.utils.toLocalPixel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.bindToLifecycle
|
||||
@ -34,6 +34,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.Co
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.SectionSelector
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.UserCounters
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.UserHeader
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.profile.content.logged.ProfileLoggedSection
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.profile.di.getProfilePostsViewModel
|
||||
@ -57,7 +58,7 @@ internal class ProfilePostsScreen(
|
||||
}
|
||||
model.bindToLifecycle(key)
|
||||
val uiState by model.uiState.collectAsState()
|
||||
val navigator = LocalNavigator.current?.parent ?: throw Exception("Navigator not found")
|
||||
val navigator = remember { getNavigationCoordinator().getRootNavigator() }
|
||||
|
||||
val pullRefreshState = rememberPullRefreshState(uiState.refreshing, {
|
||||
model.reduce(ProfilePostsMviModel.Intent.Refresh)
|
||||
@ -103,7 +104,7 @@ internal class ProfilePostsScreen(
|
||||
ProfilePostCard(
|
||||
post = post,
|
||||
onOpenCommunity = { community ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
CommunityDetailScreen(
|
||||
community = community,
|
||||
).apply {
|
||||
|
@ -20,13 +20,13 @@ import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.unit.dp
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import com.github.diegoberaldin.racconforlemmy.core.utils.toLocalPixel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.bindToLifecycle
|
||||
@ -34,6 +34,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.Co
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.SectionSelector
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.UserCounters
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.UserHeader
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.profile.content.logged.ProfileLoggedSection
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.profile.content.logged.posts.ProfilePostCard
|
||||
@ -60,7 +61,7 @@ internal class ProfileSavedScreen(
|
||||
}
|
||||
model.bindToLifecycle(key)
|
||||
val uiState by model.uiState.collectAsState()
|
||||
val navigator = LocalNavigator.current?.parent ?: throw Exception("Navigator not found")
|
||||
val navigator = remember { getNavigationCoordinator().getRootNavigator() }
|
||||
|
||||
val pullRefreshState = rememberPullRefreshState(uiState.refreshing, {
|
||||
model.reduce(ProfilePostsMviModel.Intent.Refresh)
|
||||
@ -106,7 +107,7 @@ internal class ProfileSavedScreen(
|
||||
ProfilePostCard(
|
||||
post = post,
|
||||
onOpenCommunity = { community ->
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
CommunityDetailScreen(
|
||||
community = community,
|
||||
).apply {
|
||||
|
@ -32,6 +32,6 @@ object ProfileTab : Tab {
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
ProfileContentScreen().Content()
|
||||
Navigator(ProfileContentScreen())
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ interface CommunityListMviModel :
|
||||
val isLogged: Boolean = false,
|
||||
val instance: String = "",
|
||||
val searchText: String = "",
|
||||
val listingType: ListingType = ListingType.All,
|
||||
val listingType: ListingType = ListingType.Local,
|
||||
val sortType: SortType = SortType.Active,
|
||||
val communities: List<CommunityModel> = emptyList(),
|
||||
)
|
||||
|
@ -41,7 +41,6 @@ import androidx.compose.ui.unit.Density
|
||||
import androidx.compose.ui.unit.dp
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.bottomSheet.LocalBottomSheetNavigator
|
||||
import com.github.diegoberaldin.racconforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.di.getThemeRepository
|
||||
@ -49,6 +48,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.bindToLifecycle
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.communitydetail.CommunityDetailScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.CommunityItem
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.ListingTypeBottomSheet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.SortBottomSheet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.search.di.getSearchScreenModel
|
||||
@ -56,13 +56,14 @@ import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
class CommunityListScreen : Screen {
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = rememberScreenModel { getSearchScreenModel() }
|
||||
model.bindToLifecycle(key)
|
||||
val uiState by model.uiState.collectAsState()
|
||||
val navigator = LocalNavigator.current?.parent ?: throw Exception("Navigator not found")
|
||||
val navigator = remember { getNavigationCoordinator().getRootNavigator() }
|
||||
val bottomNavigator = LocalBottomSheetNavigator.current
|
||||
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
|
||||
|
||||
@ -158,7 +159,7 @@ class CommunityListScreen : Screen {
|
||||
) {
|
||||
CommunityItem(
|
||||
modifier = Modifier.fillMaxWidth().onClick {
|
||||
navigator.push(
|
||||
navigator?.push(
|
||||
CommunityDetailScreen(
|
||||
community = community,
|
||||
).apply {
|
||||
|
@ -35,6 +35,6 @@ object SearchTab : Tab {
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
CommunityListScreen().Content()
|
||||
Navigator(CommunityListScreen())
|
||||
}
|
||||
}
|
||||
|
@ -37,6 +37,6 @@ object SettingsTab : Tab {
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
SettingsScreen().Content()
|
||||
Navigator(SettingsScreen())
|
||||
}
|
||||
}
|
||||
|
@ -59,6 +59,7 @@ kotlin {
|
||||
implementation(projects.coreAppearance)
|
||||
implementation(projects.corePreferences)
|
||||
implementation(projects.coreApi)
|
||||
implementation(projects.coreCommonui)
|
||||
implementation(projects.coreNotifications)
|
||||
implementation(projects.coreCrashreport)
|
||||
implementation(projects.domainIdentity)
|
||||
|
@ -8,11 +8,14 @@ import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import cafe.adriel.voyager.navigator.CurrentScreen
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import cafe.adriel.voyager.navigator.bottomSheet.BottomSheetNavigator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.data.toThemeState
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.di.getThemeRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.AppTheme
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.preferences.KeyStoreKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.preferences.di.getTemporaryKeyStore
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.di.getApiConfigurationRepository
|
||||
@ -63,6 +66,7 @@ fun App() {
|
||||
themeRepository.changeDynamicColors(dynamicColors)
|
||||
}
|
||||
val useDynamicColors by themeRepository.dynamicColors.collectAsState()
|
||||
val navigationCoordinator = remember { getNavigationCoordinator() }
|
||||
|
||||
AppTheme(
|
||||
theme = currentTheme,
|
||||
@ -73,7 +77,11 @@ fun App() {
|
||||
LaunchedEffect(lang) {}
|
||||
|
||||
BottomSheetNavigator {
|
||||
Navigator(MainScreen())
|
||||
Navigator(MainScreen()) {
|
||||
val navigator = LocalNavigator.current
|
||||
navigationCoordinator.setRootNavigator(navigator)
|
||||
CurrentScreen()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.appearance.di.getThemeRepos
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.md_theme_black_surface
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.md_theme_dark_surface
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.md_theme_light_surface
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.di.getBottomNavCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.home.ui.HomeTab
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.inbox.ui.InboxTab
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.profile.ui.ProfileTab
|
||||
@ -52,9 +52,9 @@ internal class MainScreen : Screen {
|
||||
}
|
||||
}
|
||||
}
|
||||
val bottomNavBarCoordinator = remember { getBottomNavCoordinator() }
|
||||
val bottomNavBarCoordinator = remember { getNavigationCoordinator() }
|
||||
LaunchedEffect(bottomNavBarCoordinator) {
|
||||
bottomNavBarCoordinator.setConnection(bottomBarNestedScrollConnection)
|
||||
bottomNavBarCoordinator.setBottomBarScrollConnection(bottomBarNestedScrollConnection)
|
||||
}
|
||||
|
||||
TabNavigator(HomeTab) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user