From 1b99d937397a3cfb17a2e61883bdbc63d6a4d400 Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Sun, 8 Mar 2020 22:09:24 +0100 Subject: [PATCH] Use MainActivity as a single instance to open item on sync result notification click --- app/src/main/AndroidManifest.xml | 2 +- .../readrops/app/activities/MainActivity.java | 24 +++++++++++++------ .../app/repositories/ARepository.java | 6 ++++- .../app/viewmodels/MainViewModel.java | 4 ++++ 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 182abb87..e2feb958 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -59,6 +59,7 @@ diff --git a/app/src/main/java/com/readrops/app/activities/MainActivity.java b/app/src/main/java/com/readrops/app/activities/MainActivity.java index 70b088bf..d213cd94 100644 --- a/app/src/main/java/com/readrops/app/activities/MainActivity.java +++ b/app/src/main/java/com/readrops/app/activities/MainActivity.java @@ -225,15 +225,25 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou savedInstanceState.clear(); } }); - - if (getIntent().hasExtra(ITEM_ID) && getIntent().hasExtra(IMAGE_URL)) { - Intent intent = new Intent(this, ItemActivity.class); - intent.putExtras(getIntent()); - - startActivity(intent); - } } + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + + if (intent.hasExtra(ITEM_ID) && intent.hasExtra(IMAGE_URL)) { + Intent itemIntent = new Intent(this, ItemActivity.class); + itemIntent.putExtras(intent); + + startActivity(itemIntent); + + viewModel.setItemReadState(intent.getIntExtra(ITEM_ID, 0), true, true) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .doOnError(throwable -> Utils.showSnackbar(rootLayout, throwable.getMessage())) + .subscribe(); + } + } private void handleDrawerClick(IDrawerItem drawerItem) { if (drawerItem instanceof PrimaryDrawerItem) { diff --git a/app/src/main/java/com/readrops/app/repositories/ARepository.java b/app/src/main/java/com/readrops/app/repositories/ARepository.java index 45af0f6b..d29c6572 100644 --- a/app/src/main/java/com/readrops/app/repositories/ARepository.java +++ b/app/src/main/java/com/readrops/app/repositories/ARepository.java @@ -109,7 +109,11 @@ public abstract class ARepository { } public Completable setItemReadState(Item item, boolean read) { - return database.itemDao().setReadState(item.getId(), read, !item.isReadChanged()); + return setItemReadState(item.getId(), read, !item.isReadChanged()); + } + + public Completable setItemReadState(int itemId, boolean read, boolean readChanged) { + return database.itemDao().setReadState(itemId, read, readChanged); } public Completable setAllItemsReadState(boolean read) { diff --git a/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java b/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java index 4dbea9f4..26829025 100644 --- a/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java +++ b/app/src/main/java/com/readrops/app/viewmodels/MainViewModel.java @@ -219,6 +219,10 @@ public class MainViewModel extends AndroidViewModel { return repository.setItemReadState(itemWithFeed.getItem(), read); } + public Completable setItemReadState(int itemId, boolean read, boolean readChanged) { + return repository.setItemReadState(itemId, read, readChanged); + } + public Completable setItemsReadState(List items, boolean read) { List completableList = new ArrayList<>();