From 6e32f7724fbba901b16b60b32fa0286eb9444fc4 Mon Sep 17 00:00:00 2001
From: Javi Rueda <foss@franjaru.com>
Date: Mon, 29 Mar 2021 17:39:27 +0200
Subject: [PATCH] Notification improvements (#1175)

* Stop showing notification list when going from notification's content to related content

* Add is_app_readable parameter to notification_list call

* Return current fragment on main activity
---
 .../java/io/lbry/browser/MainActivity.java    | 22 +++++++++++--------
 .../tasks/lbryinc/NotificationListTask.java   |  6 ++++-
 .../java/io/lbry/browser/ui/BaseFragment.java |  2 +-
 3 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/app/src/main/java/io/lbry/browser/MainActivity.java b/app/src/main/java/io/lbry/browser/MainActivity.java
index 82fdcbfd..1c11f762 100644
--- a/app/src/main/java/io/lbry/browser/MainActivity.java
+++ b/app/src/main/java/io/lbry/browser/MainActivity.java
@@ -2781,15 +2781,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
     }
 
     private Fragment getCurrentFragment() {
-        int backCount = getSupportFragmentManager().getBackStackEntryCount();
-        if (backCount > 0) {
-            try {
-                return getSupportFragmentManager().getFragments().get(backCount - 1);
-            } catch (IndexOutOfBoundsException ex) {
-                return null;
-            }
-        }
-        return null;
+        return getSupportFragmentManager().findFragmentById(R.id.content_main);
     }
 
     public void hideActionBar() {
@@ -3495,6 +3487,18 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
                 return;
             }
 
+            if (currentFragment != null && ((BaseFragment) currentFragment).getParams() != null
+                    && ((BaseFragment) currentFragment).getParams().containsKey("source")
+                    && ((BaseFragment) currentFragment).getParams().get("source").equals("notification")) {
+
+                Map<String, Object> currentParams = new HashMap<>(1);
+
+                if (((BaseFragment) currentFragment).getParams().containsKey("url"))
+                    currentParams.put("url", ((BaseFragment) currentFragment).getParams().get("url"));
+
+                ((BaseFragment) currentFragment).setParams(currentParams);
+            }
+
             //fragment.setRetainInstance(true);
             FragmentManager manager = getSupportFragmentManager();
             FragmentTransaction transaction = manager.beginTransaction().replace(R.id.content_main, fragment);
diff --git a/app/src/main/java/io/lbry/browser/tasks/lbryinc/NotificationListTask.java b/app/src/main/java/io/lbry/browser/tasks/lbryinc/NotificationListTask.java
index be8c64f6..69722037 100644
--- a/app/src/main/java/io/lbry/browser/tasks/lbryinc/NotificationListTask.java
+++ b/app/src/main/java/io/lbry/browser/tasks/lbryinc/NotificationListTask.java
@@ -16,8 +16,10 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 
 import io.lbry.browser.MainActivity;
 import io.lbry.browser.data.DatabaseHelper;
@@ -47,7 +49,9 @@ public class NotificationListTask extends AsyncTask<Void, Void, List<LbryNotific
         List<LbryNotification> notifications = new ArrayList<>();
         SQLiteDatabase db = null;
         try {
-            JSONArray array = (JSONArray) Lbryio.parseResponse(Lbryio.call("notification", "list", context));
+            Map<String, String> parameters = new HashMap<>(1);
+            parameters.put("is_app_readable", "true");
+            JSONArray array = (JSONArray) Lbryio.parseResponse(Lbryio.call("notification", "list", parameters, context));
             if (array != null) {
                 for (int i = 0; i < array.length(); i++) {
                     JSONObject item = array.getJSONObject(i);
diff --git a/app/src/main/java/io/lbry/browser/ui/BaseFragment.java b/app/src/main/java/io/lbry/browser/ui/BaseFragment.java
index 9cbf3132..cbca31f8 100644
--- a/app/src/main/java/io/lbry/browser/ui/BaseFragment.java
+++ b/app/src/main/java/io/lbry/browser/ui/BaseFragment.java
@@ -64,7 +64,7 @@ public class BaseFragment extends Fragment {
             }
         }
 
-        if (params != null && params.containsKey("source") && "notification".equalsIgnoreCase(params.get("source").toString())) {
+        if (params != null && params.containsKey("source") && params.get("source") != null && "notification".equalsIgnoreCase(params.get("source").toString())) {
             Context context = getContext();
             if (context instanceof MainActivity) {
                 ((MainActivity) context).navigateBackToNotifications();