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