@@ -20,6 +20,7 @@ import android.app.Activity
2020import android.app.Dialog
2121import android.content.Context
2222import android.content.DialogInterface
23+ import android.database.sqlite.SQLiteDatabaseCorruptException
2324import android.net.Uri
2425import android.view.WindowManager
2526import android.view.WindowManager.BadTokenException
@@ -40,6 +41,7 @@ import com.ichi2.anki.CrashReportData.HelpAction
4041import com.ichi2.anki.CrashReportData.HelpAction.AnkiBackendLink
4142import com.ichi2.anki.CrashReportData.HelpAction.OpenDeckOptions
4243import com.ichi2.anki.common.annotations.UseContextParameter
44+ import com.ichi2.anki.dialogs.DatabaseErrorDialog
4345import com.ichi2.anki.exception.StorageAccessException
4446import com.ichi2.anki.libanki.Collection
4547import com.ichi2.anki.pages.DeckOptionsDestination
@@ -204,6 +206,12 @@ suspend fun <T> FragmentActivity.runCatching(
204206 if (callerTrace != null ) Timber .e(callerTrace)
205207 showError(exc.localizedMessage!! , exc.toCrashReportData(this ))
206208 }
209+ is SQLiteDatabaseCorruptException -> {
210+ Timber .e(exc, errorMessage)
211+ DatabaseErrorDialog .databaseCorruptFlag = true
212+ if (callerTrace != null ) Timber .e(callerTrace)
213+ DatabaseErrorDialog .ShowDatabaseErrorDialog .fromMessage(CollectionLoadingErrorDialog ().toMessage())
214+ }
207215 else -> {
208216 Timber .e(exc, errorMessage)
209217 if (callerTrace != null ) Timber .e(callerTrace)
0 commit comments