From 6e32f7724fbba901b16b60b32fa0286eb9444fc4 Mon Sep 17 00:00:00 2001 From: Javi Rueda 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 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 notifications = new ArrayList<>(); SQLiteDatabase db = null; try { - JSONArray array = (JSONArray) Lbryio.parseResponse(Lbryio.call("notification", "list", context)); + Map 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();