From e2879cd66410ea9d7ac172c784cdf0c16302a462 Mon Sep 17 00:00:00 2001 From: Daniel Lublin Date: Mon, 12 Jul 2021 19:05:28 +0200 Subject: [PATCH] Fix assertion caused by system-initiated process death --- .../briar/android/blog/RssFeedActivity.java | 6 +++++- .../blog/RssFeedImportFailedDialogFragment.java | 15 +++++++++++---- .../briar/android/blog/RssFeedManageFragment.java | 1 - .../briar/android/blog/RssFeedViewModel.java | 8 +++----- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedActivity.java index 9668c27f4..15c64e128 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedActivity.java @@ -57,8 +57,12 @@ public class RssFeedActivity extends BriarActivity onBackPressed(); } } else if (result == FAILED) { + String url = viewModel.getUrlFailedImport(); + if (url == null) { + throw new AssertionError(); + } RssFeedImportFailedDialogFragment dialog = - RssFeedImportFailedDialogFragment.newInstance(); + RssFeedImportFailedDialogFragment.newInstance(url); dialog.show(getSupportFragmentManager(), RssFeedImportFailedDialogFragment.TAG); } else if (result == EXISTS) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFailedDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFailedDialogFragment.java index ad1363adc..1ba7cc14b 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFailedDialogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFailedDialogFragment.java @@ -25,8 +25,15 @@ public class RssFeedImportFailedDialogFragment extends DialogFragment { ViewModelProvider.Factory viewModelFactory; private RssFeedViewModel viewModel; - static RssFeedImportFailedDialogFragment newInstance() { - return new RssFeedImportFailedDialogFragment(); + private static final String ARG_URL = "url"; + + static RssFeedImportFailedDialogFragment newInstance(String retryUrl) { + Bundle args = new Bundle(); + args.putString(ARG_URL, retryUrl); + RssFeedImportFailedDialogFragment f = + new RssFeedImportFailedDialogFragment(); + f.setArguments(args); + return f; } @Override @@ -45,8 +52,8 @@ public class RssFeedImportFailedDialogFragment extends DialogFragment { R.style.BriarDialogTheme); builder.setMessage(R.string.blogs_rss_feeds_import_error); builder.setNegativeButton(R.string.cancel, null); - builder.setPositiveButton(R.string.try_again_button, - (dialog, which) -> viewModel.retryImportFeed()); + builder.setPositiveButton(R.string.try_again_button, (dialog, which) -> + viewModel.importFeed(requireArguments().getString(ARG_URL))); return builder.create(); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageFragment.java index adf97443f..fb3866128 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageFragment.java @@ -20,7 +20,6 @@ import org.briarproject.briar.api.feed.Feed; import javax.annotation.Nullable; import javax.inject.Inject; -import androidx.annotation.NonNull; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedViewModel.java index 6c0772685..e992dbd7a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedViewModel.java @@ -159,11 +159,9 @@ class RssFeedViewModel extends DbViewModel { }); } - void retryImportFeed() { - if (urlFailedImport == null) { - throw new AssertionError(); - } - importFeed(urlFailedImport); + @Nullable + String getUrlFailedImport() { + return urlFailedImport; } private boolean exists(String url) {