Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import androidx.annotation.StringRes
import androidx.core.content.ContextCompat.getSystemService
import androidx.fragment.app.viewModels
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.viewModelScope
import androidx.preference.Preference
import com.ichi2.anki.BackupManager
Expand All @@ -32,6 +31,7 @@ import com.ichi2.anki.snackbar.showSnackbar
import com.ichi2.anki.ui.dialogs.tools.AsyncDialogBuilder.CheckedItems
import com.ichi2.anki.ui.dialogs.tools.DialogResult
import com.ichi2.anki.ui.dialogs.tools.awaitDialog
import com.ichi2.anki.utils.ext.launchCollectionInViewLifecycleScope
import com.ichi2.anki.utils.getUserFriendlyErrorText
import com.ichi2.preferences.TextWidgetPreference
import kotlinx.coroutines.CoroutineScope
Expand Down Expand Up @@ -233,15 +233,6 @@ class ManageSpaceFragment : SettingsFragment() {

adjustDeleteEverythingStringsDependingOnCollectionLocation(deleteEverythingPreference)

listOf(
viewModel.flowOfDeleteUnusedMediaSize to deleteUnusedMediaPreference,
viewModel.flowOfDeleteCollectionSize to deleteCollectionPreference,
viewModel.flowOfDeleteEverythingSize to deleteEverythingPreference,
viewModel.flowOfDeleteBackupsSize to deleteBackupsPreference,
).forEach { (flowOfSize, preference) ->
lifecycleScope.launch { flowOfSize.collect { size -> preference.setWidgetTextBy(size) } }
}

observeProgress(viewModel) { progress -> getString(progress.messageRes) }
}

Expand All @@ -253,6 +244,16 @@ class ManageSpaceFragment : SettingsFragment() {
binding.toolbar.apply {
title = getString(CommonString.pref__manage_space__screen_title)
}

listOf(
viewModel.flowOfDeleteUnusedMediaSize to R.string.pref_delete_media_key,
viewModel.flowOfDeleteCollectionSize to R.string.pref_delete_collection_key,
viewModel.flowOfDeleteEverythingSize to R.string.pref_delete_everything_key,
viewModel.flowOfDeleteBackupsSize to R.string.pref_delete_backups_key,
).forEach { (flowOfSize, key) ->
val preference = requirePreference<TextWidgetPreference>(key)
flowOfSize.launchCollectionInViewLifecycleScope { size -> preference.setWidgetTextBy(size) }
}
}

/************************************ Delete unused media *************************************/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import com.ichi2.anki.FragmentLifecycleFixture.Transition.REMOVE
import com.ichi2.testutils.FragmentCoroutineTracker
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import org.junit.Assume.assumeFalse
import org.junit.Assume.assumeTrue
import org.junit.Test
import org.junit.runner.RunWith
Expand Down Expand Up @@ -111,7 +110,6 @@ class FragmentCoroutineLifecycleTest(
if (transition != REMOVE) {
assumeTrue("$fixture has no fragment view", fixture.hasFragmentView)
}
assumeFalse("Known startup failure: $fixture during $transition (Issue 22065)", transition in fixture.knownFailures)
withHost { activity, fragment ->
// Main.immediate queues nested launches until this outer coroutine finishes.
// This lets the test destroy the fragment/view before its startup work runs.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
package com.ichi2.anki

import androidx.fragment.app.Fragment
import com.ichi2.anki.FragmentLifecycleFixture.Transition.REMOVE
import com.ichi2.anki.browser.BrowserColumnSelectionFragment
import com.ichi2.anki.cardviewer.SingleCardSide
import com.ichi2.anki.dialogs.ChangeNoteTypeDialog
Expand Down Expand Up @@ -31,8 +30,6 @@ class FragmentLifecycleFixture(
private val name: String,
val host: Class<out AnkiActivity> = AnkiActivity::class.java,
val hasFragmentView: Boolean = true,
// Confirmed failures in the startup stress test. Remove each entry when its failure is fixed.
val knownFailures: Set<Transition> = emptySet(),
val create: RobolectricTest.() -> Fragment,
) {
enum class Transition { REMOVE, DESTROY_VIEW, RECREATE_VIEW }
Expand All @@ -56,7 +53,7 @@ fun fragmentLifecycleFixtures(): List<FragmentLifecycleFixture> =
FilteredDeckOptionsFragment()
},
FragmentLifecycleFixture("MediaCheck") { MediaCheckFragment() },
FragmentLifecycleFixture("ManageSpace", knownFailures = setOf(REMOVE)) { ManageSpaceFragment() },
FragmentLifecycleFixture("ManageSpace") { ManageSpaceFragment() },
FragmentLifecycleFixture("ChangeNoteType") {
ChangeNoteTypeDialog.newInstance(listOf(addBasicNote().id))
},
Expand Down
Loading