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
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import com.machiav3lli.fdroid.database.dao.RepositoryDao
import com.machiav3lli.fdroid.database.entity.Repository
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.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
@ -20,8 +17,6 @@ import kotlinx.coroutines.withContext
class RepositoriesViewModelX(val repositoryDao: RepositoryDao) : ViewModel() {
val syncConnection = Connection(SyncService::class.java)
private val _showSheet = MutableSharedFlow<SheetNavigationData>()
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(
repositoryId: Long = 0L,
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) {
repositoryDao.insert(newRepository(fallbackName = "new repository"))
repositoryDao.latestAddedId()

View File

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