perf: rm hilt
Some checks are pending
Build-Apk / build (push) Waiting to run

This commit is contained in:
lisonge 2024-08-19 00:24:04 +08:00
parent b4474f5041
commit dbc4a28e08
31 changed files with 65 additions and 108 deletions

View File

@ -44,7 +44,6 @@ plugins {
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.google.ksp)
alias(libs.plugins.google.hilt)
alias(libs.plugins.rikka.refine)
}
@ -243,10 +242,6 @@ dependencies {
implementation(libs.destinations.core)
ksp(libs.destinations.ksp)
implementation(libs.google.hilt.android)
ksp(libs.google.hilt.android.compiler)
implementation(libs.androidx.hilt.navigation.compose)
implementation(libs.reorderable)
implementation(libs.androidx.splashscreen)

View File

@ -8,7 +8,6 @@ import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.Utils
import com.hjq.toast.Toaster
import com.tencent.mmkv.MMKV
import dagger.hilt.android.HiltAndroidApp
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.MainScope
import li.songe.gkd.debug.clearHttpSubs
@ -38,7 +37,6 @@ val applicationInfo by lazy {
val channel by lazy { applicationInfo.metaData.getString("channel") }
@HiltAndroidApp
class App : Application() {
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)

View File

@ -14,7 +14,6 @@ import com.blankj.utilcode.util.ServiceUtils
import com.dylanc.activityresult.launcher.PickContentLauncher
import com.dylanc.activityresult.launcher.StartActivityLauncher
import com.ramcosta.composedestinations.DestinationsNavHost
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.update
@ -42,7 +41,6 @@ import li.songe.gkd.util.launchTry
import li.songe.gkd.util.map
import li.songe.gkd.util.storeFlow
@AndroidEntryPoint
class MainActivity : CompositionActivity({
this as MainActivity
useLifeCycleLog()
@ -120,7 +118,8 @@ class MainActivity : CompositionActivity({
activityVisibleFlow.update { it - 1 }
}
var lastBackPressedTime = 0L
private var lastBackPressedTime = 0L
@Suppress("OVERRIDE_DEPRECATION")
override fun onBackPressed() {
// onBackPressedDispatcher.addCallback is not work, it will be covered by compose navigation

View File

@ -29,8 +29,8 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.paging.compose.collectAsLazyPagingItems
import androidx.paging.compose.itemKey
import com.ramcosta.composedestinations.annotation.Destination
@ -52,7 +52,7 @@ import li.songe.gkd.util.throttle
fun ActivityLogPage() {
val context = LocalContext.current as MainActivity
val mainVm = context.mainVm
val vm = hiltViewModel<ActivityLogVm>()
val vm = viewModel<ActivityLogVm>()
val navController = LocalNavController.current
val logCount by vm.logCountFlow.collectAsState()

View File

@ -1,19 +1,15 @@
package li.songe.gkd.ui
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.cachedIn
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.stateIn
import li.songe.gkd.db.DbSet
import javax.inject.Inject
@HiltViewModel
class ActivityLogVm @Inject constructor(stateHandle: SavedStateHandle) : ViewModel() {
class ActivityLogVm : ViewModel() {
val pagingDataFlow = Pager(PagingConfig(pageSize = 100)) { DbSet.activityLogDao.pagingSource() }
.flow.cachedIn(viewModelScope)

View File

@ -52,8 +52,8 @@ import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.core.content.ContextCompat
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.blankj.utilcode.util.LogUtils
import com.dylanc.activityresult.launcher.launchForResult
import com.ramcosta.composedestinations.annotation.Destination
@ -107,7 +107,7 @@ import rikka.shizuku.Shizuku
@Composable
fun AdvancedPage() {
val context = LocalContext.current as MainActivity
val vm = hiltViewModel<AdvancedVm>()
val vm = viewModel<AdvancedVm>()
val launcher = LocalLauncher.current
val navController = LocalNavController.current
val store by storeFlow.collectAsState()

View File

@ -2,16 +2,13 @@ package li.songe.gkd.ui
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.stateIn
import li.songe.gkd.db.DbSet
import li.songe.gkd.ui.component.UploadOptions
import javax.inject.Inject
@HiltViewModel
class AdvancedVm @Inject constructor() : ViewModel() {
class AdvancedVm : ViewModel() {
val snapshotCountFlow =
DbSet.snapshotDao.count().stateIn(viewModelScope, SharingStarted.Eagerly, 0)

View File

@ -46,8 +46,8 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
import com.ramcosta.composedestinations.navigation.navigate
@ -80,7 +80,7 @@ import li.songe.gkd.util.throttle
@Composable
fun AppConfigPage(appId: String) {
val navController = LocalNavController.current
val vm = hiltViewModel<AppConfigVm>()
val vm = viewModel<AppConfigVm>()
val ruleSortType by vm.ruleSortTypeFlow.collectAsState()
val appInfoCache by appInfoCacheFlow.collectAsState()
val appInfo = appInfoCache[appId]

View File

@ -3,7 +3,6 @@ package li.songe.gkd.ui
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
@ -20,10 +19,8 @@ import li.songe.gkd.util.collator
import li.songe.gkd.util.getGroupRawEnable
import li.songe.gkd.util.subsIdToRawFlow
import li.songe.gkd.util.subsItemsFlow
import javax.inject.Inject
@HiltViewModel
class AppConfigVm @Inject constructor(stateHandle: SavedStateHandle) : ViewModel() {
class AppConfigVm (stateHandle: SavedStateHandle) : ViewModel() {
private val args = AppConfigPageDestination.argsFrom(stateHandle)
private val latestGlobalLogsFlow = DbSet.clickLogDao.queryAppLatest(

View File

@ -51,8 +51,8 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.blankj.utilcode.util.ClipboardUtils
import com.blankj.utilcode.util.LogUtils
import com.ramcosta.composedestinations.annotation.Destination
@ -75,7 +75,6 @@ import li.songe.gkd.util.LocalMainViewModel
import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.ProfileTransitions
import li.songe.gkd.util.appInfoCacheFlow
import li.songe.json5.encodeToJson5String
import li.songe.gkd.util.getGroupRawEnable
import li.songe.gkd.util.json
import li.songe.gkd.util.launchAsFn
@ -84,6 +83,7 @@ import li.songe.gkd.util.throttle
import li.songe.gkd.util.toast
import li.songe.gkd.util.updateSubscription
import li.songe.json5.Json5
import li.songe.json5.encodeToJson5String
@RootNavGraph
@Destination(style = ProfileTransitions::class)
@ -95,7 +95,7 @@ fun AppItemPage(
) {
val navController = LocalNavController.current
val mainVm = LocalMainViewModel.current
val vm = hiltViewModel<AppItemVm>()
val vm = viewModel<AppItemVm>()
val subsItem = vm.subsItemFlow.collectAsState().value
val subsRaw = vm.subsRawFlow.collectAsState().value
val subsConfigs by vm.subsConfigsFlow.collectAsState()
@ -285,7 +285,7 @@ fun AppItemPage(
},
)
}
if (editable && subsRaw != null) {
if (editable && subsRaw != null && subsItem != null) {
DropdownMenuItem(
text = {
Text(text = "删除", color = MaterialTheme.colorScheme.error)

View File

@ -3,7 +3,6 @@ package li.songe.gkd.ui
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
@ -13,10 +12,8 @@ import li.songe.gkd.ui.destinations.AppItemPageDestination
import li.songe.gkd.util.map
import li.songe.gkd.util.subsIdToRawFlow
import li.songe.gkd.util.subsItemsFlow
import javax.inject.Inject
@HiltViewModel
class AppItemVm @Inject constructor(stateHandle: SavedStateHandle) : ViewModel() {
class AppItemVm (stateHandle: SavedStateHandle) : ViewModel() {
private val args = AppItemPageDestination.argsFrom(stateHandle)
val subsItemFlow =

View File

@ -42,8 +42,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
import kotlinx.coroutines.Dispatchers
@ -72,7 +72,7 @@ fun CategoryPage(subsItemId: Long) {
val navController = LocalNavController.current
val mainVm = LocalMainViewModel.current
val vm = hiltViewModel<CategoryVm>()
val vm = viewModel<CategoryVm>()
val subsItem by vm.subsItemFlow.collectAsState()
val subsRaw by vm.subsRawFlow.collectAsState()
val categoryConfigs by vm.categoryConfigsFlow.collectAsState()

View File

@ -3,7 +3,6 @@ package li.songe.gkd.ui
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.stateIn
import li.songe.gkd.db.DbSet
@ -11,10 +10,8 @@ import li.songe.gkd.ui.destinations.CategoryPageDestination
import li.songe.gkd.util.map
import li.songe.gkd.util.subsIdToRawFlow
import li.songe.gkd.util.subsItemsFlow
import javax.inject.Inject
@HiltViewModel
class CategoryVm @Inject constructor(stateHandle: SavedStateHandle) : ViewModel() {
class CategoryVm (stateHandle: SavedStateHandle) : ViewModel() {
private val args = CategoryPageDestination.argsFrom(stateHandle)
val subsItemFlow =

View File

@ -38,8 +38,8 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.paging.compose.collectAsLazyPagingItems
import androidx.paging.compose.itemKey
import com.ramcosta.composedestinations.annotation.Destination
@ -78,7 +78,7 @@ fun ClickLogPage() {
val context = LocalContext.current as MainActivity
val mainVm = context.mainVm
val navController = LocalNavController.current
val vm = hiltViewModel<ClickLogVm>()
val vm = viewModel<ClickLogVm>()
val clickLogCount by vm.clickLogCountFlow.collectAsState()
val clickDataItems = vm.pagingDataFlow.collectAsLazyPagingItems()
val appInfoCache by appInfoCacheFlow.collectAsState()

View File

@ -6,7 +6,6 @@ import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.cachedIn
import androidx.paging.map
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.stateIn
@ -14,10 +13,8 @@ import li.songe.gkd.data.SubsConfig
import li.songe.gkd.data.Tuple3
import li.songe.gkd.db.DbSet
import li.songe.gkd.util.subsIdToRawFlow
import javax.inject.Inject
@HiltViewModel
class ClickLogVm @Inject constructor() : ViewModel() {
class ClickLogVm : ViewModel() {
val pagingDataFlow = Pager(PagingConfig(pageSize = 100)) { DbSet.clickLogDao.pagingSource() }
.flow.cachedIn(viewModelScope)

View File

@ -56,8 +56,8 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.google.accompanist.drawablepainter.rememberDrawablePainter
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
@ -84,7 +84,7 @@ import li.songe.gkd.util.toast
@Composable
fun GlobalRuleExcludePage(subsItemId: Long, groupKey: Int) {
val navController = LocalNavController.current
val vm = hiltViewModel<GlobalRuleExcludeVm>()
val vm = viewModel<GlobalRuleExcludeVm>()
val rawSubs = vm.rawSubsFlow.collectAsState().value
val group = vm.groupFlow.collectAsState().value
val excludeData = vm.excludeDataFlow.collectAsState().value
@ -221,17 +221,15 @@ fun GlobalRuleExcludePage(subsItemId: Long, groupKey: Int) {
)
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically
) {
Text("显示隐藏应用")
},
trailingIcon = {
Checkbox(
checked = showHiddenApp,
onCheckedChange = {
vm.showHiddenAppFlow.value =
!vm.showHiddenAppFlow.value
})
Text("显示隐藏应用")
}
},
onClick = {
vm.showHiddenAppFlow.value = !vm.showHiddenAppFlow.value

View File

@ -3,7 +3,6 @@ package li.songe.gkd.ui
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
@ -17,10 +16,8 @@ import li.songe.gkd.util.SortTypeOption
import li.songe.gkd.util.map
import li.songe.gkd.util.orderedAppInfosFlow
import li.songe.gkd.util.subsIdToRawFlow
import javax.inject.Inject
@HiltViewModel
class GlobalRuleExcludeVm @Inject constructor(stateHandle: SavedStateHandle) : ViewModel() {
class GlobalRuleExcludeVm (stateHandle: SavedStateHandle) : ViewModel() {
private val args = GlobalRuleExcludePageDestination.argsFrom(stateHandle)
val rawSubsFlow = subsIdToRawFlow.map(viewModelScope) { it[args.subsItemId] }

View File

@ -52,8 +52,8 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.blankj.utilcode.util.ClipboardUtils
import com.blankj.utilcode.util.LogUtils
import com.ramcosta.composedestinations.annotation.Destination
@ -72,13 +72,13 @@ import li.songe.gkd.ui.style.itemPadding
import li.songe.gkd.util.LocalMainViewModel
import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.ProfileTransitions
import li.songe.json5.encodeToJson5String
import li.songe.gkd.util.json
import li.songe.gkd.util.launchAsFn
import li.songe.gkd.util.launchTry
import li.songe.gkd.util.throttle
import li.songe.gkd.util.toast
import li.songe.gkd.util.updateSubscription
import li.songe.json5.encodeToJson5String
@RootNavGraph
@Destination(style = ProfileTransitions::class)
@ -86,7 +86,7 @@ import li.songe.gkd.util.updateSubscription
fun GlobalRulePage(subsItemId: Long, focusGroupKey: Int? = null) {
val navController = LocalNavController.current
val mainVm = LocalMainViewModel.current
val vm = hiltViewModel<GlobalRuleVm>()
val vm = viewModel<GlobalRuleVm>()
val subsItem by vm.subsItemFlow.collectAsState()
val rawSubs = vm.subsRawFlow.collectAsState().value
val subsConfigs by vm.subsConfigsFlow.collectAsState()
@ -246,7 +246,7 @@ fun GlobalRulePage(subsItemId: Long, focusGroupKey: Int? = null) {
)
}
)
if (editable) {
if (editable && rawSubs != null) {
DropdownMenuItem(
text = {
Text(text = "删除", color = MaterialTheme.colorScheme.error)

View File

@ -3,7 +3,6 @@ package li.songe.gkd.ui
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.stateIn
import li.songe.gkd.db.DbSet
@ -11,10 +10,8 @@ import li.songe.gkd.ui.destinations.GlobalRulePageDestination
import li.songe.gkd.util.map
import li.songe.gkd.util.subsIdToRawFlow
import li.songe.gkd.util.subsItemsFlow
import javax.inject.Inject
@HiltViewModel
class GlobalRuleVm @Inject constructor(stateHandle: SavedStateHandle) : ViewModel() {
class GlobalRuleVm (stateHandle: SavedStateHandle) : ViewModel() {
private val args = GlobalRulePageDestination.argsFrom(stateHandle)
val subsItemFlow =
subsItemsFlow.map(viewModelScope) { s -> s.find { v -> v.id == args.subsItemId } }

View File

@ -38,8 +38,8 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.blankj.utilcode.util.ClipboardUtils
import com.blankj.utilcode.util.ImageUtils
import com.blankj.utilcode.util.UriUtils
@ -80,7 +80,7 @@ fun SnapshotPage() {
val pickContentLauncher = LocalPickContentLauncher.current
val vm = hiltViewModel<SnapshotVm>()
val vm = viewModel<SnapshotVm>()
val snapshots by vm.snapshotsState.collectAsState()
vm.uploadOptions.ShowDialog()

View File

@ -2,17 +2,13 @@ package li.songe.gkd.ui
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.stateIn
import li.songe.gkd.db.DbSet
import li.songe.gkd.ui.component.UploadOptions
import li.songe.gkd.util.IMPORT_BASE_URL
import javax.inject.Inject
@HiltViewModel
class SnapshotVm @Inject constructor() : ViewModel() {
class SnapshotVm : ViewModel() {
val snapshotsState = DbSet.snapshotDao.query()
.stateIn(viewModelScope, SharingStarted.Eagerly, emptyList())

View File

@ -44,8 +44,8 @@ import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.text.style.TextAlign
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.blankj.utilcode.util.LogUtils
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
@ -65,13 +65,13 @@ import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.ProfileTransitions
import li.songe.gkd.util.SortTypeOption
import li.songe.gkd.util.appInfoCacheFlow
import li.songe.json5.encodeToJson5String
import li.songe.gkd.util.json
import li.songe.gkd.util.launchAsFn
import li.songe.gkd.util.launchTry
import li.songe.gkd.util.throttle
import li.songe.gkd.util.toast
import li.songe.gkd.util.updateSubscription
import li.songe.json5.encodeToJson5String
@RootNavGraph
@ -83,7 +83,7 @@ fun SubsPage(
val navController = LocalNavController.current
val mainVm = LocalMainViewModel.current
val vm = hiltViewModel<SubsVm>()
val vm = viewModel<SubsVm>()
val subsItem = vm.subsItemFlow.collectAsState().value
val appAndConfigs by vm.filterAppAndConfigsFlow.collectAsState()
val searchStr by vm.searchStrFlow.collectAsState()

View File

@ -3,7 +3,6 @@ package li.songe.gkd.ui
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
@ -22,10 +21,8 @@ import li.songe.gkd.util.getGroupRawEnable
import li.songe.gkd.util.map
import li.songe.gkd.util.subsIdToRawFlow
import li.songe.gkd.util.subsItemsFlow
import javax.inject.Inject
@HiltViewModel
class SubsVm @Inject constructor(stateHandle: SavedStateHandle) : ViewModel() {
class SubsVm (stateHandle: SavedStateHandle) : ViewModel() {
private val args = SubsPageDestination.argsFrom(stateHandle)
val subsItemFlow =

View File

@ -58,8 +58,8 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.blankj.utilcode.util.KeyboardUtils
import com.google.accompanist.drawablepainter.rememberDrawablePainter
import com.ramcosta.composedestinations.navigation.navigate
@ -91,7 +91,7 @@ fun useAppListPage(): ScaffoldExt {
val context = LocalContext.current as MainActivity
val softwareKeyboardController = LocalSoftwareKeyboardController.current
val vm = hiltViewModel<HomeVm>()
val vm = viewModel<HomeVm>()
val showSystemApp by vm.showSystemAppFlow.collectAsState()
val showHiddenApp by vm.showHiddenAppFlow.collectAsState()
val sortType by vm.sortTypeFlow.collectAsState()

View File

@ -26,8 +26,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.style.TextOverflow
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.ramcosta.composedestinations.navigation.navigate
import li.songe.gkd.MainActivity
import li.songe.gkd.permission.notificationState
@ -57,7 +57,7 @@ val controlNav = BottomNavItem(label = "主页", icon = Icons.Outlined.Home)
fun useControlPage(): ScaffoldExt {
val context = LocalContext.current as MainActivity
val navController = LocalNavController.current
val vm = hiltViewModel<HomeVm>()
val vm = viewModel<HomeVm>()
val latestRecordDesc by vm.latestRecordDescFlow.collectAsState()
val subsStatus by vm.subsStatusFlow.collectAsState()
val store by storeFlow.collectAsState()

View File

@ -12,8 +12,8 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.blankj.utilcode.util.LogUtils
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
@ -36,7 +36,7 @@ data class BottomNavItem(
@Composable
fun HomePage() {
val context = LocalContext.current as MainActivity
val vm = hiltViewModel<HomeVm>()
val vm = viewModel<HomeVm>()
val tab by vm.tabFlow.collectAsState()
val controlPage = useControlPage()

View File

@ -1,10 +1,10 @@
package li.songe.gkd.ui.home
import android.webkit.URLUtil
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.blankj.utilcode.util.LogUtils
import dagger.hilt.android.lifecycle.HiltViewModel
import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText
import kotlinx.coroutines.Dispatchers
@ -14,6 +14,7 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import li.songe.gkd.appScope
import li.songe.gkd.data.RawSubscription
import li.songe.gkd.data.SubsItem
@ -33,10 +34,14 @@ import li.songe.gkd.util.subsItemsFlow
import li.songe.gkd.util.subsRefreshingFlow
import li.songe.gkd.util.toast
import li.songe.gkd.util.updateSubscription
import javax.inject.Inject
@HiltViewModel
class HomeVm @Inject constructor() : ViewModel() {
class HomeVm(stateHandle: SavedStateHandle) : ViewModel() {
init {
viewModelScope.launch {
LogUtils.d(this, stateHandle)
}
}
val tabFlow = MutableStateFlow(controlNav)
private val latestRecordFlow =

View File

@ -35,8 +35,8 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.ramcosta.composedestinations.navigation.navigate
import kotlinx.coroutines.flow.update
import li.songe.gkd.BuildConfig
@ -73,7 +73,7 @@ fun useSettingsPage(): ScaffoldExt {
val mainVm = LocalMainViewModel.current
val navController = LocalNavController.current
val store by storeFlow.collectAsState()
val vm = hiltViewModel<HomeVm>()
val vm = viewModel<HomeVm>()
var showToastInputDlg by remember {
mutableStateOf(false)

View File

@ -54,8 +54,8 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.dylanc.activityresult.launcher.launchForResult
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.Dispatchers
@ -101,7 +101,7 @@ fun useSubsManagePage(): ScaffoldExt {
val launcher = LocalLauncher.current
val mainVm = LocalMainViewModel.current
val vm = hiltViewModel<HomeVm>()
val vm = viewModel<HomeVm>()
val subItems by subsItemsFlow.collectAsState()
val subsIdToRaw by subsIdToRawFlow.collectAsState()

View File

@ -15,7 +15,6 @@ buildscript {
plugins {
alias(libs.plugins.google.ksp) apply false
alias(libs.plugins.google.hilt) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.android.application) apply false

View File

@ -7,7 +7,6 @@ rikka = "4.4.0"
room = "2.6.1"
paging = "3.3.2"
ktor = "2.3.12"
hilt = "2.52"
destinations = "1.10.2"
coil = "2.7.0"
@ -57,9 +56,6 @@ ktor_client_content_negotiation = { module = "io.ktor:ktor-client-content-negoti
ktor_serialization_kotlinx_json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }
kotlinx_serialization_json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version = "1.7.1" }
kotlinx_collections_immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version = "0.3.7" }
google_hilt_android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
google_hilt_android_compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" }
androidx_hilt_navigation_compose = { module = "androidx.hilt:hilt-navigation-compose", version = "1.2.0" }
destinations_core = { module = "io.github.raamcosta.compose-destinations:core", version.ref = "destinations" }
destinations_ksp = { module = "io.github.raamcosta.compose-destinations:ksp", version.ref = "destinations" }
coil_compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" }
@ -80,5 +76,4 @@ kotlin_android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin_compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
rikka_refine = { id = "dev.rikka.tools.refine", version.ref = "rikka" }
google_ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
google_hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
androidx_room = { id = "androidx.room", version.ref = "room" }