From a051e636e642ec3f22b593a754a18339813de723 Mon Sep 17 00:00:00 2001
From: FineFindus <63370021+FineFindus@users.noreply.github.com>
Date: Sun, 26 Feb 2023 20:50:03 +0100
Subject: [PATCH] feat(notifications/action): add unboost action
---
.../android/PushNotificationReceiver.java | 38 +++++++++----------
.../android/model/NotificationAction.java | 4 +-
mastodon/src/main/res/values/strings_sk.xml | 1 +
3 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java b/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
index c07e4bf77..168728608 100644
--- a/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
+++ b/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
@@ -9,7 +9,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Icon;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
@@ -26,7 +25,6 @@ import org.joinmastodon.android.model.Account;
import org.joinmastodon.android.model.NotificationAction;
import org.joinmastodon.android.model.Preferences;
import org.joinmastodon.android.model.PushNotification;
-import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.model.StatusPrivacy;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.parceler.Parcels;
@@ -35,7 +33,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
-import me.grishka.appkit.api.APIRequest;
import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse;
import me.grishka.appkit.imageloader.ImageCache;
@@ -108,15 +105,14 @@ public class PushNotificationReceiver extends BroadcastReceiver{
org.joinmastodon.android.model.Notification notification=Parcels.unwrap(intent.getParcelableExtra("notification"));
String statusID=notification.status.id;
if (statusID != null) {
+ AccountSessionManager accountSessionManager = AccountSessionManager.getInstance();
+ Preferences preferences = accountSessionManager.getAccount(accountID).preferences;
switch (NotificationAction.values()[intent.getIntExtra("notificationAction", 0)]) {
case FAVORITE -> new SetStatusFavorited(statusID, true).exec(accountID);
case BOOKMARK -> new SetStatusBookmarked(statusID, true).exec(accountID);
- case REBLOG -> {
- AccountSessionManager accountSessionManager = AccountSessionManager.getInstance();
- Preferences preferences = accountSessionManager.getAccount(accountID).preferences;
- new SetStatusReblogged(notification.status.id, true, preferences.postingDefaultVisibility).exec(accountID);
- }
+ case BOOST -> new SetStatusReblogged(notification.status.id, true, preferences.postingDefaultVisibility).exec(accountID);
+ case UNBOOST -> new SetStatusReblogged(notification.status.id, false, preferences.postingDefaultVisibility).exec(accountID);
default -> Log.w(TAG, "onReceive: Failed to get NotificationAction");
}
}
@@ -200,20 +196,20 @@ public class PushNotificationReceiver extends BroadcastReceiver{
if (notification != null) {
- switch (pn.notificationType) {
- case MENTION -> {
- if(!notification.status.favourited)
- builder.addAction(buildNotificationAction(context, accountID, notification, context.getString(R.string.sk_notification_action_favorite), NotificationAction.FAVORITE));
- if(!notification.status.bookmarked)
- builder.addAction(buildNotificationAction(context, accountID, notification, context.getString(R.string.sk_notification_action_bookmark), NotificationAction.BOOKMARK));
- if(notification.status.visibility != StatusPrivacy.DIRECT)
- builder.addAction(buildNotificationAction(context, accountID, notification, context.getString(R.string.sk_notification_action_boost), NotificationAction.REBLOG));
+ switch (pn.notificationType) {
+ case MENTION, STATUS -> {
+ if(!notification.status.favourited)
+ builder.addAction(buildNotificationAction(context, accountID, notification, context.getString(R.string.sk_notification_action_favorite), NotificationAction.FAVORITE));
+ if(!notification.status.bookmarked)
+ builder.addAction(buildNotificationAction(context, accountID, notification, context.getString(R.string.sk_notification_action_bookmark), NotificationAction.BOOKMARK));
+ if(notification.status.visibility != StatusPrivacy.DIRECT)
+ builder.addAction(buildNotificationAction(context, accountID, notification, context.getString(R.string.sk_notification_action_boost), NotificationAction.BOOST));
+ }
+ case UPDATE -> {
+ if(notification.status.reblogged)
+ builder.addAction(buildNotificationAction(context, accountID, notification, context.getString(R.string.sk_notification_action_unboost), NotificationAction.UNBOOST));
+ }
}
- case FOLLOW -> {
-// if ( notification != null && notification.status.account.)
- builder.addAction(buildNotificationAction(context, accountID, notification, context.getString(R.string.sk_notification_action_follow), NotificationAction.FAVORITE));
- }
- }
}
nm.notify(accountID, GlobalUserPreferences.keepOnlyLatestNotification ? NOTIFICATION_ID : notificationId++, builder.build());
diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/NotificationAction.java b/mastodon/src/main/java/org/joinmastodon/android/model/NotificationAction.java
index d59947bee..420bb1d1a 100644
--- a/mastodon/src/main/java/org/joinmastodon/android/model/NotificationAction.java
+++ b/mastodon/src/main/java/org/joinmastodon/android/model/NotificationAction.java
@@ -2,6 +2,8 @@ package org.joinmastodon.android.model;
public enum NotificationAction {
FAVORITE,
- REBLOG,
+ BOOST,
+ UNBOOST,
BOOKMARK,
+ REPLY,
}
diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml
index ba8724690..0e7480d4c 100644
--- a/mastodon/src/main/res/values/strings_sk.xml
+++ b/mastodon/src/main/res/values/strings_sk.xml
@@ -265,5 +265,6 @@
Favorite
Bookmark
Boost
+ Unboost
Refollow
\ No newline at end of file