Merge branch '2109-assertion-in-rssfeedviewmodel' into 'master'

Fix assertion caused by system-initiated process death

Closes #2109

See merge request briar/briar!1510
This commit is contained in:
Torsten Grote
2021-07-20 13:03:27 +00:00
4 changed files with 19 additions and 11 deletions

View File

@@ -57,8 +57,12 @@ public class RssFeedActivity extends BriarActivity
onBackPressed(); onBackPressed();
} }
} else if (result == FAILED) { } else if (result == FAILED) {
String url = viewModel.getUrlFailedImport();
if (url == null) {
throw new AssertionError();
}
RssFeedImportFailedDialogFragment dialog = RssFeedImportFailedDialogFragment dialog =
RssFeedImportFailedDialogFragment.newInstance(); RssFeedImportFailedDialogFragment.newInstance(url);
dialog.show(getSupportFragmentManager(), dialog.show(getSupportFragmentManager(),
RssFeedImportFailedDialogFragment.TAG); RssFeedImportFailedDialogFragment.TAG);
} else if (result == EXISTS) { } else if (result == EXISTS) {

View File

@@ -25,8 +25,15 @@ public class RssFeedImportFailedDialogFragment extends DialogFragment {
ViewModelProvider.Factory viewModelFactory; ViewModelProvider.Factory viewModelFactory;
private RssFeedViewModel viewModel; private RssFeedViewModel viewModel;
static RssFeedImportFailedDialogFragment newInstance() { private static final String ARG_URL = "url";
return new RssFeedImportFailedDialogFragment();
static RssFeedImportFailedDialogFragment newInstance(String retryUrl) {
Bundle args = new Bundle();
args.putString(ARG_URL, retryUrl);
RssFeedImportFailedDialogFragment f =
new RssFeedImportFailedDialogFragment();
f.setArguments(args);
return f;
} }
@Override @Override
@@ -45,8 +52,8 @@ public class RssFeedImportFailedDialogFragment extends DialogFragment {
R.style.BriarDialogTheme); R.style.BriarDialogTheme);
builder.setMessage(R.string.blogs_rss_feeds_import_error); builder.setMessage(R.string.blogs_rss_feeds_import_error);
builder.setNegativeButton(R.string.cancel, null); builder.setNegativeButton(R.string.cancel, null);
builder.setPositiveButton(R.string.try_again_button, builder.setPositiveButton(R.string.try_again_button, (dialog, which) ->
(dialog, which) -> viewModel.retryImportFeed()); viewModel.importFeed(requireArguments().getString(ARG_URL)));
return builder.create(); return builder.create();
} }

View File

@@ -20,7 +20,6 @@ import org.briarproject.briar.api.feed.Feed;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;

View File

@@ -159,11 +159,9 @@ class RssFeedViewModel extends DbViewModel {
}); });
} }
void retryImportFeed() { @Nullable
if (urlFailedImport == null) { String getUrlFailedImport() {
throw new AssertionError(); return urlFailedImport;
}
importFeed(urlFailedImport);
} }
private boolean exists(String url) { private boolean exists(String url) {