diff --git a/buildSrc/src/main/kotlin/Config.kt b/buildSrc/src/main/kotlin/Config.kt index 9d29b109..08389e06 100644 --- a/buildSrc/src/main/kotlin/Config.kt +++ b/buildSrc/src/main/kotlin/Config.kt @@ -35,16 +35,6 @@ fun com.android.build.api.dsl.LibraryExtension.setupLibrary() { sourceSets["debug"].java.srcDir("build/generated/ksp/android/androidDebug/kotlin") } - -fun com.android.build.gradle.LibraryExtension.withCompose() { - buildFeatures { - compose = true - } - composeOptions { - kotlinCompilerExtensionVersion = Versions.compose - } -} - fun Project.kspAndroid(dependencyNotation: Any) { project.dependencies.add("kspAndroid", dependencyNotation) } diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 58e09fb2..f230f582 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -23,7 +23,6 @@ object Versions { const val spotless = "6.3.0" const val ktlint = "0.43.2" const val compose_jb = "1.1.0" - const val compose = "1.1.0" const val accompanist = "0.23.0" const val navigation = "2.4.1" const val lifecycle = "2.4.1" diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 5b6ea2c6..b70ad9bf 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -14,6 +14,18 @@ kotlin { implementation(projects.common.routeProcessor.annotations) kspAndroid(projects.common.routeProcessor) api(projects.common.bigDecimal) + + // Compose + api("org.jetbrains.compose.ui:ui:${Versions.compose_jb}") + api("org.jetbrains.compose.ui:ui-util:${Versions.compose_jb}") + api("org.jetbrains.compose.foundation:foundation:${Versions.compose_jb}") + api("org.jetbrains.compose.material:material:${Versions.compose_jb}") + api("org.jetbrains.compose.material:material-icons-core:${Versions.compose_jb}") + api("org.jetbrains.compose.material:material-icons-extended:${Versions.compose_jb}") + api("org.jetbrains.compose.ui:ui-tooling:${Versions.compose_jb}") + + // Koin + api("io.insert-koin:koin-core:${Versions.koin}") } } val commonTest by getting { @@ -33,15 +45,6 @@ kotlin { api(projects.common.okhttp) api(projects.common.bigDecimal) - // Compose - api("org.jetbrains.compose.ui:ui:${Versions.compose_jb}") - api("org.jetbrains.compose.ui:ui-util:${Versions.compose_jb}") - api("org.jetbrains.compose.foundation:foundation:${Versions.compose_jb}") - api("org.jetbrains.compose.material:material:${Versions.compose_jb}") - api("org.jetbrains.compose.material:material-icons-core:${Versions.compose_jb}") - api("org.jetbrains.compose.material:material-icons-extended:${Versions.compose_jb}") - api("org.jetbrains.compose.ui:ui-tooling:${Versions.compose_jb}") - // Koin api("io.insert-koin:koin-android:${Versions.koin}") api("io.insert-koin:koin-androidx-compose:${Versions.koin}") diff --git a/common/routeProcessor/src/main/java/com/dimension/maskbook/common/routeProcessor/RouteGraphProcessor.kt b/common/routeProcessor/src/main/java/com/dimension/maskbook/common/routeProcessor/RouteGraphProcessor.kt index 0b720e48..1d8d28fc 100644 --- a/common/routeProcessor/src/main/java/com/dimension/maskbook/common/routeProcessor/RouteGraphProcessor.kt +++ b/common/routeProcessor/src/main/java/com/dimension/maskbook/common/routeProcessor/RouteGraphProcessor.kt @@ -47,8 +47,8 @@ import com.squareup.kotlinpoet.ksp.toTypeName import com.squareup.kotlinpoet.ksp.writeTo import com.squareup.kotlinpoet.withIndent -private val navControllerType = ClassName("androidx.navigation", "NavController") -private val navBackStackEntryType = ClassName("androidx.navigation", "NavBackStackEntry") +private val navControllerType = ClassName("moe.tlaster.precompose.navigation", "NavController") +private val navBackStackEntryType = ClassName("moe.tlaster.precompose.navigation", "BackStackEntry") private const val navControllerName = "controller" @OptIn(KotlinPoetKspPreview::class, KspExperimental::class) @@ -100,7 +100,7 @@ internal class RouteGraphProcessor( fileBuilder.addFunction( FunSpec.builder(generatedFunctionName) .addModifiers(KModifier.INTERNAL) - .receiver(ClassName("androidx.navigation", "NavGraphBuilder")) + .receiver(ClassName("moe.tlaster.precompose.navigation", "RouteBuilder")) .addParameter( navControllerName, navControllerType, diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/CommonSetup.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/CommonSetup.kt index 20c0ca25..06d42ad0 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/CommonSetup.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/CommonSetup.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.common -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder import com.dimension.maskbook.common.manager.ImageLoaderManager import com.dimension.maskbook.common.manager.KeyStoreManager import com.dimension.maskbook.common.util.BiometricAuthenticator @@ -32,12 +30,14 @@ import com.dimension.maskbook.common.viewmodel.SetUpPaymentPasswordViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob -import org.koin.androidx.viewmodel.dsl.viewModel +import moe.tlaster.koin.viewModel +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.navigation.RouteBuilder import org.koin.core.qualifier.named import org.koin.dsl.module object CommonSetup : ModuleSetup { - override fun NavGraphBuilder.route(navController: NavController) { + override fun RouteBuilder.route(navController: NavController) { } override fun dependencyInject() = module { diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ModuleSetup.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ModuleSetup.kt index 68e07959..6363435a 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ModuleSetup.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ModuleSetup.kt @@ -20,15 +20,15 @@ */ package com.dimension.maskbook.common -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.navigation.RouteBuilder import org.koin.core.module.Module interface ModuleSetup { - fun NavGraphBuilder.route(navController: NavController) + fun RouteBuilder.route(navController: NavController) fun dependencyInject(): Module fun onExtensionReady() {} } -fun ModuleSetup.route(builder: NavGraphBuilder, navController: NavController) = +fun ModuleSetup.route(builder: RouteBuilder, navController: NavController) = builder.route(navController) diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/FlowExt.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/FlowExt.kt index 98f46007..2aae429e 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/FlowExt.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/FlowExt.kt @@ -20,13 +20,9 @@ */ package com.dimension.maskbook.common.ext -import android.annotation.SuppressLint import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.remember -import androidx.compose.ui.platform.LocalLifecycleOwner -import androidx.lifecycle.flowWithLifecycle import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted @@ -35,16 +31,12 @@ import kotlinx.coroutines.flow.stateIn @Composable fun Flow.observeAsState(initial: T): State { - val lifecycleOwner = LocalLifecycleOwner.current - return remember(this, lifecycleOwner) { - flowWithLifecycle(lifecycleOwner.lifecycle) - }.collectAsState(initial = initial) + return collectAsState(initial = initial) } -@SuppressLint("StateFlowValueCalledInComposition") @Composable fun StateFlow.observeAsState(): State { - return observeAsState(initial = value) + return collectAsState() } fun Flow.asStateIn(scope: CoroutineScope, initial: T) = diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/KoinExt.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/KoinExt.kt index e194bc3d..07688d8d 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/KoinExt.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/KoinExt.kt @@ -22,8 +22,8 @@ package com.dimension.maskbook.common.ext import androidx.compose.runtime.Composable import androidx.compose.runtime.remember -import androidx.lifecycle.ViewModel -import androidx.navigation.NavController +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.viewmodel.ViewModel import org.koin.androidx.viewmodel.ViewModelOwner import org.koin.androidx.viewmodel.scope.getViewModel import org.koin.core.annotation.KoinInternalApi diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/NavControllerExt.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/NavControllerExt.kt index 29d8806b..b8a75a3a 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/NavControllerExt.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/NavControllerExt.kt @@ -21,11 +21,11 @@ package com.dimension.maskbook.common.ext import android.net.Uri -import androidx.navigation.NavController import androidx.navigation.NavOptionsBuilder import androidx.navigation.navOptions import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks +import moe.tlaster.precompose.navigation.NavController fun NavController.navigate(uri: Uri, builder: NavOptionsBuilder.() -> Unit) { navigate(uri, navOptions(builder)) @@ -35,16 +35,18 @@ fun NavController.navigateUri(uri: Uri, builder: NavOptionsBuilder.() -> Unit = navigate(uri, navOptions(builder)) } -fun NavController.navigateWithPopSelf(route: String) { +fun NavController.navigateWithPopSelf(route: String, launchSingleTop: Boolean = false) { navigate(route) { + this.launchSingleTop = launchSingleTop currentDestination?.id?.let { popId -> popUpTo(popId) { inclusive = true } } } } -fun NavController.navigateUriWithPopSelf(uri: String) { +fun NavController.navigateUriWithPopSelf(uri: String, launchSingleTop: Boolean = false) { navigate(Uri.parse(uri)) { + this.launchSingleTop = launchSingleTop currentDestination?.id?.let { popId -> popUpTo(popId) { inclusive = true } } diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/NavControllerResult.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/NavControllerResult.kt index 015f724b..07a55903 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/NavControllerResult.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ext/NavControllerResult.kt @@ -20,11 +20,8 @@ */ package com.dimension.maskbook.common.ext -import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelStoreOwner -import androidx.lifecycle.viewModelScope -import androidx.navigation.NavController import com.dimension.maskbook.common.model.ResultEvent import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow @@ -34,6 +31,9 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.filterNot import kotlinx.coroutines.launch +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope /** * use for navigate result, use like: diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/route/Consts.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/route/Consts.kt index acbd7a9e..531fcf75 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/route/Consts.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/route/Consts.kt @@ -30,12 +30,12 @@ import androidx.compose.animation.slideOutVertically import androidx.compose.foundation.layout.ColumnScope import androidx.compose.runtime.Composable import androidx.navigation.NamedNavArgument -import androidx.navigation.NavBackStackEntry import androidx.navigation.NavDeepLink -import androidx.navigation.NavGraphBuilder import com.google.accompanist.navigation.animation.composable import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi import com.google.accompanist.navigation.material.bottomSheet +import moe.tlaster.precompose.navigation.BackStackEntry +import moe.tlaster.precompose.navigation.RouteBuilder const val navigationComposeDialogPackage = "androidx.navigation.compose" const val navigationComposeDialog = "dialog" @@ -53,11 +53,11 @@ const val navigationComposeBottomSheetPackage = "com.dimension.maskbook.common.r const val navigationComposeBottomSheet = "bottomSheet" @OptIn(ExperimentalAnimationApi::class) -fun NavGraphBuilder.composable( +fun RouteBuilder.composable( route: String, arguments: List = emptyList(), deepLinks: List = emptyList(), - content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit + content: @Composable AnimatedVisibilityScope.(BackStackEntry) -> Unit ) { composable( route = route, @@ -68,11 +68,11 @@ fun NavGraphBuilder.composable( } @OptIn(ExperimentalAnimationApi::class) -fun NavGraphBuilder.modalComposable( +fun RouteBuilder.modalComposable( route: String, arguments: List = emptyList(), deepLinks: List = emptyList(), - content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit + content: @Composable AnimatedVisibilityScope.(BackStackEntry) -> Unit ) { composable( route = route, @@ -95,11 +95,11 @@ fun NavGraphBuilder.modalComposable( } @OptIn(ExperimentalAnimationApi::class) -fun NavGraphBuilder.homeComposable( +fun RouteBuilder.homeComposable( route: String, arguments: List = emptyList(), deepLinks: List = emptyList(), - content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit + content: @Composable AnimatedVisibilityScope.(BackStackEntry) -> Unit ) { var isPopExtension = false composable( @@ -126,11 +126,11 @@ fun NavGraphBuilder.homeComposable( } @OptIn(ExperimentalMaterialNavigationApi::class) -fun NavGraphBuilder.bottomSheet( +fun RouteBuilder.bottomSheet( route: String, arguments: List = emptyList(), deepLinks: List = emptyList(), - content: @Composable ColumnScope.(backstackEntry: NavBackStackEntry) -> Unit + content: @Composable ColumnScope.(backstackEntry: BackStackEntry) -> Unit ) { bottomSheet( route = route, diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/scene/SetupPaymentPassword.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/scene/SetupPaymentPassword.kt index 3679dea4..79ba9316 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/scene/SetupPaymentPassword.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/scene/SetupPaymentPassword.kt @@ -40,7 +40,7 @@ import com.dimension.maskbook.common.ui.widget.MaskModal import com.dimension.maskbook.common.ui.widget.MaskPasswordInputField import com.dimension.maskbook.common.ui.widget.button.PrimaryButton import com.dimension.maskbook.common.viewmodel.SetUpPaymentPasswordViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @Composable fun SetUpPaymentPassword( diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/tab/TabScreen.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/tab/TabScreen.kt index 77de0bf2..6b4b6f79 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/tab/TabScreen.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/tab/TabScreen.kt @@ -21,7 +21,7 @@ package com.dimension.maskbook.common.ui.tab import androidx.compose.runtime.Composable -import androidx.navigation.NavController +import moe.tlaster.precompose.navigation.NavController interface TabScreen { diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/theme/IsDarkTheme.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/theme/IsDarkTheme.kt index f13c3161..2d70e445 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/theme/IsDarkTheme.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/theme/IsDarkTheme.kt @@ -29,7 +29,7 @@ import androidx.compose.runtime.staticCompositionLocalOf import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.setting.export.SettingServices import com.dimension.maskbook.setting.export.model.Appearance -import org.koin.androidx.compose.get +import moe.tlaster.koin.compose.get internal val LocalIsDarkTheme = staticCompositionLocalOf { false } diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/widget/RouteHost.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/widget/RouteHost.kt index e4abd950..248ec60e 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/widget/RouteHost.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/ui/widget/RouteHost.kt @@ -28,7 +28,6 @@ import androidx.compose.foundation.shape.CornerSize import androidx.compose.material.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.unit.dp -import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import com.dimension.maskbook.common.ui.theme.modalScrimColor import com.google.accompanist.navigation.animation.AnimatedNavHost @@ -36,6 +35,7 @@ import com.google.accompanist.navigation.animation.rememberAnimatedNavController import com.google.accompanist.navigation.material.BottomSheetNavigator import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi import com.google.accompanist.navigation.material.ModalBottomSheetLayout +import moe.tlaster.precompose.navigation.RouteBuilder private const val navHostAnimationDurationMillis = 320 @@ -46,7 +46,7 @@ fun RouteHost( bottomSheetNavigator: BottomSheetNavigator = rememberMaskBottomSheetNavigator(), navController: NavHostController = rememberAnimatedNavController(bottomSheetNavigator), startDestination: String, - builder: NavGraphBuilder.() -> Unit + builder: RouteBuilder.() -> Unit ) { ModalBottomSheetLayout( bottomSheetNavigator, diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BaseMnemonicPhraseViewModel.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BaseMnemonicPhraseViewModel.kt index 5dcef857..c1767ac0 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BaseMnemonicPhraseViewModel.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BaseMnemonicPhraseViewModel.kt @@ -20,14 +20,14 @@ */ package com.dimension.maskbook.common.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.BuildConfig import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.model.MnemonicWord import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope abstract class BaseMnemonicPhraseViewModel : ViewModel() { protected val _words = MutableStateFlow(emptyList()) diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BiometricEnableViewModel.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BiometricEnableViewModel.kt index 287c8989..8342597f 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BiometricEnableViewModel.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BiometricEnableViewModel.kt @@ -21,9 +21,9 @@ package com.dimension.maskbook.common.viewmodel import android.content.Context -import androidx.lifecycle.ViewModel import com.dimension.maskbook.common.util.BiometricAuthenticator import com.dimension.maskbook.setting.export.SettingServices +import moe.tlaster.precompose.viewmodel.ViewModel class BiometricEnableViewModel( private val biometricAuthenticator: BiometricAuthenticator, diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BiometricViewModel.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BiometricViewModel.kt index 93956e26..5acb2f90 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BiometricViewModel.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/BiometricViewModel.kt @@ -21,8 +21,6 @@ package com.dimension.maskbook.common.viewmodel import android.content.Context -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.R import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.util.BiometricAuthenticator @@ -31,6 +29,8 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope open class BiometricViewModel( private val biometricAuthenticator: BiometricAuthenticator, diff --git a/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/SetUpPaymentPasswordViewModel.kt b/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/SetUpPaymentPasswordViewModel.kt index 879b6756..a0ca1f15 100644 --- a/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/SetUpPaymentPasswordViewModel.kt +++ b/common/src/androidMain/kotlin/com/dimension/maskbook/common/viewmodel/SetUpPaymentPasswordViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.common.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.export.SettingServices import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class SetUpPaymentPasswordViewModel( private val repository: SettingServices, diff --git a/common/src/androidMain/kotlin/moe/tlaster/koin/ViewModel.kt b/common/src/androidMain/kotlin/moe/tlaster/koin/ViewModel.kt new file mode 100644 index 00000000..42021dd6 --- /dev/null +++ b/common/src/androidMain/kotlin/moe/tlaster/koin/ViewModel.kt @@ -0,0 +1,43 @@ +/* + * Mask-Android + * + * Copyright (C) 2022 DimensionDev and Contributors + * + * This file is part of Mask-Android. + * + * Mask-Android is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Mask-Android is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Mask-Android. If not, see . + */ +package moe.tlaster.koin + +import moe.tlaster.precompose.viewmodel.ViewModel +import org.koin.core.annotation.KoinReflectAPI +import org.koin.core.definition.Definition +import org.koin.core.instance.InstanceFactory +import org.koin.core.instance.newInstance +import org.koin.core.module.Module +import org.koin.core.qualifier.Qualifier + +actual inline fun Module.viewModel( + qualifier: Qualifier?, + noinline definition: Definition +): Pair> { + return factory(qualifier, definition) +} + +@KoinReflectAPI +actual inline fun Module.viewModel( + qualifier: Qualifier?, +): Pair> { + return factory(qualifier) { newInstance(T::class, it) } +} diff --git a/common/src/androidMain/kotlin/moe/tlaster/koin/compose/ViewModelExt.kt b/common/src/androidMain/kotlin/moe/tlaster/koin/compose/ViewModelExt.kt new file mode 100644 index 00000000..cd1f82df --- /dev/null +++ b/common/src/androidMain/kotlin/moe/tlaster/koin/compose/ViewModelExt.kt @@ -0,0 +1,37 @@ +/* + * Mask-Android + * + * Copyright (C) 2022 DimensionDev and Contributors + * + * This file is part of Mask-Android. + * + * Mask-Android is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Mask-Android is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Mask-Android. If not, see . + */ +package moe.tlaster.koin.compose + +import androidx.compose.runtime.Composable +import moe.tlaster.precompose.viewmodel.ViewModel +import org.koin.core.parameter.ParametersDefinition +import org.koin.core.qualifier.Qualifier + +@Composable +actual inline fun getViewModel( + qualifier: Qualifier?, + noinline parameters: ParametersDefinition?, +): T { + return org.koin.androidx.compose.getViewModel( + qualifier = qualifier, + parameters = parameters, + ) +} diff --git a/common/src/androidMain/kotlin/moe/tlaster/precompose/navigation/NavController.kt b/common/src/androidMain/kotlin/moe/tlaster/precompose/navigation/NavController.kt new file mode 100644 index 00000000..d0dad5b6 --- /dev/null +++ b/common/src/androidMain/kotlin/moe/tlaster/precompose/navigation/NavController.kt @@ -0,0 +1,35 @@ +/* + * Mask-Android + * + * Copyright (C) 2022 DimensionDev and Contributors + * + * This file is part of Mask-Android. + * + * Mask-Android is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Mask-Android is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Mask-Android. If not, see . + */ +package moe.tlaster.precompose.navigation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.navigation.compose.currentBackStackEntryAsState + +actual typealias NavController = androidx.navigation.NavController +actual typealias BackStackEntry = androidx.navigation.NavBackStackEntry + +actual typealias RouteBuilder = androidx.navigation.NavGraphBuilder + +@Composable +actual fun NavController.currentBackStackEntryAsState(): State { + return currentBackStackEntryAsState() +} diff --git a/common/src/androidMain/kotlin/moe/tlaster/precompose/viewmodel/ViewModel.kt b/common/src/androidMain/kotlin/moe/tlaster/precompose/viewmodel/ViewModel.kt new file mode 100644 index 00000000..b4c61835 --- /dev/null +++ b/common/src/androidMain/kotlin/moe/tlaster/precompose/viewmodel/ViewModel.kt @@ -0,0 +1,29 @@ +/* + * Mask-Android + * + * Copyright (C) 2022 DimensionDev and Contributors + * + * This file is part of Mask-Android. + * + * Mask-Android is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Mask-Android is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Mask-Android. If not, see . + */ +package moe.tlaster.precompose.viewmodel + +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.CoroutineScope + +actual typealias ViewModel = androidx.lifecycle.ViewModel + +actual val ViewModel.viewModelScope: CoroutineScope + get() = viewModelScope diff --git a/common/src/commonMain/kotlin/moe/tlaster/koin/ViewModel.kt b/common/src/commonMain/kotlin/moe/tlaster/koin/ViewModel.kt new file mode 100644 index 00000000..108b5ca4 --- /dev/null +++ b/common/src/commonMain/kotlin/moe/tlaster/koin/ViewModel.kt @@ -0,0 +1,36 @@ +/* + * Mask-Android + * + * Copyright (C) 2022 DimensionDev and Contributors + * + * This file is part of Mask-Android. + * + * Mask-Android is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Mask-Android is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Mask-Android. If not, see . + */ +package moe.tlaster.koin + +import moe.tlaster.precompose.viewmodel.ViewModel +import org.koin.core.definition.Definition +import org.koin.core.instance.InstanceFactory +import org.koin.core.module.Module +import org.koin.core.qualifier.Qualifier + +expect inline fun Module.viewModel( + qualifier: Qualifier? = null, + noinline definition: Definition +): Pair> + +expect inline fun Module.viewModel( + qualifier: Qualifier? = null +): Pair> diff --git a/common/src/commonMain/kotlin/moe/tlaster/koin/compose/ComposeExt.kt b/common/src/commonMain/kotlin/moe/tlaster/koin/compose/ComposeExt.kt new file mode 100644 index 00000000..4da83723 --- /dev/null +++ b/common/src/commonMain/kotlin/moe/tlaster/koin/compose/ComposeExt.kt @@ -0,0 +1,48 @@ +/* + * Mask-Android + * + * Copyright (C) 2022 DimensionDev and Contributors + * + * This file is part of Mask-Android. + * + * Mask-Android is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Mask-Android is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Mask-Android. If not, see . + */ +package moe.tlaster.koin.compose + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import org.koin.core.Koin +import org.koin.core.parameter.ParametersDefinition +import org.koin.core.qualifier.Qualifier +import org.koin.mp.KoinPlatformTools + +@Composable +inline fun getRemember( + qualifier: Qualifier? = null, + noinline parameters: ParametersDefinition? = null, +): T = remember(qualifier, parameters) { + get(qualifier, parameters) +} + +@Composable +fun getKoinRemember(): Koin = remember { + getKoin() +} + +inline fun get( + qualifier: Qualifier? = null, + noinline parameters: ParametersDefinition? = null, +): T = KoinPlatformTools.defaultContext().get().get(qualifier, parameters) + +fun getKoin(): Koin = KoinPlatformTools.defaultContext().get() diff --git a/common/src/commonMain/kotlin/moe/tlaster/koin/compose/ViewModelExt.kt b/common/src/commonMain/kotlin/moe/tlaster/koin/compose/ViewModelExt.kt new file mode 100644 index 00000000..3310e26e --- /dev/null +++ b/common/src/commonMain/kotlin/moe/tlaster/koin/compose/ViewModelExt.kt @@ -0,0 +1,32 @@ +/* + * Mask-Android + * + * Copyright (C) 2022 DimensionDev and Contributors + * + * This file is part of Mask-Android. + * + * Mask-Android is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Mask-Android is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Mask-Android. If not, see . + */ +package moe.tlaster.koin.compose + +import androidx.compose.runtime.Composable +import moe.tlaster.precompose.viewmodel.ViewModel +import org.koin.core.parameter.ParametersDefinition +import org.koin.core.qualifier.Qualifier + +@Composable +expect inline fun getViewModel( + qualifier: Qualifier? = null, + noinline parameters: ParametersDefinition? = null, +): T diff --git a/common/src/commonMain/kotlin/moe/tlaster/precompose/navigation/NavController.kt b/common/src/commonMain/kotlin/moe/tlaster/precompose/navigation/NavController.kt new file mode 100644 index 00000000..524464d0 --- /dev/null +++ b/common/src/commonMain/kotlin/moe/tlaster/precompose/navigation/NavController.kt @@ -0,0 +1,32 @@ +/* + * Mask-Android + * + * Copyright (C) 2022 DimensionDev and Contributors + * + * This file is part of Mask-Android. + * + * Mask-Android is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Mask-Android is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Mask-Android. If not, see . + */ +package moe.tlaster.precompose.navigation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State + +expect class NavController +expect class BackStackEntry + +expect class RouteBuilder + +@Composable +expect fun NavController.currentBackStackEntryAsState(): State diff --git a/common/src/commonMain/kotlin/moe/tlaster/precompose/viewmodel/ViewModel.kt b/common/src/commonMain/kotlin/moe/tlaster/precompose/viewmodel/ViewModel.kt new file mode 100644 index 00000000..6dedc9fd --- /dev/null +++ b/common/src/commonMain/kotlin/moe/tlaster/precompose/viewmodel/ViewModel.kt @@ -0,0 +1,27 @@ +/* + * Mask-Android + * + * Copyright (C) 2022 DimensionDev and Contributors + * + * This file is part of Mask-Android. + * + * Mask-Android is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Mask-Android is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Mask-Android. If not, see . + */ +package moe.tlaster.precompose.viewmodel + +import kotlinx.coroutines.CoroutineScope + +expect abstract class ViewModel + +expect val ViewModel.viewModelScope: CoroutineScope diff --git a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/EntrySetup.kt b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/EntrySetup.kt index 751bdc53..4be1aeb8 100644 --- a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/EntrySetup.kt +++ b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/EntrySetup.kt @@ -21,8 +21,6 @@ package com.dimension.maskbook.entry import android.content.Context -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder import com.dimension.maskbook.common.ModuleSetup import com.dimension.maskbook.common.route.Navigator import com.dimension.maskbook.entry.data.JSMethod @@ -34,11 +32,13 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.merge import kotlinx.coroutines.launch +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.navigation.RouteBuilder import org.koin.dsl.module import org.koin.mp.KoinPlatformTools object EntrySetup : ModuleSetup { - override fun NavGraphBuilder.route(navController: NavController) { + override fun RouteBuilder.route(navController: NavController) { generatedRoute(navController) } diff --git a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/ComposeDebugTool.kt b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/ComposeDebugTool.kt index 16f299d7..65e14d7c 100644 --- a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/ComposeDebugTool.kt +++ b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/ComposeDebugTool.kt @@ -33,9 +33,9 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import androidx.navigation.compose.currentBackStackEntryAsState import com.dimension.maskbook.common.ui.widget.button.MaskButton +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.navigation.currentBackStackEntryAsState @Composable fun ComposeDebugTool( diff --git a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/Router.kt b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/Router.kt index 59e09ffd..fc295745 100644 --- a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/Router.kt +++ b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/Router.kt @@ -25,6 +25,7 @@ import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import com.dimension.maskbook.common.CommonSetup +import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.route import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.DeeplinkNavigateArgs @@ -67,7 +68,7 @@ fun Router( Navigator.navigateEvent.collect { it.getContentIfNotHandled()?.let { it1 -> when (it1) { - is DeeplinkNavigateArgs -> navController.navigate(Uri.parse(it1.url)) + is DeeplinkNavigateArgs -> navController.navigateUri(Uri.parse(it1.url)) is RouteNavigateArgs -> navController.navigate(it1.route) } } diff --git a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/scene/IntroScene.kt b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/scene/IntroScene.kt index 04df9d94..ad1f1486 100644 --- a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/scene/IntroScene.kt +++ b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/scene/IntroScene.kt @@ -62,7 +62,6 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.navigation.NavController import com.dimension.maskbook.common.route.navigationComposeAnimComposable import com.dimension.maskbook.common.route.navigationComposeAnimComposablePackage import com.dimension.maskbook.common.routeProcessor.annotations.NavGraphDestination @@ -76,7 +75,8 @@ import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.HorizontalPager import com.google.accompanist.pager.PagerState import com.google.accompanist.pager.rememberPagerState -import org.koin.androidx.compose.get +import moe.tlaster.koin.compose.get +import moe.tlaster.precompose.navigation.NavController private data class IntroData( @DrawableRes val img: Int, diff --git a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/scene/MainHost.kt b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/scene/MainHost.kt index af499ed5..7a119d36 100644 --- a/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/scene/MainHost.kt +++ b/entry/src/androidMain/kotlin/com/dimension/maskbook/entry/ui/scene/MainHost.kt @@ -50,7 +50,6 @@ import androidx.compose.ui.layout.Layout import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.getAll import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks @@ -66,6 +65,7 @@ import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.HorizontalPager import com.google.accompanist.pager.rememberPagerState import kotlinx.coroutines.launch +import moe.tlaster.precompose.navigation.NavController import kotlin.math.max private val tabOrder = listOf( diff --git a/extension/src/androidMain/kotlin/com/dimension/maskbook/extension/ExtensionSetup.kt b/extension/src/androidMain/kotlin/com/dimension/maskbook/extension/ExtensionSetup.kt index 2e6da07a..d748b2b7 100644 --- a/extension/src/androidMain/kotlin/com/dimension/maskbook/extension/ExtensionSetup.kt +++ b/extension/src/androidMain/kotlin/com/dimension/maskbook/extension/ExtensionSetup.kt @@ -21,8 +21,6 @@ package com.dimension.maskbook.extension import androidx.compose.runtime.getValue -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder import androidx.navigation.NavType import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.navArgument @@ -40,12 +38,14 @@ import com.dimension.maskbook.extension.route.ExtensionRoute import com.dimension.maskbook.extension.ui.WebContentScene import com.dimension.maskbook.extension.utils.BackgroundMessageChannel import com.dimension.maskbook.extension.utils.ContentMessageChannel +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.navigation.RouteBuilder import org.koin.core.qualifier.named import org.koin.dsl.module import org.koin.mp.KoinPlatformTools object ExtensionSetup : ModuleSetup { - override fun NavGraphBuilder.route(navController: NavController) { + override fun RouteBuilder.route(navController: NavController) { modalComposable( route = ExtensionRoute.WebContent.path, deepLinks = listOf( diff --git a/extension/src/androidMain/kotlin/com/dimension/maskbook/extension/ui/WebContentScene.kt b/extension/src/androidMain/kotlin/com/dimension/maskbook/extension/ui/WebContentScene.kt index 82c71bfb..68dcda50 100644 --- a/extension/src/androidMain/kotlin/com/dimension/maskbook/extension/ui/WebContentScene.kt +++ b/extension/src/androidMain/kotlin/com/dimension/maskbook/extension/ui/WebContentScene.kt @@ -62,7 +62,7 @@ import com.dimension.maskbook.common.ui.widget.button.MaskIconButton import com.dimension.maskbook.extension.export.model.Site import com.dimension.maskbook.extension.ext.site import com.dimension.maskbook.localization.R -import org.koin.androidx.compose.get +import moe.tlaster.koin.compose.get import kotlin.math.roundToInt @Composable diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/LabsSetup.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/LabsSetup.kt index 7ba97e29..0f7bcf7c 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/LabsSetup.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/LabsSetup.kt @@ -21,8 +21,6 @@ package com.dimension.maskbook.labs import android.content.Context -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder import com.dimension.maskbook.common.IoScopeName import com.dimension.maskbook.common.ModuleSetup import com.dimension.maskbook.common.ui.tab.TabScreen @@ -38,7 +36,9 @@ import com.dimension.maskbook.labs.ui.tab.LabsTabScreen import com.dimension.maskbook.labs.viewmodel.LabsViewModel import com.dimension.maskbook.labs.viewmodel.LuckDropViewModel import com.dimension.maskbook.labs.viewmodel.PluginSettingsViewModel -import org.koin.androidx.viewmodel.dsl.viewModel +import moe.tlaster.koin.viewModel +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.navigation.RouteBuilder import org.koin.core.qualifier.named import org.koin.dsl.bind import org.koin.dsl.module @@ -46,7 +46,7 @@ import org.koin.mp.KoinPlatformTools object LabsSetup : ModuleSetup { - override fun NavGraphBuilder.route(navController: NavController) { + override fun RouteBuilder.route(navController: NavController) { generatedRoute(navController) } diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/LabsScene.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/LabsScene.kt index 79b64f38..7686291b 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/LabsScene.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/LabsScene.kt @@ -50,7 +50,7 @@ import com.dimension.maskbook.labs.R import com.dimension.maskbook.labs.export.model.AppKey import com.dimension.maskbook.labs.viewmodel.AppDisplayData import com.dimension.maskbook.labs.viewmodel.LabsViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @Composable fun LabsScene( diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/LabsTransakScene.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/LabsTransakScene.kt index 16afd877..2f2da649 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/LabsTransakScene.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/LabsTransakScene.kt @@ -54,7 +54,7 @@ import com.dimension.maskbook.labs.R import com.dimension.maskbook.labs.export.model.TransakConfig import com.dimension.maskbook.labs.route.LabsRoute import com.dimension.maskbook.wallet.export.WalletServices -import org.koin.androidx.compose.get +import moe.tlaster.koin.compose.get @NavGraphDestination( route = LabsRoute.LabsTransak, diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/PluginSettingsScene.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/PluginSettingsScene.kt index 32e36bf2..c6edbf6e 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/PluginSettingsScene.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/PluginSettingsScene.kt @@ -54,7 +54,7 @@ import com.dimension.maskbook.labs.R import com.dimension.maskbook.labs.route.LabsRoute import com.dimension.maskbook.labs.viewmodel.PluginDisplayData import com.dimension.maskbook.labs.viewmodel.PluginSettingsViewModel -import org.koin.androidx.compose.viewModel +import moe.tlaster.koin.compose.getViewModel @NavGraphDestination( route = LabsRoute.PluginSettings, @@ -65,7 +65,7 @@ import org.koin.androidx.compose.viewModel fun PluginSettingsScene( @Back onBack: () -> Unit, ) { - val viewModel by viewModel() + val viewModel = getViewModel() val apps by viewModel.apps.collectAsState() val shouldShowPluginSettingsTipDialog by viewModel.shouldShowPluginSettingsTipDialog.collectAsState() MaskScene { diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/redpacket/LuckyDropModal.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/redpacket/LuckyDropModal.kt index 6e2d00d1..6897a626 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/redpacket/LuckyDropModal.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/redpacket/LuckyDropModal.kt @@ -52,7 +52,6 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import coil.compose.rememberImagePainter import com.dimension.maskbook.common.bigDecimal.BigDecimal import com.dimension.maskbook.common.ext.encodeUrl @@ -78,7 +77,8 @@ import com.dimension.maskbook.labs.route.LabsRoute import com.dimension.maskbook.labs.ui.widget.ClaimLoadingIndicator import com.dimension.maskbook.labs.ui.widget.RedPacketClaimButton import com.dimension.maskbook.labs.viewmodel.LuckDropViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf import kotlin.math.pow diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/redpacket/LuckyDropResultDialog.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/redpacket/LuckyDropResultDialog.kt index 7e056529..a96eb4ff 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/redpacket/LuckyDropResultDialog.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/scenes/redpacket/LuckyDropResultDialog.kt @@ -52,7 +52,7 @@ import com.dimension.maskbook.extension.export.ExtensionServices import com.dimension.maskbook.labs.R import com.dimension.maskbook.labs.route.LabsRoute import com.dimension.maskbook.labs.ui.widget.RedPacketShareButton -import org.koin.androidx.compose.get +import moe.tlaster.koin.compose.get @NavGraphDestination( route = LabsRoute.RedPacket.LuckyDropResult.path, diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/tab/LabsTabScreen.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/tab/LabsTabScreen.kt index faab45fa..69e7fe90 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/tab/LabsTabScreen.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/ui/tab/LabsTabScreen.kt @@ -21,13 +21,13 @@ package com.dimension.maskbook.labs.ui.tab import androidx.compose.runtime.Composable -import androidx.navigation.NavController import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.ui.tab.TabScreen import com.dimension.maskbook.labs.R import com.dimension.maskbook.labs.export.model.AppKey import com.dimension.maskbook.labs.route.LabsRoute import com.dimension.maskbook.labs.ui.scenes.LabsScene +import moe.tlaster.precompose.navigation.NavController class LabsTabScreen : TabScreen { override val route = CommonRoute.Main.Tabs.Labs diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/LabsViewModel.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/LabsViewModel.kt index 4f81641a..e48ec341 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/LabsViewModel.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/LabsViewModel.kt @@ -22,8 +22,6 @@ package com.dimension.maskbook.labs.viewmodel import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.labs.R import com.dimension.maskbook.labs.export.model.AppKey @@ -32,6 +30,8 @@ import com.dimension.maskbook.wallet.export.WalletServices import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope data class AppDisplayData( val key: AppKey, diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/LuckDropViewModel.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/LuckDropViewModel.kt index 223a02f8..36a6a255 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/LuckDropViewModel.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/LuckDropViewModel.kt @@ -21,8 +21,6 @@ package com.dimension.maskbook.labs.viewmodel import android.util.Log -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.exception.NullTransactionReceiptException import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.ext.decodeJson @@ -51,6 +49,8 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope import org.web3j.abi.FunctionEncoder import kotlin.time.Duration.Companion.seconds diff --git a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/PluginSettingsViewModel.kt b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/PluginSettingsViewModel.kt index d80c6747..c4ecdb15 100644 --- a/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/PluginSettingsViewModel.kt +++ b/labs/src/androidMain/kotlin/com/dimension/maskbook/labs/viewmodel/PluginSettingsViewModel.kt @@ -22,8 +22,6 @@ package com.dimension.maskbook.labs.viewmodel import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.labs.R import com.dimension.maskbook.labs.export.model.AppKey @@ -33,6 +31,8 @@ import com.dimension.maskbook.wallet.export.WalletServices import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope data class PluginDisplayData( val key: AppKey, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/PersonaSetup.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/PersonaSetup.kt index 67a9c4dd..e33c7643 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/PersonaSetup.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/PersonaSetup.kt @@ -22,8 +22,6 @@ package com.dimension.maskbook.persona import android.content.Context import androidx.compose.animation.ExperimentalAnimationApi -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder import androidx.room.Room import com.dimension.maskbook.common.IoScopeName import com.dimension.maskbook.common.LocalBackupAccount @@ -80,7 +78,9 @@ import com.dimension.maskbook.persona.viewmodel.social.UserNameModalViewModel import com.google.accompanist.navigation.animation.navigation import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.asExecutor -import org.koin.androidx.viewmodel.dsl.viewModel +import moe.tlaster.koin.viewModel +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.navigation.RouteBuilder import org.koin.core.qualifier.named import org.koin.dsl.bind import org.koin.dsl.binds @@ -90,7 +90,7 @@ import org.koin.mp.KoinPlatformTools object PersonaSetup : ModuleSetup { @OptIn(ExperimentalAnimationApi::class) - override fun NavGraphBuilder.route(navController: NavController) { + override fun RouteBuilder.route(navController: NavController) { generatedRoute(navController) navigation( startDestination = PersonaRoute.Register.CreateIdentity.Backup.path, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/route/RegisterRoute.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/route/RegisterRoute.kt index ab7489f7..5afb58f2 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/route/RegisterRoute.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/route/RegisterRoute.kt @@ -32,8 +32,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.navigation.NavController -import androidx.navigation.navOptions +import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks @@ -60,7 +59,8 @@ import com.dimension.maskbook.persona.ui.scenes.register.recovery.RecoveryHomeSc import com.dimension.maskbook.persona.viewmodel.recovery.IdentityViewModel import com.dimension.maskbook.persona.viewmodel.recovery.PrivateKeyViewModel import kotlinx.coroutines.launch -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( @@ -310,14 +310,13 @@ fun RegisterRecoveryAlreadyExists( PersonaAlreadyExitsDialog( onBack = onBack, onConfirm = { - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Persona)), - navOptions { - popUpTo(PersonaRoute.Register.Init) { - inclusive = true - } + ) { + popUpTo(PersonaRoute.Register.Init) { + inclusive = true } - ) + } }, restoreFrom = restoreFrom ) @@ -343,13 +342,12 @@ fun RegisterRecoveryComplected( }, buttons = { PrimaryButton(onClick = { - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Persona)), - navOptions { - // 0 is the root navigation - popUpTo(0) - } - ) + ) { + // 0 is the root navigation + popUpTo(0) + } }, modifier = Modifier.fillMaxWidth()) { Text(stringResource(R.string.common_controls_done)) } diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/route/SynchronizationRoute.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/route/SynchronizationRoute.kt index 504b7baa..674129dc 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/route/SynchronizationRoute.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/route/SynchronizationRoute.kt @@ -29,10 +29,10 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.navigation.NavController -import androidx.navigation.navOptions import com.dimension.maskbook.common.ext.decodeBase64 import com.dimension.maskbook.common.ext.ifNullOrEmpty +import com.dimension.maskbook.common.ext.navigateUri +import com.dimension.maskbook.common.ext.navigateWithPopSelf import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks import com.dimension.maskbook.common.route.Persona @@ -54,7 +54,8 @@ import com.dimension.maskbook.persona.ui.scenes.register.recovery.PersonaAlready import com.dimension.maskbook.persona.viewmodel.recovery.IdentityViewModel import com.dimension.maskbook.persona.viewmodel.recovery.PrivateKeyViewModel import kotlinx.coroutines.launch -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( @@ -71,23 +72,17 @@ fun SynchronizationScan( onBack = onBack, onResult = { try { - navController.navigate( - Uri.parse(it), - navOptions { - popUpTo(PersonaRoute.Synchronization.Scan) { - inclusive = true - } + navController.navigateUri(Uri.parse(it)) { + popUpTo(PersonaRoute.Synchronization.Scan) { + inclusive = true } - ) + } } catch (e: Throwable) { - navController.navigate( - PersonaRoute.Synchronization.Failed, - navOptions { - popUpTo(PersonaRoute.Synchronization.Scan) { - inclusive = true - } + navController.navigate(PersonaRoute.Synchronization.Failed) { + popUpTo(PersonaRoute.Synchronization.Scan) { + inclusive = true } - ) + } } } ) @@ -113,15 +108,14 @@ fun SynchronizationSuccess( }, buttons = { PrimaryButton(onClick = { - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Persona)), - navOptions { - launchSingleTop = true - popUpTo(PersonaRoute.Synchronization.Success) { - inclusive = true - } + ) { + launchSingleTop = true + popUpTo(PersonaRoute.Synchronization.Success) { + inclusive = true } - ) + } }, modifier = Modifier.fillMaxWidth()) { Text(stringResource(R.string.common_controls_done)) } @@ -170,15 +164,14 @@ fun SynchronizationPersonaAlreadyExists( PersonaAlreadyExitsDialog( onBack = onBack, onConfirm = { - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Persona)), - navOptions { - launchSingleTop = true - popUpTo(PersonaRoute.Synchronization.Persona.AlreadyExists) { - inclusive = true - } + ) { + launchSingleTop = true + popUpTo(PersonaRoute.Synchronization.Persona.AlreadyExists) { + inclusive = true } - ) + } }, restoreFrom = stringResource(R.string.scene_identity_empty_synchronization) ) @@ -232,29 +225,13 @@ fun SynchronizationIdentityPrivateKey( private fun NavController.handleResult(result: Result) { result.onSuccess { - navigate( - PersonaRoute.Synchronization.Success, - navOptions { - currentBackStackEntry?.let { backStackEntry -> - popUpTo(backStackEntry.destination.id) { - inclusive = true - } - } - } - ) + navigateWithPopSelf(PersonaRoute.Synchronization.Success) }.onFailure { - navigate( + navigateWithPopSelf( if (it is PersonaAlreadyExitsError) PersonaRoute.Synchronization.Persona.AlreadyExists else - PersonaRoute.Synchronization.Failed, - navOptions { - currentBackStackEntry?.let { backStackEntry -> - popUpTo(backStackEntry.destination.id) { - inclusive = true - } - } - } + PersonaRoute.Synchronization.Failed ) } } diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/BackupPasswordScene.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/BackupPasswordScene.kt index 96c671a8..ca78e5fb 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/BackupPasswordScene.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/BackupPasswordScene.kt @@ -22,8 +22,6 @@ package com.dimension.maskbook.persona.ui.scenes import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.navigation.NavController -import androidx.navigation.navOptions import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.Deeplinks import com.dimension.maskbook.common.route.navigationComposeBottomSheet @@ -33,7 +31,8 @@ import com.dimension.maskbook.common.routeProcessor.annotations.Path import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.ui.scenes.register.BackUpPasswordModal import com.dimension.maskbook.persona.viewmodel.BackUpPasswordViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController @NavGraphDestination( route = PersonaRoute.BackUpPassword.path, @@ -56,14 +55,11 @@ fun BackUpPassword( onPasswordChanged = { viewModel.setPassword(it) }, passwordValid = passwordValid, onConfirm = { - navController.navigate( - target, - navOptions { - popUpTo(PersonaRoute.BackUpPassword.path) { - inclusive = true - } + navController.navigate(target) { + popUpTo(PersonaRoute.BackUpPassword.path) { + inclusive = true } - ) + } } ) } diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/DownloadQrCodeScene.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/DownloadQrCodeScene.kt index 857b98fb..252a2e5c 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/DownloadQrCodeScene.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/DownloadQrCodeScene.kt @@ -28,7 +28,6 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.platform.LocalContext -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.ext.onFinished import com.dimension.maskbook.common.route.navigationComposeAnimComposable @@ -42,7 +41,8 @@ import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.DownloadQrCodeViewModel import kotlinx.coroutines.launch -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/ExportPrivateKeyScene.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/ExportPrivateKeyScene.kt index fe8c2539..6d3de7f0 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/ExportPrivateKeyScene.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/ExportPrivateKeyScene.kt @@ -56,7 +56,7 @@ import com.dimension.maskbook.common.ui.widget.button.SecondaryButton import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.ExportPrivateKeyViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @NavGraphDestination( route = PersonaRoute.ExportPrivateKey, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/LogoutDialog.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/LogoutDialog.kt index a94dfcf9..beb69f55 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/LogoutDialog.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/LogoutDialog.kt @@ -35,7 +35,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.navigationComposeBottomSheet @@ -52,7 +51,8 @@ import com.dimension.maskbook.common.ui.widget.button.SecondaryButton import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.PersonaLogoutViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController @NavGraphDestination( route = PersonaRoute.Logout, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaInfoScene.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaInfoScene.kt index 80a94d52..ef590f97 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaInfoScene.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaInfoScene.kt @@ -84,8 +84,8 @@ import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.HorizontalPager import com.google.accompanist.pager.calculateCurrentOffsetForPage import com.google.accompanist.pager.rememberPagerState -import org.koin.androidx.compose.get -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.get +import moe.tlaster.koin.compose.getViewModel import kotlin.math.absoluteValue private enum class PersonaInfoData(val title: String) { diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaMenuScene.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaMenuScene.kt index 15f6cdb9..e1c380c1 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaMenuScene.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaMenuScene.kt @@ -46,7 +46,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.encodeBase64 import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.route.Deeplinks @@ -64,7 +63,8 @@ import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.DownloadQrCodeViewModel import com.dimension.maskbook.persona.viewmodel.PersonaMenuViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController @NavGraphDestination( route = PersonaRoute.PersonaMenu, @@ -153,7 +153,7 @@ fun PersonaMenuScene( if (backupPassword.isEmpty()) { navController.navigateUri(Uri.parse(Deeplinks.Setting.SetupPasswordDialog)) } else { - navController.navigate(Uri.parse(Deeplinks.Persona.BackUpPassword(PersonaRoute.ExportPrivateKey))) + navController.navigateUri(Uri.parse(Deeplinks.Persona.BackUpPassword(PersonaRoute.ExportPrivateKey))) } } ) { diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaScene.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaScene.kt index 5da1a708..26dc5752 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaScene.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/PersonaScene.kt @@ -44,7 +44,7 @@ import com.dimension.maskbook.persona.export.model.Network import com.dimension.maskbook.persona.export.model.PersonaData import com.dimension.maskbook.persona.export.model.SocialData import com.dimension.maskbook.persona.viewmodel.PersonaViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @ExperimentalAnimationApi @Composable diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/RenamePersonaModal.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/RenamePersonaModal.kt index 44ae9a94..c6448774 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/RenamePersonaModal.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/RenamePersonaModal.kt @@ -31,7 +31,6 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.route.navigationComposeBottomSheet import com.dimension.maskbook.common.route.navigationComposeBottomSheetPackage import com.dimension.maskbook.common.routeProcessor.annotations.NavGraphDestination @@ -42,7 +41,8 @@ import com.dimension.maskbook.common.ui.widget.button.PrimaryButton import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.RenamePersonaViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/SwitchPersonaModal.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/SwitchPersonaModal.kt index 06f693e9..38b61a39 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/SwitchPersonaModal.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/SwitchPersonaModal.kt @@ -39,7 +39,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController +import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.Deeplinks import com.dimension.maskbook.common.route.navigationComposeBottomSheet @@ -50,7 +50,8 @@ import com.dimension.maskbook.common.ui.widget.MaskSelection import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.SwitchPersonaViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController @NavGraphDestination( route = PersonaRoute.SwitchPersona, @@ -98,7 +99,7 @@ fun SwitchPersonaModal( MaskSelection( selected = false, onClicked = { - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Persona.Register.CreatePersona) ) }, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/avatar/PersonaAvatarModal.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/avatar/PersonaAvatarModal.kt index 9b169632..dd35db61 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/avatar/PersonaAvatarModal.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/avatar/PersonaAvatarModal.kt @@ -27,7 +27,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.route.navigationComposeBottomSheet import com.dimension.maskbook.common.route.navigationComposeBottomSheetPackage import com.dimension.maskbook.common.routeProcessor.annotations.Back @@ -37,7 +36,8 @@ import com.dimension.maskbook.common.ui.widget.button.MaskListItemButton import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.repository.IPersonaRepository import com.dimension.maskbook.persona.route.PersonaRoute -import org.koin.androidx.compose.get +import moe.tlaster.koin.compose.get +import moe.tlaster.precompose.navigation.NavController @NavGraphDestination( route = PersonaRoute.PersonaAvatarModal, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/avatar/SetAvatarScene.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/avatar/SetAvatarScene.kt index bad9c9fc..0c03d3fe 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/avatar/SetAvatarScene.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/avatar/SetAvatarScene.kt @@ -56,7 +56,7 @@ import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.utils.ImagePicker import com.dimension.maskbook.persona.viewmodel.avatar.SetAvatarViewModel import com.google.accompanist.permissions.ExperimentalPermissionsApi -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @OptIn(ExperimentalPermissionsApi::class) @NavGraphDestination( diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/post/PostScene.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/post/PostScene.kt index 1ecb11fe..e66533c0 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/post/PostScene.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/post/PostScene.kt @@ -45,7 +45,7 @@ import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.ui.widget.button.PrimaryButton import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.viewmodel.post.PostViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @OptIn(ExperimentalMaterialApi::class) @Composable diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/createidentity/CreateIdentityHost.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/createidentity/CreateIdentityHost.kt index 96ecdf9a..6270ba97 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/createidentity/CreateIdentityHost.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/createidentity/CreateIdentityHost.kt @@ -30,10 +30,9 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.encodeBase64 import com.dimension.maskbook.common.ext.getNestedNavigationViewModel -import com.dimension.maskbook.common.ext.navigate +import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks @@ -50,6 +49,7 @@ import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.DownloadQrCodeViewModel import com.dimension.maskbook.persona.viewmodel.register.CreateIdentityViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf private const val GeneratedRouteName = "createIdentityRoute" @@ -127,7 +127,7 @@ fun ConfirmRoute( PrimaryButton( modifier = Modifier.fillMaxWidth(), onClick = { - navController.navigate(Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Persona))) { + navController.navigateUri(Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Persona))) { launchSingleTop = true if (isWelcome) { popUpTo(PersonaRoute.Register.Init) { diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/local/RecoveryLocalHost.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/local/RecoveryLocalHost.kt index 49b94438..a301da12 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/local/RecoveryLocalHost.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/local/RecoveryLocalHost.kt @@ -62,7 +62,6 @@ import androidx.compose.ui.unit.dp import androidx.core.database.getLongOrNull import androidx.core.database.getStringOrNull import androidx.core.net.toFile -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.getNestedNavigationViewModel import com.dimension.maskbook.common.ext.humanizeFileSize import com.dimension.maskbook.common.ext.humanizeTimestamp @@ -94,6 +93,7 @@ import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.recovery.RecoveryLocalViewModel import kotlinx.coroutines.flow.distinctUntilChanged +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf private const val GeneratedRouteName = "recoveryLocalRoute" diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/local/VerifyPaymentPasswordModal.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/local/VerifyPaymentPasswordModal.kt index 125ca984..376f1ea8 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/local/VerifyPaymentPasswordModal.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/local/VerifyPaymentPasswordModal.kt @@ -37,7 +37,7 @@ import com.dimension.maskbook.common.ui.widget.MaskPasswordInputField import com.dimension.maskbook.common.ui.widget.button.PrimaryButton import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.viewmodel.VerifyPaymentPasswordViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @Composable fun VerifyPaymentPasswordModal( diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/remote/RemoteBackupRecoveryHost.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/remote/RemoteBackupRecoveryHost.kt index 36499622..c03b5f11 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/remote/RemoteBackupRecoveryHost.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/register/recovery/remote/RemoteBackupRecoveryHost.kt @@ -40,7 +40,6 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.navigationComposeBottomSheet import com.dimension.maskbook.common.route.navigationComposeBottomSheetPackage @@ -59,7 +58,8 @@ import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.register.EmailRemoteBackupRecoveryViewModel import com.dimension.maskbook.persona.viewmodel.register.PhoneRemoteBackupRecoveryViewModel import com.dimension.maskbook.persona.viewmodel.register.RemoteBackupRecoveryViewModelBase -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/ConnectAccountModal.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/ConnectAccountModal.kt index 878252cf..a59357b5 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/ConnectAccountModal.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/ConnectAccountModal.kt @@ -40,7 +40,6 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import coil.compose.rememberImagePainter import com.dimension.maskbook.common.ext.navigateToHome import com.dimension.maskbook.common.route.navigationComposeBottomSheet @@ -55,8 +54,9 @@ import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.model.SocialProfile import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.social.UserNameModalViewModel -import org.koin.androidx.compose.get -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.get +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/ConnectSocial.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/ConnectSocial.kt index ba965182..63fd3e97 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/ConnectSocial.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/ConnectSocial.kt @@ -20,12 +20,12 @@ */ package com.dimension.maskbook.persona.ui.scenes.social -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.navigateToExtension import com.dimension.maskbook.common.ext.toSite import com.dimension.maskbook.persona.export.model.PlatformType import com.dimension.maskbook.persona.repository.IPersonaRepository import com.dimension.maskbook.persona.route.PersonaRoute +import moe.tlaster.precompose.navigation.NavController fun connectSocial( controller: NavController, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/DisconnectSocialDialog.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/DisconnectSocialDialog.kt index 1ecd38b1..c77e5123 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/DisconnectSocialDialog.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/DisconnectSocialDialog.kt @@ -30,7 +30,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.route.navigationComposeDialog import com.dimension.maskbook.common.route.navigationComposeDialogPackage import com.dimension.maskbook.common.routeProcessor.annotations.Back @@ -44,7 +43,8 @@ import com.dimension.maskbook.persona.R import com.dimension.maskbook.persona.model.SocialProfile import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.viewmodel.social.DisconnectSocialViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController @NavGraphDestination( route = PersonaRoute.DisconnectSocial.path, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/SelectPlatformModal.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/SelectPlatformModal.kt index 6d7715e1..0b7c72dd 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/SelectPlatformModal.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/scenes/social/SelectPlatformModal.kt @@ -32,7 +32,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.route.navigationComposeBottomSheet import com.dimension.maskbook.common.route.navigationComposeBottomSheetPackage import com.dimension.maskbook.common.routeProcessor.annotations.NavGraphDestination @@ -45,7 +44,8 @@ import com.dimension.maskbook.persona.model.platform import com.dimension.maskbook.persona.model.title import com.dimension.maskbook.persona.repository.IPersonaRepository import com.dimension.maskbook.persona.route.PersonaRoute -import org.koin.androidx.compose.get +import moe.tlaster.koin.compose.get +import moe.tlaster.precompose.navigation.NavController private val items = listOf( Network.Twitter, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/tab/PersonasTabScreen.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/tab/PersonasTabScreen.kt index 452cd870..a40ec41f 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/tab/PersonasTabScreen.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/ui/tab/PersonasTabScreen.kt @@ -23,8 +23,8 @@ package com.dimension.maskbook.persona.ui.tab import android.net.Uri import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.runtime.Composable -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.navigateToExtension +import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks import com.dimension.maskbook.common.ui.tab.TabScreen @@ -35,7 +35,8 @@ import com.dimension.maskbook.persona.repository.IPersonaRepository import com.dimension.maskbook.persona.route.PersonaRoute import com.dimension.maskbook.persona.ui.scenes.PersonaScene import com.dimension.maskbook.persona.ui.scenes.social.connectSocial -import org.koin.androidx.compose.get +import moe.tlaster.koin.compose.get +import moe.tlaster.precompose.navigation.NavController class PersonasTabScreen : TabScreen { override val route = CommonRoute.Main.Tabs.Persona @@ -51,10 +52,10 @@ class PersonasTabScreen : TabScreen { navController.navigateToExtension(null) }, onPersonaCreateClick = { - navController.navigate(Uri.parse(Deeplinks.Persona.Register.WelcomeCreatePersona)) + navController.navigateUri(Uri.parse(Deeplinks.Persona.Register.WelcomeCreatePersona)) }, onPersonaRecoveryClick = { - navController.navigate(Uri.parse(Deeplinks.Persona.Recovery)) + navController.navigateUri(Uri.parse(Deeplinks.Persona.Recovery)) }, onPersonaNameClick = { navController.navigate(PersonaRoute.PersonaMenu) diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/BackUpPasswordViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/BackUpPasswordViewModel.kt index d1ea3e54..c70575a3 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/BackUpPasswordViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/BackUpPasswordViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.persona.viewmodel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.util.BiometricAuthenticator import com.dimension.maskbook.common.viewmodel.BiometricViewModel import com.dimension.maskbook.setting.export.SettingServices import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine +import moe.tlaster.precompose.viewmodel.viewModelScope class BackUpPasswordViewModel( settingsRepository: SettingServices, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/DownloadQrCodeViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/DownloadQrCodeViewModel.kt index 4f777216..2d3fb0c6 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/DownloadQrCodeViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/DownloadQrCodeViewModel.kt @@ -31,8 +31,6 @@ import android.graphics.pdf.PdfDocument import android.graphics.pdf.PdfDocument.PageInfo import android.net.Uri import android.util.Base64 -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.ext.decodeBase64 import com.dimension.maskbook.common.ext.encodeBase64 @@ -45,6 +43,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.withContext +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class DownloadQrCodeViewModel( private val idType: IdType, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/ExportPrivateKeyViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/ExportPrivateKeyViewModel.kt index 245b5b33..ab6f2164 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/ExportPrivateKeyViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/ExportPrivateKeyViewModel.kt @@ -20,12 +20,12 @@ */ package com.dimension.maskbook.persona.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.repository.IPersonaRepository import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class ExportPrivateKeyViewModel( private val repository: IPersonaRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaLogoutViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaLogoutViewModel.kt index 7056d762..bf633034 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaLogoutViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaLogoutViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.persona.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.ext.onFinished import com.dimension.maskbook.persona.repository.IPersonaRepository @@ -29,6 +27,8 @@ import com.dimension.maskbook.setting.export.SettingServices import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class PersonaLogoutViewModel( private val repository: IPersonaRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaMenuViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaMenuViewModel.kt index 99a197e6..14fc11b3 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaMenuViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaMenuViewModel.kt @@ -20,11 +20,11 @@ */ package com.dimension.maskbook.persona.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.repository.IPersonaRepository import com.dimension.maskbook.setting.export.SettingServices +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class PersonaMenuViewModel( private val repository: IPersonaRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaViewModel.kt index 19f83ce0..46fadfad 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/PersonaViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.persona.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.export.model.PersonaData import com.dimension.maskbook.persona.repository.IPersonaRepository @@ -32,6 +30,8 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class PersonaViewModel( private val personaRepository: IPersonaRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/RenamePersonaViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/RenamePersonaViewModel.kt index 40ac2bc8..43ad451e 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/RenamePersonaViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/RenamePersonaViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.persona.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.datasource.DbPersonaDataSource import com.dimension.maskbook.persona.repository.IPersonaRepository import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class RenamePersonaViewModel( private val personaRepository: IPersonaRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/SwitchPersonaViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/SwitchPersonaViewModel.kt index a8ffcbc7..1e0dec5a 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/SwitchPersonaViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/SwitchPersonaViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.persona.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.datasource.DbPersonaDataSource import com.dimension.maskbook.persona.export.model.PersonaData import com.dimension.maskbook.persona.repository.IPersonaRepository import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class SwitchPersonaViewModel( private val personaRepository: IPersonaRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/VerifyPaymentPasswordViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/VerifyPaymentPasswordViewModel.kt index a1c95699..b06b9cf5 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/VerifyPaymentPasswordViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/VerifyPaymentPasswordViewModel.kt @@ -20,12 +20,12 @@ */ package com.dimension.maskbook.persona.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.export.SettingServices import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class VerifyPaymentPasswordViewModel( settingsRepository: SettingServices, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/avatar/SetAvatarViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/avatar/SetAvatarViewModel.kt index cdaa66a3..798fe699 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/avatar/SetAvatarViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/avatar/SetAvatarViewModel.kt @@ -21,9 +21,9 @@ package com.dimension.maskbook.persona.viewmodel.avatar import android.net.Uri -import androidx.lifecycle.ViewModel import com.dimension.maskbook.persona.repository.IPersonaRepository import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.ViewModel class SetAvatarViewModel( private val repository: IPersonaRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/contacts/ContactsViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/contacts/ContactsViewModel.kt index db7946f9..ef48f338 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/contacts/ContactsViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/contacts/ContactsViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.persona.viewmodel.contacts -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.repository.IContactsRepository import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.combine +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class ContactsViewModel( repository: IContactsRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/post/PostViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/post/PostViewModel.kt index 47552932..1190eb25 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/post/PostViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/post/PostViewModel.kt @@ -20,14 +20,14 @@ */ package com.dimension.maskbook.persona.viewmodel.post -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.export.model.PersonaData import com.dimension.maskbook.persona.model.PostData import com.dimension.maskbook.persona.repository.IPersonaRepository import com.dimension.maskbook.persona.repository.IPostRepository import kotlinx.coroutines.flow.combine +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class PostViewModel( repository: IPostRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/IdentityViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/IdentityViewModel.kt index 24626243..956c9b5d 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/IdentityViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/IdentityViewModel.kt @@ -20,14 +20,14 @@ */ package com.dimension.maskbook.persona.viewmodel.recovery -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.export.PersonaServices import com.dimension.maskbook.wallet.export.WalletServices import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class IdentityViewModel( private val personaServices: PersonaServices, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/PrivateKeyViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/PrivateKeyViewModel.kt index a15d402b..7068742c 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/PrivateKeyViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/PrivateKeyViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.persona.viewmodel.recovery -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.export.PersonaServices import com.dimension.maskbook.wallet.export.WalletServices import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class PrivateKeyViewModel( private val personaServices: PersonaServices, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/RecoveryLocalViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/RecoveryLocalViewModel.kt index 1a20a952..b68d1292 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/RecoveryLocalViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/recovery/RecoveryLocalViewModel.kt @@ -22,8 +22,6 @@ package com.dimension.maskbook.persona.viewmodel.recovery import android.content.ContentResolver import android.net.Uri -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.export.BackupServices @@ -34,6 +32,8 @@ import com.dimension.maskbook.setting.export.model.BackupWrongPasswordException import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class RecoveryLocalViewModel( private val backupServices: BackupServices, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/register/CreateIdentityViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/register/CreateIdentityViewModel.kt index c99230fa..5a859451 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/register/CreateIdentityViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/register/CreateIdentityViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.persona.viewmodel.register -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.viewmodel.BaseMnemonicPhraseViewModel import com.dimension.maskbook.persona.repository.IPersonaRepository import com.dimension.maskbook.wallet.export.WalletServices import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.viewModelScope class CreateIdentityViewModel( private val personaName: String, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/register/RemoteBackupRecoveryViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/register/RemoteBackupRecoveryViewModel.kt index c13f8ab9..93a7cef6 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/register/RemoteBackupRecoveryViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/register/RemoteBackupRecoveryViewModel.kt @@ -21,14 +21,14 @@ package com.dimension.maskbook.persona.viewmodel.register import android.os.CountDownTimer -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.export.BackupServices import com.dimension.maskbook.setting.export.model.BackupFileMeta import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope import retrofit2.HttpException class PhoneRemoteBackupRecoveryViewModel( diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/social/DisconnectSocialViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/social/DisconnectSocialViewModel.kt index 8914229a..ba570b8d 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/social/DisconnectSocialViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/social/DisconnectSocialViewModel.kt @@ -20,9 +20,9 @@ */ package com.dimension.maskbook.persona.viewmodel.social -import androidx.lifecycle.ViewModel import com.dimension.maskbook.persona.model.SocialProfile import com.dimension.maskbook.persona.repository.IPersonaRepository +import moe.tlaster.precompose.viewmodel.ViewModel class DisconnectSocialViewModel( private val repository: IPersonaRepository, diff --git a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/social/UserNameModalViewModel.kt b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/social/UserNameModalViewModel.kt index 9f5dee1f..3569905d 100644 --- a/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/social/UserNameModalViewModel.kt +++ b/persona/src/androidMain/kotlin/com/dimension/maskbook/persona/viewmodel/social/UserNameModalViewModel.kt @@ -20,12 +20,12 @@ */ package com.dimension.maskbook.persona.viewmodel.social -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.model.SocialProfile import com.dimension.maskbook.persona.repository.IPersonaRepository import kotlinx.coroutines.flow.MutableStateFlow +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class UserNameModalViewModel( private val personaRepository: IPersonaRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/SettingSetup.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/SettingSetup.kt index 27f7d78e..3c879f7b 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/SettingSetup.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/SettingSetup.kt @@ -21,8 +21,6 @@ package com.dimension.maskbook.setting import android.content.Context -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder import androidx.navigation.navigation import com.dimension.maskbook.common.ModuleSetup import com.dimension.maskbook.common.retrofit.retrofit @@ -53,13 +51,15 @@ import com.dimension.maskbook.setting.viewmodel.LanguageSettingsViewModel import com.dimension.maskbook.setting.viewmodel.PaymentPasswordSettingsViewModel import com.dimension.maskbook.setting.viewmodel.PhoneBackupViewModel import com.dimension.maskbook.setting.viewmodel.PhoneSetupViewModel -import org.koin.androidx.viewmodel.dsl.viewModel +import moe.tlaster.koin.viewModel +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.navigation.RouteBuilder import org.koin.dsl.bind import org.koin.dsl.module import org.koin.mp.KoinPlatformTools object SettingSetup : ModuleSetup { - override fun NavGraphBuilder.route(navController: NavController) { + override fun RouteBuilder.route(navController: NavController) { generatedRoute(navController) navigation( startDestination = SettingRoute.BackupData.BackupLocal.Backup, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/route/BackupRoute.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/route/BackupRoute.kt index 7af9a593..1b64b3bf 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/route/BackupRoute.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/route/BackupRoute.kt @@ -48,7 +48,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.humanizeFileSize import com.dimension.maskbook.common.ext.humanizeTimestamp import com.dimension.maskbook.common.ext.observeAsState @@ -81,8 +80,9 @@ import com.dimension.maskbook.setting.viewmodel.BackupMergeConfirmViewModel import com.dimension.maskbook.setting.viewmodel.EmailBackupViewModel import com.dimension.maskbook.setting.viewmodel.PhoneBackupViewModel import kotlinx.coroutines.launch -import org.koin.androidx.compose.get -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.get +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/route/SettingsRoute.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/route/SettingsRoute.kt index a9283ace..691651e3 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/route/SettingsRoute.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/route/SettingsRoute.kt @@ -30,7 +30,6 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.navigateWithPopSelf import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.CommonRoute @@ -56,7 +55,8 @@ import com.dimension.maskbook.setting.ui.scenes.PhoneInputModal import com.dimension.maskbook.setting.viewmodel.EmailSetupViewModel import com.dimension.maskbook.setting.viewmodel.PhoneSetupViewModel import kotlinx.coroutines.launch -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController @NavGraphDestination( route = SettingRoute.SetupPasswordDialog, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/AppearanceSettings.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/AppearanceSettings.kt index 98ab1b5e..9b5923d9 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/AppearanceSettings.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/AppearanceSettings.kt @@ -31,7 +31,7 @@ import com.dimension.maskbook.common.ui.widget.MaskSelection import com.dimension.maskbook.localization.R import com.dimension.maskbook.setting.export.model.Appearance import com.dimension.maskbook.setting.viewmodel.AppearanceSettingsViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel val appearanceMap = mapOf( Appearance.default to R.string.scene_setting_detail_automatic, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/ChangeBackUpPasswordModal.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/ChangeBackUpPasswordModal.kt index 1a67b2ea..e58d6dfe 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/ChangeBackUpPasswordModal.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/ChangeBackUpPasswordModal.kt @@ -42,7 +42,7 @@ import com.dimension.maskbook.common.ui.widget.MaskPasswordInputField import com.dimension.maskbook.common.ui.widget.button.PrimaryButton import com.dimension.maskbook.localization.R import com.dimension.maskbook.setting.viewmodel.BackupPasswordSettingsViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @OptIn(ExperimentalAnimationApi::class) @Composable diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/ChangePaymentPasswordModal.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/ChangePaymentPasswordModal.kt index 87547675..46199869 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/ChangePaymentPasswordModal.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/ChangePaymentPasswordModal.kt @@ -42,7 +42,7 @@ import com.dimension.maskbook.common.ui.widget.MaskPasswordInputField import com.dimension.maskbook.common.ui.widget.button.PrimaryButton import com.dimension.maskbook.localization.R import com.dimension.maskbook.setting.viewmodel.PaymentPasswordSettingsViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @OptIn(ExperimentalAnimationApi::class) @Composable diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/DataSourceSettings.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/DataSourceSettings.kt index 8d65dd4b..808eac3c 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/DataSourceSettings.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/DataSourceSettings.kt @@ -29,7 +29,7 @@ import com.dimension.maskbook.common.ui.widget.MaskModal import com.dimension.maskbook.common.ui.widget.MaskSelection import com.dimension.maskbook.setting.export.model.DataProvider import com.dimension.maskbook.setting.viewmodel.DataSourceSettingsViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel val dataProviderMap = mapOf( DataProvider.COIN_GECKO to "CoinGecko", diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/LanguageSettings.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/LanguageSettings.kt index f9b49c07..b1a7589c 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/LanguageSettings.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/LanguageSettings.kt @@ -29,7 +29,7 @@ import com.dimension.maskbook.common.ui.widget.MaskModal import com.dimension.maskbook.common.ui.widget.MaskSelection import com.dimension.maskbook.setting.export.model.Language import com.dimension.maskbook.setting.viewmodel.LanguageSettingsViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel val languageMap = Language.values().map { it to it.value diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/SettingsScene.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/SettingsScene.kt index 02ea686f..cacc53cd 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/SettingsScene.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/SettingsScene.kt @@ -53,7 +53,6 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.Deeplinks @@ -72,8 +71,9 @@ import com.dimension.maskbook.setting.export.model.Language import com.dimension.maskbook.setting.repository.ISettingsRepository import com.dimension.maskbook.setting.route.SettingRoute import com.dimension.maskbook.wallet.export.WalletServices -import org.koin.androidx.compose.get -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.get +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController @OptIn(ExperimentalMaterialApi::class) @Composable @@ -199,7 +199,7 @@ fun SettingsScene( title = stringResource(R.string.scene_setting_backup_recovery_restore_data), icon = R.drawable.ic_settings_restore_data, onClick = { - navController.navigate(Uri.parse(Deeplinks.Persona.Recovery)) + navController.navigateUri(Uri.parse(Deeplinks.Persona.Recovery)) } ) SettingsDivider() diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/backup/BackupCloudScene.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/backup/BackupCloudScene.kt index f36d3085..92f0b858 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/backup/BackupCloudScene.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/backup/BackupCloudScene.kt @@ -50,7 +50,7 @@ import com.dimension.maskbook.common.ui.widget.button.MaskTransparentButton import com.dimension.maskbook.common.ui.widget.button.PrimaryButton import com.dimension.maskbook.localization.R import com.dimension.maskbook.setting.viewmodel.BackupCloudViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @Composable fun BackupCloudScene( diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/backup/BackupLocalScene.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/backup/BackupLocalScene.kt index 2f66d083..cd2ad416 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/backup/BackupLocalScene.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/scenes/backup/BackupLocalScene.kt @@ -45,7 +45,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.getNestedNavigationViewModel import com.dimension.maskbook.common.ext.navigateWithPopSelf import com.dimension.maskbook.common.ext.observeAsState @@ -69,6 +68,7 @@ import com.dimension.maskbook.setting.viewmodel.BackupLocalViewModel import kotlinx.coroutines.delay import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter +import moe.tlaster.precompose.navigation.NavController import kotlin.time.Duration.Companion.milliseconds private const val GeneratedRouteName = "backupLocalRoute" diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/tab/SettingsTabScreen.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/tab/SettingsTabScreen.kt index 16ba8504..d38a5426 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/tab/SettingsTabScreen.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/ui/tab/SettingsTabScreen.kt @@ -21,12 +21,12 @@ package com.dimension.maskbook.setting.ui.tab import androidx.compose.runtime.Composable -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.navigateToExtension import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.ui.tab.TabScreen import com.dimension.maskbook.setting.R import com.dimension.maskbook.setting.ui.scenes.SettingsScene +import moe.tlaster.precompose.navigation.NavController class SettingsTabScreen : TabScreen { override val route = CommonRoute.Main.Tabs.Setting diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/AppearanceSettingsViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/AppearanceSettingsViewModel.kt index 67a2bd78..559f0332 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/AppearanceSettingsViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/AppearanceSettingsViewModel.kt @@ -20,11 +20,11 @@ */ package com.dimension.maskbook.setting.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.export.model.Appearance import com.dimension.maskbook.setting.repository.ISettingsRepository +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class AppearanceSettingsViewModel( private val repository: ISettingsRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupCloudExecuteViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupCloudExecuteViewModel.kt index a292ad32..134f8552 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupCloudExecuteViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupCloudExecuteViewModel.kt @@ -20,12 +20,12 @@ */ package com.dimension.maskbook.setting.viewmodel -import androidx.lifecycle.ViewModel import com.dimension.maskbook.persona.export.PersonaServices import com.dimension.maskbook.setting.repository.BackupRepository import com.dimension.maskbook.setting.repository.ISettingsRepository import com.dimension.maskbook.setting.services.model.AccountType import kotlinx.coroutines.flow.firstOrNull +import moe.tlaster.precompose.viewmodel.ViewModel class BackupCloudExecuteViewModel( private val settingsRepository: ISettingsRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupCloudViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupCloudViewModel.kt index f9c1f0a7..520f2bf0 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupCloudViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupCloudViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.setting.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.repository.ISettingsRepository import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flow +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class BackupCloudViewModel( private val settingsRepository: ISettingsRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupLocalViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupLocalViewModel.kt index 43d2c1ec..8b6d32dc 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupLocalViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupLocalViewModel.kt @@ -21,8 +21,6 @@ package com.dimension.maskbook.setting.viewmodel import android.net.Uri -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.LocalBackupAccount import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.repository.BackupRepository @@ -32,6 +30,8 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class BackupLocalViewModel( private val repository: ISettingsRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupMergeConfirmViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupMergeConfirmViewModel.kt index 28bbe8f5..7e161eb1 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupMergeConfirmViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupMergeConfirmViewModel.kt @@ -22,14 +22,14 @@ package com.dimension.maskbook.setting.viewmodel import android.content.ContentResolver import android.net.Uri -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.repository.BackupRepository import com.dimension.maskbook.setting.repository.ISettingsRepository import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class BackupMergeConfirmViewModel( private val backupRepository: BackupRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupPasswordSettingsViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupPasswordSettingsViewModel.kt index f5055385..d4f08d6f 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupPasswordSettingsViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/BackupPasswordSettingsViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.setting.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.repository.ISettingsRepository import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class BackupPasswordSettingsViewModel( private val repository: ISettingsRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/DataSourceSettingsViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/DataSourceSettingsViewModel.kt index 68ef5041..ff781989 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/DataSourceSettingsViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/DataSourceSettingsViewModel.kt @@ -20,11 +20,11 @@ */ package com.dimension.maskbook.setting.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.export.model.DataProvider import com.dimension.maskbook.setting.repository.ISettingsRepository +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class DataSourceSettingsViewModel( private val repository: ISettingsRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/EmailBackupViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/EmailBackupViewModel.kt index 3e6e5714..e17d1536 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/EmailBackupViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/EmailBackupViewModel.kt @@ -20,7 +20,6 @@ */ package com.dimension.maskbook.setting.viewmodel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.defaultRegionCode @@ -31,6 +30,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.viewModelScope import retrofit2.HttpException class EmailBackupViewModel( diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/EmailSetupViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/EmailSetupViewModel.kt index 6a330fad..67cc8551 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/EmailSetupViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/EmailSetupViewModel.kt @@ -20,7 +20,6 @@ */ package com.dimension.maskbook.setting.viewmodel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.defaultRegionCode @@ -31,6 +30,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.viewModelScope class EmailSetupViewModel( private val settingsRepository: ISettingsRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/LanguageSettingsViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/LanguageSettingsViewModel.kt index d787629a..aab1b534 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/LanguageSettingsViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/LanguageSettingsViewModel.kt @@ -20,11 +20,11 @@ */ package com.dimension.maskbook.setting.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.export.model.Language import com.dimension.maskbook.setting.repository.ISettingsRepository +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class LanguageSettingsViewModel( private val repository: ISettingsRepository diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/PaymentPasswordSettingsViewModel.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/PaymentPasswordSettingsViewModel.kt index 1ea76091..28bcddb3 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/PaymentPasswordSettingsViewModel.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/PaymentPasswordSettingsViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.setting.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.repository.ISettingsRepository import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class PaymentPasswordSettingsViewModel( private val repository: ISettingsRepository, diff --git a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/base/RemoteBackupRecoveryViewModelBase.kt b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/base/RemoteBackupRecoveryViewModelBase.kt index 1dc1af54..3de8815e 100644 --- a/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/base/RemoteBackupRecoveryViewModelBase.kt +++ b/setting/src/androidMain/kotlin/com/dimension/maskbook/setting/viewmodel/base/RemoteBackupRecoveryViewModelBase.kt @@ -20,14 +20,14 @@ */ package com.dimension.maskbook.setting.viewmodel.base -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.defaultCountDownTime import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope import kotlin.time.Duration.Companion.seconds abstract class RemoteBackupRecoveryViewModelBase : ViewModel() { diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/WalletSetup.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/WalletSetup.kt index af3d64e3..f174f163 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/WalletSetup.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/WalletSetup.kt @@ -22,8 +22,6 @@ package com.dimension.maskbook.wallet import android.content.Context import androidx.compose.animation.ExperimentalAnimationApi -import androidx.navigation.NavController -import androidx.navigation.NavGraphBuilder import androidx.room.Room import com.dimension.maskbook.common.ModuleSetup import com.dimension.maskbook.common.ui.tab.TabScreen @@ -113,7 +111,9 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.asExecutor import kotlinx.coroutines.launch -import org.koin.androidx.viewmodel.dsl.viewModel +import moe.tlaster.koin.viewModel +import moe.tlaster.precompose.navigation.NavController +import moe.tlaster.precompose.navigation.RouteBuilder import org.koin.core.module.Module import org.koin.dsl.bind import org.koin.dsl.module @@ -123,7 +123,7 @@ import com.dimension.maskbook.wallet.export.WalletServices as ExportWalletServic object WalletSetup : ModuleSetup { @OptIn(ExperimentalAnimationApi::class) - override fun NavGraphBuilder.route(navController: NavController) { + override fun RouteBuilder.route(navController: NavController) { generatedRoute(navController) navigation( startDestination = WalletRoute.Transfer.SearchAddress.path, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/route/WalletsRoute.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/route/WalletsRoute.kt index 5a6ca308..a67d453c 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/route/WalletsRoute.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/route/WalletsRoute.kt @@ -37,9 +37,9 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.buildAnnotatedString -import androidx.navigation.NavController -import androidx.navigation.navOptions import com.dimension.maskbook.common.bigDecimal.BigDecimal +import com.dimension.maskbook.common.ext.navigateUri +import com.dimension.maskbook.common.ext.navigateWithPopSelf import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.ext.openUrl import com.dimension.maskbook.common.ext.shareText @@ -99,8 +99,9 @@ import com.dimension.maskbook.wallet.viewmodel.wallets.management.WalletRenameVi import com.dimension.maskbook.wallet.viewmodel.wallets.management.WalletSwitchEditViewModel import com.dimension.maskbook.wallet.viewmodel.wallets.management.WalletSwitchViewModel import com.dimension.maskbook.wallet.viewmodel.wallets.management.WalletTransactionHistoryViewModel -import org.koin.androidx.compose.get -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.get +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( @@ -566,15 +567,14 @@ fun WalletManagementRename( onNameChanged = { viewModel.setName(it) }, onDone = { viewModel.confirm() - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Wallet)), - navOptions { - launchSingleTop = true - popUpTo(CommonRoute.Main.Home.path) { - inclusive = false - } + ) { + launchSingleTop = true + popUpTo(CommonRoute.Main.Home.path) { + inclusive = false } - ) + } }, ) } @@ -598,15 +598,7 @@ internal fun navigateWalletCreate( } else { WalletRoute.CreateOrImportWallet(type.name) } - navController.navigate( - route, - navOptions { - navController.currentDestination?.id?.let { popId -> - popUpTo(popId) { inclusive = true } - } - launchSingleTop = true - } - ) + navController.navigateWithPopSelf(route, launchSingleTop = true) } @NavGraphDestination( @@ -639,15 +631,7 @@ fun WalletIntroHostLegal( } else { WalletRoute.CreateOrImportWallet(type.name) } - navController.navigate( - route, - navOptions { - navController.currentDestination?.id?.let { popId -> - popUpTo(popId) { inclusive = true } - } - launchSingleTop = true - } - ) + navController.navigateWithPopSelf(route, launchSingleTop = true) }, onBrowseAgreement = { context.startActivity( @@ -871,25 +855,19 @@ fun UnlockWalletDialog( viewModel.authenticate( context = context, onSuccess = { - navController.navigate( - target, - navOptions { - popUpTo(WalletRoute.UnlockWalletDialog.path) { - inclusive = true - } + navController.navigate(target) { + popUpTo(WalletRoute.UnlockWalletDialog.path) { + inclusive = true } - ) + } } ) } else if (passwordValid) { - navController.navigate( - target, - navOptions { - popUpTo(WalletRoute.UnlockWalletDialog.path) { - inclusive = true - } + navController.navigate(target) { + popUpTo(WalletRoute.UnlockWalletDialog.path) { + inclusive = true } - ) + } } } ) @@ -910,7 +888,7 @@ fun EmptyTokenDialogRoute( tokenSymbol = tokenSymbol, onCancel = onBack, onBuy = { - navController.navigate(deepLink = Uri.parse(Deeplinks.Labs.Transak)) + navController.navigateUri(Uri.parse(Deeplinks.Labs.Transak)) } ) } diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/CreateOrImportWalletScene.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/CreateOrImportWalletScene.kt index 9976d21d..c25268ac 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/CreateOrImportWalletScene.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/CreateOrImportWalletScene.kt @@ -44,7 +44,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.navigateToHome import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.navigationComposeDialog @@ -65,7 +64,8 @@ import com.dimension.maskbook.wallet.R import com.dimension.maskbook.wallet.repository.IWalletRepository import com.dimension.maskbook.wallet.route.WalletRoute import com.dimension.maskbook.wallet.viewmodel.wallets.create.CreateWalletRecoveryKeyViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @Composable diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/create/CreateWalletHost.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/create/CreateWalletHost.kt index 5373e4cb..4e442fc8 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/create/CreateWalletHost.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/create/CreateWalletHost.kt @@ -34,9 +34,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.navigation.NavController -import androidx.navigation.navOptions import com.dimension.maskbook.common.ext.getNestedNavigationViewModel +import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks @@ -55,6 +54,7 @@ import com.dimension.maskbook.wallet.repository.WalletCreateOrImportResult import com.dimension.maskbook.wallet.route.WalletRoute import com.dimension.maskbook.wallet.ui.scenes.wallets.common.Dialog import com.dimension.maskbook.wallet.viewmodel.wallets.create.CreateWalletRecoveryKeyViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf private const val GeneratedRouteName = "createWalletRoute" @@ -159,15 +159,14 @@ fun ConfirmRoute( ) { val onDone = remember { { - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Wallet)), - navOptions = navOptions { - launchSingleTop = true - popUpTo(CommonRoute.Main.Home.path) { - inclusive = false - } + ) { + launchSingleTop = true + popUpTo(CommonRoute.Main.Home.path) { + inclusive = false } - ) + } } } MaskDialog( diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletDerivationPathScene.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletDerivationPathScene.kt index 4880a2ed..a7eebe9e 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletDerivationPathScene.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletDerivationPathScene.kt @@ -57,8 +57,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import androidx.navigation.navOptions +import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks @@ -86,7 +85,8 @@ import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.HorizontalPager import com.google.accompanist.pager.rememberPagerState import kotlinx.coroutines.launch -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf typealias DerivationPathItem = ImportWalletDerivationPathViewModel.BalanceRow @@ -217,15 +217,14 @@ fun ImportWalletDerivationPathScene( it.Dialog(onDismissRequest = { showDialog = false if (it.type == WalletCreateOrImportResult.Type.SUCCESS) { - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Wallet)), - navOptions = navOptions { - launchSingleTop = true - popUpTo(CommonRoute.Main.Home.path) { - inclusive = false - } + ) { + launchSingleTop = true + popUpTo(CommonRoute.Main.Home.path) { + inclusive = false } - ) + } } result = null }) diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletKeystoreScene.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletKeystoreScene.kt index 1afbbeaa..9d0350a0 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletKeystoreScene.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletKeystoreScene.kt @@ -38,8 +38,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import androidx.navigation.navOptions +import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks @@ -61,7 +60,8 @@ import com.dimension.maskbook.wallet.repository.WalletCreateOrImportResult import com.dimension.maskbook.wallet.route.WalletRoute import com.dimension.maskbook.wallet.ui.scenes.wallets.common.Dialog import com.dimension.maskbook.wallet.viewmodel.wallets.import.ImportWalletKeystoreViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( @@ -117,7 +117,10 @@ fun ImportWalletKeyStoreScene( } ) Spacer(modifier = Modifier.height(16.dp)) - Text(text = stringResource(R.string.scene_wallet_delete_password), style = MaterialTheme.typography.body1) + Text( + text = stringResource(R.string.scene_wallet_delete_password), + style = MaterialTheme.typography.body1 + ) Spacer(modifier = Modifier.height(8.dp)) MaskPasswordInputField( value = password, @@ -133,15 +136,14 @@ fun ImportWalletKeyStoreScene( onClick = { viewModel.confirm { if (it.type == WalletCreateOrImportResult.Type.SUCCESS) { - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Wallet)), - navOptions = navOptions { - launchSingleTop = true - popUpTo(CommonRoute.Main.Home.path) { - inclusive = false - } + ) { + launchSingleTop = true + popUpTo(CommonRoute.Main.Home.path) { + inclusive = false } - ) + } } else { result = it showDialog = true diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletMnemonicScene.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletMnemonicScene.kt index 0362ba7c..de69691d 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletMnemonicScene.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletMnemonicScene.kt @@ -44,7 +44,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.navigationComposeAnimComposable import com.dimension.maskbook.common.route.navigationComposeAnimComposablePackage @@ -63,7 +62,8 @@ import com.dimension.maskbook.wallet.repository.WalletCreateOrImportResult import com.dimension.maskbook.wallet.route.WalletRoute import com.dimension.maskbook.wallet.ui.scenes.wallets.common.Dialog import com.dimension.maskbook.wallet.viewmodel.wallets.import.ImportWalletMnemonicViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletPrivateKeyScene.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletPrivateKeyScene.kt index 00dbfee8..7cc22c2b 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletPrivateKeyScene.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/create/import/ImportWalletPrivateKeyScene.kt @@ -37,8 +37,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import androidx.navigation.navOptions +import com.dimension.maskbook.common.ext.navigateUri import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.route.Deeplinks @@ -59,7 +58,8 @@ import com.dimension.maskbook.wallet.repository.WalletCreateOrImportResult import com.dimension.maskbook.wallet.route.WalletRoute import com.dimension.maskbook.wallet.ui.scenes.wallets.common.Dialog import com.dimension.maskbook.wallet.viewmodel.wallets.import.ImportWalletPrivateKeyViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf @NavGraphDestination( @@ -119,15 +119,14 @@ fun ImportWalletPrivateKeyScene( onClick = { viewModel.confirm { if (it.type == WalletCreateOrImportResult.Type.SUCCESS) { - navController.navigate( + navController.navigateUri( Uri.parse(Deeplinks.Main.Home(CommonRoute.Main.Tabs.Wallet)), - navOptions = navOptions { - launchSingleTop = true - popUpTo(CommonRoute.Main.Home.path) { - inclusive = false - } + ) { + launchSingleTop = true + popUpTo(CommonRoute.Main.Home.path) { + inclusive = false } - ) + } } else { result = it showDialog = true diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/WalletIntroHost.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/WalletIntroHost.kt index 4d56c6bc..8e0b3546 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/WalletIntroHost.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/WalletIntroHost.kt @@ -26,7 +26,6 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.buildAnnotatedString -import androidx.navigation.NavController import androidx.paging.compose.collectAsLazyPagingItems import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.viewmodel.BiometricEnableViewModel @@ -39,8 +38,9 @@ import com.dimension.maskbook.wallet.ui.scenes.wallets.management.WalletBalances import com.dimension.maskbook.wallet.viewmodel.wallets.WalletBalancesViewModel import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi import com.google.accompanist.swiperefresh.rememberSwipeRefreshState -import org.koin.androidx.compose.get -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.get +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController @ExperimentalMaterialNavigationApi @Composable diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/password/BiometricsEnableScene.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/password/BiometricsEnableScene.kt index 1b2c85e4..c61a3d33 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/password/BiometricsEnableScene.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/password/BiometricsEnableScene.kt @@ -46,7 +46,7 @@ import com.dimension.maskbook.common.ui.widget.button.PrimaryButton import com.dimension.maskbook.common.ui.widget.button.SecondaryButton import com.dimension.maskbook.common.viewmodel.BiometricEnableViewModel import com.dimension.maskbook.wallet.R -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @Composable fun BiometricsEnableScene( diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/password/TouchIdEnableScene.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/password/TouchIdEnableScene.kt index af5185eb..3842c70c 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/password/TouchIdEnableScene.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/intro/password/TouchIdEnableScene.kt @@ -45,7 +45,7 @@ import com.dimension.maskbook.common.ui.widget.button.PrimaryButton import com.dimension.maskbook.common.ui.widget.button.SecondaryButton import com.dimension.maskbook.wallet.R import com.dimension.maskbook.wallet.viewmodel.wallets.TouchIdEnableViewModel -import org.koin.androidx.compose.get +import moe.tlaster.koin.compose.get @Composable fun TouchIdEnableScene( diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/send/SendTokenConfirmModal.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/send/SendTokenConfirmModal.kt index 67cc70f3..994bdbfb 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/send/SendTokenConfirmModal.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/send/SendTokenConfirmModal.kt @@ -24,11 +24,11 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalContext -import androidx.navigation.NavController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.dialog import androidx.navigation.compose.rememberNavController +import com.dimension.maskbook.common.bigDecimal.BigDecimal import com.dimension.maskbook.common.ext.decodeJson import com.dimension.maskbook.common.ext.fromHexString import com.dimension.maskbook.common.ext.humanizeDollar @@ -52,9 +52,9 @@ import com.dimension.maskbook.wallet.ui.scenes.wallets.UnlockWalletDialog import com.dimension.maskbook.wallet.viewmodel.wallets.UnlockWalletViewModel import com.dimension.maskbook.wallet.viewmodel.wallets.send.GasFeeViewModel import com.dimension.maskbook.wallet.viewmodel.wallets.send.Web3TransactionConfirmViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf -import java.math.BigDecimal @NavGraphDestination( route = WalletRoute.SendTokenConfirm.path, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/send/TranserHost.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/send/TranserHost.kt index 9b65e1a8..d44b5a26 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/send/TranserHost.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/send/TranserHost.kt @@ -30,7 +30,6 @@ import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.buildAnnotatedString -import androidx.navigation.NavController import androidx.paging.compose.collectAsLazyPagingItems import com.dimension.maskbook.common.bigDecimal.BigDecimal import com.dimension.maskbook.common.ext.getNestedNavigationViewModel @@ -60,7 +59,8 @@ import com.dimension.maskbook.wallet.viewmodel.wallets.send.SearchAddressViewMod import com.dimension.maskbook.wallet.viewmodel.wallets.send.SearchTradableViewModel import com.dimension.maskbook.wallet.viewmodel.wallets.send.SendConfirmViewModel import com.dimension.maskbook.wallet.viewmodel.wallets.send.TransferDetailViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf private const val GeneratedRouteName = "transferRoute" diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/walletconnect/WalletConnectModal.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/walletconnect/WalletConnectModal.kt index eb24e92c..9252e455 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/walletconnect/WalletConnectModal.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/scenes/wallets/walletconnect/WalletConnectModal.kt @@ -72,11 +72,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import androidx.navigation.NavController import androidx.navigation.NavType import androidx.navigation.compose.dialog import androidx.navigation.navArgument -import androidx.navigation.navOptions import coil.compose.rememberImagePainter import com.dimension.maskbook.common.ext.observeAsState import com.dimension.maskbook.common.ui.barcode.rememberBarcodeBitmap @@ -101,7 +99,8 @@ import com.google.accompanist.navigation.animation.composable import com.google.accompanist.navigation.animation.rememberAnimatedNavController import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel +import moe.tlaster.precompose.navigation.NavController import org.koin.core.parameter.parametersOf enum class WalletConnectType { @@ -118,14 +117,13 @@ fun WalletConnectModal(rootNavController: NavController) { scope.launch(Dispatchers.Main) { when (result) { is WalletConnectResult.Success -> { - if (result.switchNetwork) rootNavController.navigate( - WalletRoute.WalletNetworkSwitchWarningDialog, - navOptions { + if (result.switchNetwork) { + rootNavController.navigate(WalletRoute.WalletNetworkSwitchWarningDialog) { popUpTo(WalletRoute.SwitchWalletAddWalletConnect) { inclusive = true } } - ) else rootNavController.popBackStack() + } else rootNavController.popBackStack() } is WalletConnectResult.UnSupportedNetwork -> navController.navigate("WalletConnectUnsupportedNetwork/${result.network}") WalletConnectResult.Failed -> navController.navigate("WalletConnectFailed") diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/tab/WalletTabScreen.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/tab/WalletTabScreen.kt index c0da0f93..92e1a366 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/tab/WalletTabScreen.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/tab/WalletTabScreen.kt @@ -21,12 +21,12 @@ package com.dimension.maskbook.wallet.ui.tab import androidx.compose.runtime.Composable -import androidx.navigation.NavController import com.dimension.maskbook.common.route.CommonRoute import com.dimension.maskbook.common.ui.tab.TabScreen import com.dimension.maskbook.wallet.R import com.dimension.maskbook.wallet.ui.scenes.wallets.intro.WalletIntroHost import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi +import moe.tlaster.precompose.navigation.NavController class WalletTabScreen : TabScreen { override val route = CommonRoute.Main.Tabs.Wallet diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/widget/CollectibleCollectionCard.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/widget/CollectibleCollectionCard.kt index 5235da36..07b2e357 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/widget/CollectibleCollectionCard.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/ui/widget/CollectibleCollectionCard.kt @@ -60,7 +60,7 @@ import com.dimension.maskbook.wallet.R import com.dimension.maskbook.wallet.export.model.WalletCollectibleCollectionData import com.dimension.maskbook.wallet.export.model.WalletCollectibleData import com.dimension.maskbook.wallet.viewmodel.wallets.collectible.CollectiblesViewModel -import org.koin.androidx.compose.getViewModel +import moe.tlaster.koin.compose.getViewModel @OptIn(ExperimentalMaterialApi::class) @Composable diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/WelcomeViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/WelcomeViewModel.kt index a8d4ba07..20c8e642 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/WelcomeViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/WelcomeViewModel.kt @@ -20,11 +20,11 @@ */ package com.dimension.maskbook.wallet.viewmodel -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.persona.export.PersonaServices import kotlinx.coroutines.flow.MutableStateFlow +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class WelcomeViewModel( private val personaServices: PersonaServices, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/TokenDetailViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/TokenDetailViewModel.kt index 61cd4ac8..c7a258a8 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/TokenDetailViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/TokenDetailViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.util.DateUtils import com.dimension.maskbook.wallet.repository.ITokenRepository @@ -33,6 +31,8 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class TokenDetailViewModel( private val id: String, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/TouchIdEnableViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/TouchIdEnableViewModel.kt index 1ef59f6a..9dcac7c8 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/TouchIdEnableViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/TouchIdEnableViewModel.kt @@ -20,7 +20,7 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets -import androidx.lifecycle.ViewModel +import moe.tlaster.precompose.viewmodel.ViewModel class TouchIdEnableViewModel : ViewModel() { fun enable(onEnable: () -> Unit) { diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/UnlockWalletViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/UnlockWalletViewModel.kt index dfdd2ce9..4fd6240b 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/UnlockWalletViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/UnlockWalletViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.util.BiometricAuthenticator import com.dimension.maskbook.common.viewmodel.BiometricViewModel import com.dimension.maskbook.setting.export.SettingServices import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine +import moe.tlaster.precompose.viewmodel.viewModelScope class UnlockWalletViewModel( settingsRepository: SettingServices, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletBalancesViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletBalancesViewModel.kt index 2ac87c89..cc661a11 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletBalancesViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletBalancesViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.bigDecimal.BigDecimal import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.ext.humanizeDollar @@ -47,6 +45,8 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class WalletBalancesViewModel( private val repository: IWalletRepository, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletConnectManagementViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletConnectManagementViewModel.kt index be0f9305..1c2eafef 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletConnectManagementViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletConnectManagementViewModel.kt @@ -20,12 +20,12 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.wallet.export.model.WalletData import com.dimension.maskbook.wallet.repository.IWalletRepository import com.dimension.maskbook.wallet.walletconnect.WalletConnectClientManager import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class WalletConnectManagementViewModel( private val manager: WalletConnectClientManager, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletManagementModalViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletManagementModalViewModel.kt index 50e926b9..4bb419e5 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletManagementModalViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/WalletManagementModalViewModel.kt @@ -20,10 +20,10 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.repository.IWalletRepository +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class WalletManagementModalViewModel( private val repository: IWalletRepository, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/collectible/CollectibleDetailViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/collectible/CollectibleDetailViewModel.kt index 66d798de..d715a0ae 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/collectible/CollectibleDetailViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/collectible/CollectibleDetailViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.collectible -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.util.DateUtils import com.dimension.maskbook.wallet.repository.ICollectibleRepository @@ -33,6 +31,8 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.flatMapLatest +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class CollectibleDetailViewModel( private val id: String, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/collectible/CollectiblesViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/collectible/CollectiblesViewModel.kt index 5ffdaa30..0af6c869 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/collectible/CollectiblesViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/collectible/CollectiblesViewModel.kt @@ -20,7 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.collectible -import androidx.lifecycle.ViewModel import androidx.paging.PagingData import com.dimension.maskbook.wallet.export.model.WalletCollectibleData import com.dimension.maskbook.wallet.repository.ICollectibleRepository @@ -29,6 +28,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.mapNotNull +import moe.tlaster.precompose.viewmodel.ViewModel class CollectiblesViewModel( private val repository: ICollectibleRepository, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/create/CreateWalletRecoveryKeyViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/create/CreateWalletRecoveryKeyViewModel.kt index 7fca6f99..b197aa58 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/create/CreateWalletRecoveryKeyViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/create/CreateWalletRecoveryKeyViewModel.kt @@ -20,7 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.create -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.viewmodel.BaseMnemonicPhraseViewModel import com.dimension.maskbook.wallet.db.model.CoinPlatformType @@ -29,6 +28,7 @@ import com.dimension.maskbook.wallet.repository.WalletCreateOrImportResult import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.viewModelScope import java.util.UUID class CreateWalletRecoveryKeyViewModel( diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletDerivationPathViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletDerivationPathViewModel.kt index c96f1d7b..4deff364 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletDerivationPathViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletDerivationPathViewModel.kt @@ -21,8 +21,6 @@ package com.dimension.maskbook.wallet.viewmodel.wallets.import import androidx.compose.runtime.snapshots.SnapshotStateMap -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.db.model.CoinPlatformType import com.dimension.maskbook.wallet.repository.IWalletRepository @@ -37,6 +35,8 @@ import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class ImportWalletDerivationPathViewModel( private val wallet: String, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletKeystoreViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletKeystoreViewModel.kt index 8286c73f..6be9cc01 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletKeystoreViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletKeystoreViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.import -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.db.model.CoinPlatformType import com.dimension.maskbook.wallet.repository.IWalletRepository @@ -33,6 +31,8 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class ImportWalletKeystoreViewModel( private val wallet: String, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletMnemonicViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletMnemonicViewModel.kt index d0046050..9ecd2ca9 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletMnemonicViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletMnemonicViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.import -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.export.model.WalletData import com.dimension.maskbook.wallet.repository.IWalletRepository @@ -30,6 +28,8 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope import java.util.UUID class ImportWalletMnemonicViewModel( diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletPrivateKeyViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletPrivateKeyViewModel.kt index 8388eacc..5571fdae 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletPrivateKeyViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/import/ImportWalletPrivateKeyViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.import -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.db.model.CoinPlatformType import com.dimension.maskbook.wallet.repository.IWalletRepository @@ -30,6 +28,8 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class ImportWalletPrivateKeyViewModel( private val wallet: String, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletBackupViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletBackupViewModel.kt index 0f2d3069..1c662224 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletBackupViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletBackupViewModel.kt @@ -20,11 +20,11 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.management -import androidx.lifecycle.ViewModel import com.dimension.maskbook.setting.export.SettingServices import com.dimension.maskbook.wallet.repository.IWalletRepository import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.mapNotNull +import moe.tlaster.precompose.viewmodel.ViewModel class WalletBackupViewModel( private val repository: IWalletRepository, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletDeleteViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletDeleteViewModel.kt index c6e5d770..6609043e 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletDeleteViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletDeleteViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.management -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.setting.export.SettingServices import com.dimension.maskbook.wallet.repository.IWalletRepository @@ -29,6 +27,8 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class WalletDeleteViewModel( private val id: String, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletRenameViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletRenameViewModel.kt index 91a822de..ca2f3331 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletRenameViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletRenameViewModel.kt @@ -20,11 +20,11 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.management -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.repository.IWalletRepository import kotlinx.coroutines.flow.MutableStateFlow +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class WalletRenameViewModel( private val walletId: String, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletSwitchEditViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletSwitchEditViewModel.kt index 535e0a25..11abb16b 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletSwitchEditViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletSwitchEditViewModel.kt @@ -20,10 +20,10 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.management -import androidx.lifecycle.ViewModel import com.dimension.maskbook.wallet.repository.IWalletRepository import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.ViewModel class WalletSwitchEditViewModel( private val id: String, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletSwitchViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletSwitchViewModel.kt index e2dcca4f..d161a859 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletSwitchViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletSwitchViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.management -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.export.model.ChainType import com.dimension.maskbook.wallet.export.model.WalletData @@ -29,6 +27,8 @@ import com.dimension.maskbook.wallet.repository.IWalletRepository import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class WalletSwitchViewModel( private val walletRepository: IWalletRepository diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletTransactionHistoryViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletTransactionHistoryViewModel.kt index 711ca4c9..8f865108 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletTransactionHistoryViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/management/WalletTransactionHistoryViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.management -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.util.DateUtils import com.dimension.maskbook.wallet.repository.ITransactionRepository @@ -30,6 +28,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class WalletTransactionHistoryViewModel( private val repository: IWalletRepository, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/AddContactViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/AddContactViewModel.kt index 4606116c..0ccfcd90 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/AddContactViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/AddContactViewModel.kt @@ -20,13 +20,13 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.send -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.ext.onFinished import com.dimension.maskbook.wallet.usecase.AddContactUseCase import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class AddContactViewModel( private val addContact: AddContactUseCase, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/GasFeeViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/GasFeeViewModel.kt index c5e1d9c3..c3babc70 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/GasFeeViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/GasFeeViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.send -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.ext.humanizeMinutes import com.dimension.maskbook.common.ext.onFinished @@ -42,6 +40,8 @@ import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope import java.math.BigDecimal class GasFeeViewModel( diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SearchAddressViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SearchAddressViewModel.kt index f3d6d9e2..cf1f618a 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SearchAddressViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SearchAddressViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.send -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.Validator import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.export.model.ChainType @@ -37,6 +35,8 @@ import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope sealed class EnsData { object Loading : EnsData() diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SearchTradableViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SearchTradableViewModel.kt index 3b861e1b..75769a5d 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SearchTradableViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SearchTradableViewModel.kt @@ -20,14 +20,14 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.send -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.usecase.GetWalletCollectibleCollectionsUseCase import com.dimension.maskbook.wallet.usecase.GetWalletTokensUseCase import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class SearchTradableViewModel( getWalletTokens: GetWalletTokensUseCase, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SendConfirmViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SendConfirmViewModel.kt index 253fa0c6..c621c1cd 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SendConfirmViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/SendConfirmViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.send -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.bigDecimal.BigDecimal import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.ext.onFinished @@ -35,6 +33,8 @@ import com.dimension.maskbook.wallet.usecase.SendWalletCollectibleUseCase import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class SendConfirmViewModel( private val toAddress: String, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/TransferDetailViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/TransferDetailViewModel.kt index 9b037362..9f0e8c98 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/TransferDetailViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/TransferDetailViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.send -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.export.model.TradableData import com.dimension.maskbook.wallet.export.model.WalletCollectibleData @@ -38,6 +36,8 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope import java.math.BigDecimal class TransferDetailViewModel( diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/Web3TransactionConfirmViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/Web3TransactionConfirmViewModel.kt index 576bfcfa..fa35c409 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/Web3TransactionConfirmViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/send/Web3TransactionConfirmViewModel.kt @@ -20,8 +20,6 @@ */ package com.dimension.maskbook.wallet.viewmodel.wallets.send -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.bigDecimal.BigDecimal import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.common.ext.onFinished @@ -43,6 +41,8 @@ import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope class Web3TransactionConfirmViewModel( private val data: SendTransactionData, diff --git a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/walletconnect/WalletConnectViewModel.kt b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/walletconnect/WalletConnectViewModel.kt index 2e84409e..c580c6f4 100644 --- a/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/walletconnect/WalletConnectViewModel.kt +++ b/wallet/src/androidMain/kotlin/com/dimension/maskbook/wallet/viewmodel/wallets/walletconnect/WalletConnectViewModel.kt @@ -26,8 +26,6 @@ import android.content.pm.PackageManager import android.content.pm.PackageManager.MATCH_DEFAULT_ONLY import android.content.pm.ResolveInfo import android.net.Uri -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.dimension.maskbook.common.ext.asStateIn import com.dimension.maskbook.wallet.db.model.CoinPlatformType import com.dimension.maskbook.wallet.export.model.ChainType @@ -41,6 +39,8 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import moe.tlaster.precompose.viewmodel.ViewModel +import moe.tlaster.precompose.viewmodel.viewModelScope sealed class WalletConnectResult { data class Success(val switchNetwork: Boolean = false) : WalletConnectResult()