diff --git a/src/main/kotlin/com/looker/droidify/Common.kt b/src/main/kotlin/com/looker/droidify/Common.kt index bb45fba8..4d2e1f9c 100644 --- a/src/main/kotlin/com/looker/droidify/Common.kt +++ b/src/main/kotlin/com/looker/droidify/Common.kt @@ -54,4 +54,8 @@ const val JOB_ID_SYNC = 1 const val PREFS_LANGUAGE = "languages" const val PREFS_LANGUAGE_DEFAULT = "system" -const val EXTRA_REPOSITORY_ID = "repositoryId" \ No newline at end of file +const val EXTRA_REPOSITORY_ID = "repositoryId" + +interface RepoManager { + fun onDeleteConfirm() +} diff --git a/src/main/kotlin/com/looker/droidify/screen/MessageDialog.kt b/src/main/kotlin/com/looker/droidify/screen/MessageDialog.kt index a9070e77..4b150cca 100644 --- a/src/main/kotlin/com/looker/droidify/screen/MessageDialog.kt +++ b/src/main/kotlin/com/looker/droidify/screen/MessageDialog.kt @@ -10,8 +10,8 @@ import androidx.fragment.app.DialogFragment import androidx.fragment.app.FragmentManager import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.looker.droidify.R +import com.looker.droidify.RepoManager import com.looker.droidify.database.entity.Release -import com.looker.droidify.ui.fragments.RepositorySheetX import com.looker.droidify.utility.KParcelable import com.looker.droidify.utility.PackageItemResolver import com.looker.droidify.utility.extension.android.Android @@ -146,7 +146,7 @@ class MessageDialog() : DialogFragment() { is Message.DeleteRepositoryConfirm -> { dialog.setTitle(R.string.confirmation) dialog.setMessage(R.string.delete_repository_DESC) - dialog.setPositiveButton(R.string.delete) { _, _ -> (parentFragment as RepositorySheetX).onDeleteConfirm() } + dialog.setPositiveButton(R.string.delete) { _, _ -> (parentFragment as RepoManager).onDeleteConfirm() } dialog.setNegativeButton(R.string.cancel, null) } is Message.CantEditSyncing -> { diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/EditRepositorySheetX.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/EditRepositorySheetX.kt index e0b3d6e5..9eb44315 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/EditRepositorySheetX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/EditRepositorySheetX.kt @@ -18,6 +18,7 @@ import androidx.fragment.app.viewModels import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.looker.droidify.EXTRA_REPOSITORY_ID import com.looker.droidify.R +import com.looker.droidify.RepoManager import com.looker.droidify.databinding.SheetEditRepositoryBinding import com.looker.droidify.network.Downloader import com.looker.droidify.screen.MessageDialog @@ -32,6 +33,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Single import io.reactivex.rxjava3.disposables.Disposable import io.reactivex.rxjava3.schedulers.Schedulers +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch @@ -43,7 +45,7 @@ import java.nio.charset.Charset import java.util.* import kotlin.math.min -class EditRepositorySheetX() : FullscreenBottomSheetDialogFragment() { +class EditRepositorySheetX() : FullscreenBottomSheetDialogFragment(), RepoManager { private lateinit var binding: SheetEditRepositoryBinding val viewModel: RepositoryViewModelX by viewModels { RepositoryViewModelX.Factory((requireActivity() as PrefsActivityX).db, repositoryId) @@ -427,4 +429,11 @@ class EditRepositorySheetX() : FullscreenBottomSheetDialogFragment() { .create() } } + + override fun onDeleteConfirm() { + GlobalScope.launch(Dispatchers.IO) { + if (syncConnection.binder?.deleteRepository(repositoryId) == true) + dismissAllowingStateLoss() + } + } } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/RepositorySheetX.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/RepositorySheetX.kt index cff1773b..736f7f7f 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/RepositorySheetX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/RepositorySheetX.kt @@ -11,6 +11,7 @@ import android.view.ViewGroup import androidx.fragment.app.viewModels import com.looker.droidify.EXTRA_REPOSITORY_ID import com.looker.droidify.R +import com.looker.droidify.RepoManager import com.looker.droidify.databinding.SheetRepositoryBinding import com.looker.droidify.screen.MessageDialog import com.looker.droidify.service.Connection @@ -23,7 +24,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import java.util.* -class RepositorySheetX() : FullscreenBottomSheetDialogFragment() { +class RepositorySheetX() : FullscreenBottomSheetDialogFragment(), RepoManager { private lateinit var binding: SheetRepositoryBinding val viewModel: RepositoryViewModelX by viewModels { RepositoryViewModelX.Factory((requireActivity() as PrefsActivityX).db, repositoryId) @@ -138,7 +139,7 @@ class RepositorySheetX() : FullscreenBottomSheetDialogFragment() { } } - internal fun onDeleteConfirm() { + override fun onDeleteConfirm() { GlobalScope.launch(Dispatchers.IO) { if (syncConnection.binder?.deleteRepository(repositoryId) == true) dismissAllowingStateLoss()