summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-03-25 18:03:42 +0100
committerThomas <tschneider.ac@gmail.com>2023-03-25 18:03:42 +0100
commit103f030f6b1afb48c70dbd8432118758d3a11598 (patch)
tree6f69bf592940eb8290e9546ff5fdf05c97c4069b
parent917f33334c438a03906dc45e817c5c926a6f216e (diff)
Fix issue #838 - Load and display last notifications when clicking on a push notifications
-rw-r--r--app/src/main/java/app/fedilab/android/BaseMainActivity.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java2
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java2
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java7
5 files changed, 16 insertions, 5 deletions
diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
index 1724a3a17..2483855d2 100644
--- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java
+++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
@@ -17,6 +17,7 @@ package app.fedilab.android;
import static app.fedilab.android.BaseMainActivity.status.DISCONNECTED;
import static app.fedilab.android.BaseMainActivity.status.UNKNOWN;
import static app.fedilab.android.mastodon.helper.CacheHelper.deleteDir;
+import static app.fedilab.android.mastodon.helper.Helper.ARG_REFRESH_NOTFICATION;
import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_ID;
import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE;
import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_SOFTWARE;
@@ -672,6 +673,11 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
}
viewPager.setCurrentItem(position);
}
+ Bundle b = new Bundle();
+ b.putBoolean(ARG_REFRESH_NOTFICATION, true);
+ Intent intentBC = new Intent(Helper.RECEIVE_STATUS_ACTION);
+ intentBC.putExtras(b);
+ LocalBroadcastManager.getInstance(activity).sendBroadcast(intentBC);
}
}, 1000);
intent.removeExtra(Helper.INTENT_ACTION);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java
index 34adc4e9d..368c493de 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java
@@ -194,6 +194,8 @@ public class Helper {
public static final String RECEIVE_REDRAW_BOTTOM = "RECEIVE_REDRAW_BOTTOM";
public static final String RECEIVE_STATUS_ACTION = "RECEIVE_STATUS_ACTION";
+
+ public static final String RECEIVE_REFRESH_NOTIFICATIONS_ACTION = "RECEIVE_REFRESH_NOTIFICATIONS_ACTION";
public static final String RECEIVE_ERROR_MESSAGE = "RECEIVE_ERROR_MESSAGE";
public static final String RECEIVE_RECREATE_ACTIVITY = "RECEIVE_RECREATE_ACTIVITY";
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java
index 4fb6fcbe8..5c474dcf8 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java
@@ -379,7 +379,7 @@ public class NotificationsHelper {
Helper.NotifType finalNotifType = notifType;
String finalMessage = message;
String finalTitle = title;
- StatusAdapter.sendAction(context, Helper.ARG_REFRESH_NOTFICATION, null, null);
+ StatusAdapter.sendAction(context, Helper.RECEIVE_REFRESH_NOTIFICATIONS_ACTION, null, null);
Runnable myRunnable = () -> Glide.with(context)
.asBitmap()
.load(finalNotificationUrl != null ? finalNotificationUrl : R.drawable.fedilab_logo_bubbles)
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java
index cc6e68035..bebbeba45 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java
@@ -2726,10 +2726,10 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
b.putSerializable(type, status);
}
if (id != null) {
- b.putSerializable(type, id);
+ b.putString(type, id);
}
if (type == ARG_TIMELINE_REFRESH_ALL) {
- b.putSerializable(ARG_TIMELINE_REFRESH_ALL, true);
+ b.putBoolean(ARG_TIMELINE_REFRESH_ALL, true);
}
Intent intentBC = new Intent(Helper.RECEIVE_STATUS_ACTION);
intentBC.putExtras(b);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java
index 7455ecab4..d8f5bc3b6 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java
@@ -72,7 +72,10 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
if (b != null) {
Status receivedStatus = (Status) b.getSerializable(Helper.ARG_STATUS_ACTION);
String delete_all_for_account_id = b.getString(Helper.ARG_DELETE_ALL_FOR_ACCOUNT_ID);
- if (receivedStatus != null && notificationAdapter != null) {
+ boolean refreshNotifications = b.getBoolean(Helper.ARG_REFRESH_NOTFICATION, false);
+ if (refreshNotifications) {
+ scrollToTop();
+ } else if (receivedStatus != null && notificationAdapter != null) {
int position = getPosition(receivedStatus);
if (position >= 0) {
if (notificationList.get(position).status != null) {
@@ -203,7 +206,7 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
aggregateNotification = false;
LocalBroadcastManager.getInstance(requireActivity()).registerReceiver(receive_action, new IntentFilter(Helper.RECEIVE_STATUS_ACTION));
- LocalBroadcastManager.getInstance(requireActivity()).registerReceiver(receive_refresh, new IntentFilter(Helper.ARG_REFRESH_NOTFICATION));
+ LocalBroadcastManager.getInstance(requireActivity()).registerReceiver(receive_refresh, new IntentFilter(Helper.RECEIVE_REFRESH_NOTIFICATIONS_ACTION));
return root;
}