This commit is contained in:
machiav3lli 2022-09-16 14:39:45 +02:00
parent e64c3585ac
commit 755b89d08d
3 changed files with 2 additions and 93 deletions

View File

@ -1,76 +0,0 @@
package com.machiav3lli.fdroid.ui.fragments
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.ComposeView
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.machiav3lli.fdroid.content.Preferences
import com.machiav3lli.fdroid.ui.activities.PrefsActivityX
import com.machiav3lli.fdroid.ui.compose.pages.settings.repository.RepositoryPage
import com.machiav3lli.fdroid.ui.compose.theme.AppTheme
import com.machiav3lli.fdroid.ui.viewmodels.RepositoriesViewModelX
import com.machiav3lli.fdroid.utility.isDarkTheme
import kotlinx.coroutines.flow.collectLatest
class PrefsRepositoriesFragment : BaseNavFragment() {
val viewModel: RepositoriesViewModelX by viewModels {
RepositoriesViewModelX.Factory(prefsActivityX.db.repositoryDao)
}
private val prefsActivityX: PrefsActivityX
get() = requireActivity() as PrefsActivityX
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?,
): View {
super.onCreate(savedInstanceState)
lifecycleScope.launchWhenStarted {
viewModel.showSheet.collectLatest {
if (it.editMode) {
EditRepositorySheetX(it.repositoryId).showNow(
childFragmentManager,
"Repository ${it.repositoryId}"
)
} else {
RepositorySheetX(it.repositoryId).showNow(
childFragmentManager,
"Repository $it"
)
}
}
}
return ComposeView(requireContext()).apply {
setContent { ReposPage() }
}
}
override fun setupLayout() {
viewModel.bindConnection(requireContext())
}
override fun onDestroyView() {
super.onDestroyView()
viewModel.syncConnection.unbind(requireContext())
}
@Composable
fun ReposPage() {
AppTheme(
darkTheme = when (Preferences[Preferences.Key.Theme]) {
is Preferences.Theme.System -> isSystemInDarkTheme()
is Preferences.Theme.AmoledSystem -> isSystemInDarkTheme()
else -> isDarkTheme
}
) {
RepositoryPage(viewModel = viewModel)
}
}
}

View File

@ -1,14 +1,11 @@
package com.machiav3lli.fdroid.ui.viewmodels package com.machiav3lli.fdroid.ui.viewmodels
import android.content.Context
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.machiav3lli.fdroid.database.dao.RepositoryDao import com.machiav3lli.fdroid.database.dao.RepositoryDao
import com.machiav3lli.fdroid.database.entity.Repository import com.machiav3lli.fdroid.database.entity.Repository
import com.machiav3lli.fdroid.database.entity.Repository.Companion.newRepository import com.machiav3lli.fdroid.database.entity.Repository.Companion.newRepository
import com.machiav3lli.fdroid.service.Connection
import com.machiav3lli.fdroid.service.SyncService
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@ -20,8 +17,6 @@ import kotlinx.coroutines.withContext
class RepositoriesViewModelX(val repositoryDao: RepositoryDao) : ViewModel() { class RepositoriesViewModelX(val repositoryDao: RepositoryDao) : ViewModel() {
val syncConnection = Connection(SyncService::class.java)
private val _showSheet = MutableSharedFlow<SheetNavigationData>() private val _showSheet = MutableSharedFlow<SheetNavigationData>()
val showSheet: SharedFlow<SheetNavigationData> = _showSheet val showSheet: SharedFlow<SheetNavigationData> = _showSheet
@ -36,10 +31,6 @@ class RepositoriesViewModelX(val repositoryDao: RepositoryDao) : ViewModel() {
} }
} }
fun bindConnection(context: Context) {
viewModelScope.launch { syncConnection.bind(context) }
}
fun showRepositorySheet( fun showRepositorySheet(
repositoryId: Long = 0L, repositoryId: Long = 0L,
editMode: Boolean = false, editMode: Boolean = false,
@ -56,12 +47,6 @@ class RepositoriesViewModelX(val repositoryDao: RepositoryDao) : ViewModel() {
} }
} }
fun toggleRepository(repository: Repository, isEnabled: Boolean) {
viewModelScope.launch {
syncConnection.binder?.setEnabled(repository, isEnabled)
}
}
private suspend fun addNewRepository(): Long = withContext(Dispatchers.IO) { private suspend fun addNewRepository(): Long = withContext(Dispatchers.IO) {
repositoryDao.insert(newRepository(fallbackName = "new repository")) repositoryDao.insert(newRepository(fallbackName = "new repository"))
repositoryDao.latestAddedId() repositoryDao.latestAddedId()

View File

@ -14,9 +14,9 @@
android:name="com.machiav3lli.fdroid.ui.fragments.PrefsUpdatesFragment" android:name="com.machiav3lli.fdroid.ui.fragments.PrefsUpdatesFragment"
tools:layout="@layout/fragment_prefs" /> tools:layout="@layout/fragment_prefs" />
<fragment <!--fragment
android:id="@+id/reposTab" android:id="@+id/reposTab"
android:name="com.machiav3lli.fdroid.ui.fragments.PrefsRepositoriesFragment" /> android:name="com.machiav3lli.fdroid.ui.fragments.PrefsRepositoriesFragment" /-->
<fragment <fragment
android:id="@+id/otherTab" android:id="@+id/otherTab"