From 16c0866f7ff9c9395e155e5e3159a66d09c6ef44 Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Fri, 30 Dec 2022 14:12:10 -0300 Subject: [PATCH] It fucking compiles. Still a whole lot of stuff to be done --- ...c_fluent_mail_inbox_dismiss_24_regular.xml | 3 +++ ...c_fluent_mail_inbox_dismiss_28_regular.xml | 3 +++ .../drawable/ic_fluent_open_24_regular.xml | 3 +++ .../ic_fluent_sign_out_24_regular.xml | 3 +++ .../android/GlobalUserPreferences.java | 3 +++ .../api/StatusInteractionController.java | 26 ++++++++++++------- .../notifications/DismissNotification.java | 17 ++++++++++++ .../android/api/session/AccountSession.java | 12 ++++++++- .../android/fragments/ProfileFragment.java | 8 +++--- .../ui/text/ClickableLinksDelegate.java | 3 ++- .../android/ui/text/LinkSpan.java | 6 +++-- .../android/ui/utils/UiUtils.java | 1 + .../ic_fluent_person_swap_24_regular.xml | 3 +++ .../src/main/res/layout/item_boost_menu.xml | 14 ++++++++++ mastodon/src/main/res/menu/notifications.xml | 6 +++++ mastodon/src/main/res/values/strings_sk.xml | 13 ++++++++++ 16 files changed, 106 insertions(+), 18 deletions(-) create mode 100644 mastodon/src/github/res/drawable/ic_fluent_mail_inbox_dismiss_24_regular.xml create mode 100644 mastodon/src/github/res/drawable/ic_fluent_mail_inbox_dismiss_28_regular.xml create mode 100644 mastodon/src/github/res/drawable/ic_fluent_open_24_regular.xml create mode 100644 mastodon/src/github/res/drawable/ic_fluent_sign_out_24_regular.xml create mode 100644 mastodon/src/main/java/org/joinmastodon/android/api/requests/notifications/DismissNotification.java create mode 100644 mastodon/src/main/res/drawable/ic_fluent_person_swap_24_regular.xml diff --git a/mastodon/src/github/res/drawable/ic_fluent_mail_inbox_dismiss_24_regular.xml b/mastodon/src/github/res/drawable/ic_fluent_mail_inbox_dismiss_24_regular.xml new file mode 100644 index 000000000..e32e4fab5 --- /dev/null +++ b/mastodon/src/github/res/drawable/ic_fluent_mail_inbox_dismiss_24_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/github/res/drawable/ic_fluent_mail_inbox_dismiss_28_regular.xml b/mastodon/src/github/res/drawable/ic_fluent_mail_inbox_dismiss_28_regular.xml new file mode 100644 index 000000000..2ea945f3d --- /dev/null +++ b/mastodon/src/github/res/drawable/ic_fluent_mail_inbox_dismiss_28_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/github/res/drawable/ic_fluent_open_24_regular.xml b/mastodon/src/github/res/drawable/ic_fluent_open_24_regular.xml new file mode 100644 index 000000000..e18fe0aed --- /dev/null +++ b/mastodon/src/github/res/drawable/ic_fluent_open_24_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/github/res/drawable/ic_fluent_sign_out_24_regular.xml b/mastodon/src/github/res/drawable/ic_fluent_sign_out_24_regular.xml new file mode 100644 index 000000000..d20ea1330 --- /dev/null +++ b/mastodon/src/github/res/drawable/ic_fluent_sign_out_24_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java index ac3124565..19fd6cce8 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java +++ b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java @@ -30,6 +30,7 @@ public class GlobalUserPreferences{ public static boolean voteButtonForSingleChoice; public static boolean showDifferentiatedPushNoticationIcons; public static boolean relocatePublishButton; + public static boolean enableDeleteNotifications; public static ThemePreference theme; public static ColorPreference color; @@ -62,6 +63,7 @@ public class GlobalUserPreferences{ disableDividers=prefs.getBoolean("disableDividers", true); relocatePublishButton=prefs.getBoolean("relocatePublishButton", true); voteButtonForSingleChoice=prefs.getBoolean("voteButtonForSingleChoice", true); + enableDeleteNotifications=prefs.getBoolean("enableDeleteNotifications", true); theme=ThemePreference.values()[prefs.getInt("theme", 0)]; recentLanguages=fromJson(prefs.getString("recentLanguages", "{}"), recentLanguagesType, new HashMap<>()); @@ -93,6 +95,7 @@ public class GlobalUserPreferences{ .putBoolean("disableDividers", disableDividers) .putBoolean("relocatePublishButton", relocatePublishButton) .putBoolean("showDifferentiatedPushNoticationIcons", showDifferentiatedPushNoticationIcons) + .putBoolean("enableDeleteNotifications", enableDeleteNotifications) .putInt("theme", theme.ordinal()) .putString("color", color.name()) .putString("recentLanguages", gson.toJson(recentLanguages)) diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/StatusInteractionController.java b/mastodon/src/main/java/org/joinmastodon/android/api/StatusInteractionController.java index 33df962bf..ec45b6d90 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/StatusInteractionController.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/StatusInteractionController.java @@ -19,12 +19,18 @@ import me.grishka.appkit.api.ErrorResponse; public class StatusInteractionController{ private final String accountID; + private final boolean updateCounters; private final HashMap runningFavoriteRequests=new HashMap<>(); private final HashMap runningReblogRequests=new HashMap<>(); private final HashMap runningBookmarkRequests=new HashMap<>(); - public StatusInteractionController(String accountID){ + public StatusInteractionController(String accountID, boolean updateCounters) { this.accountID=accountID; + this.updateCounters=updateCounters; + } + + public StatusInteractionController(String accountID){ + this(accountID, true); } public void setFavorited(Status status, boolean favorited, Consumer cb){ @@ -42,7 +48,7 @@ public class StatusInteractionController{ runningFavoriteRequests.remove(status.id); result.favouritesCount = Math.max(0, status.favouritesCount) + (favorited ? 1 : -1); cb.accept(result); - E.post(new StatusCountersUpdatedEvent(result)); + if (updateCounters) E.post(new StatusCountersUpdatedEvent(result)); } @Override @@ -51,13 +57,13 @@ public class StatusInteractionController{ error.showToast(MastodonApp.context); status.favourited=!favorited; cb.accept(status); - E.post(new StatusCountersUpdatedEvent(status)); + if (updateCounters) E.post(new StatusCountersUpdatedEvent(status)); } }) .exec(accountID); runningFavoriteRequests.put(status.id, req); status.favourited=favorited; - E.post(new StatusCountersUpdatedEvent(status)); + if (updateCounters) E.post(new StatusCountersUpdatedEvent(status)); } public void setReblogged(Status status, boolean reblogged, StatusPrivacy visibility, Consumer cb){ @@ -76,7 +82,7 @@ public class StatusInteractionController{ runningReblogRequests.remove(status.id); result.reblogsCount = Math.max(0, status.reblogsCount) + (reblogged ? 1 : -1); cb.accept(result); - E.post(new StatusCountersUpdatedEvent(result)); + if (updateCounters) E.post(new StatusCountersUpdatedEvent(result)); } @Override @@ -85,13 +91,13 @@ public class StatusInteractionController{ error.showToast(MastodonApp.context); status.reblogged=!reblogged; cb.accept(status); - E.post(new StatusCountersUpdatedEvent(status)); + if (updateCounters) E.post(new StatusCountersUpdatedEvent(status)); } }) .exec(accountID); runningReblogRequests.put(status.id, req); status.reblogged=reblogged; - E.post(new StatusCountersUpdatedEvent(status)); + if (updateCounters) E.post(new StatusCountersUpdatedEvent(status)); } public void setBookmarked(Status status, boolean bookmarked){ @@ -112,7 +118,7 @@ public class StatusInteractionController{ public void onSuccess(Status result){ runningBookmarkRequests.remove(status.id); cb.accept(result); - E.post(new StatusCountersUpdatedEvent(result)); + if (updateCounters) E.post(new StatusCountersUpdatedEvent(result)); } @Override @@ -121,12 +127,12 @@ public class StatusInteractionController{ error.showToast(MastodonApp.context); status.bookmarked=!bookmarked; cb.accept(status); - E.post(new StatusCountersUpdatedEvent(status)); + if (updateCounters) E.post(new StatusCountersUpdatedEvent(status)); } }) .exec(accountID); runningBookmarkRequests.put(status.id, req); status.bookmarked=bookmarked; - E.post(new StatusCountersUpdatedEvent(status)); + if (updateCounters) E.post(new StatusCountersUpdatedEvent(status)); } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/requests/notifications/DismissNotification.java b/mastodon/src/main/java/org/joinmastodon/android/api/requests/notifications/DismissNotification.java new file mode 100644 index 000000000..5c2399774 --- /dev/null +++ b/mastodon/src/main/java/org/joinmastodon/android/api/requests/notifications/DismissNotification.java @@ -0,0 +1,17 @@ +package org.joinmastodon.android.api.requests.notifications; + +import com.google.gson.reflect.TypeToken; + +import org.joinmastodon.android.api.ApiUtils; +import org.joinmastodon.android.api.MastodonAPIRequest; +import org.joinmastodon.android.model.Notification; + +import java.util.EnumSet; +import java.util.List; + +public class DismissNotification extends MastodonAPIRequest{ + public DismissNotification(String id){ + super(HttpMethod.POST, "/notifications/" + (id != null ? id + "/dismiss" : "clear"), Object.class); + setRequestBody(new Object()); + } +} diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSession.java b/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSession.java index 735b19aca..e7fa19d9e 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSession.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSession.java @@ -32,7 +32,7 @@ public class AccountSession{ public Preferences preferences; public AccountActivationInfo activationInfo; private transient MastodonAPIController apiController; - private transient StatusInteractionController statusInteractionController; + private transient StatusInteractionController statusInteractionController, remoteStatusInteractionController; private transient CacheController cacheController; private transient PushSubscriptionManager pushSubscriptionManager; @@ -52,6 +52,10 @@ public class AccountSession{ return domain+"_"+self.id; } + public String getFullUsername() { + return "@"+self.username+"@"+domain; + } + public MastodonAPIController getApiController(){ if(apiController==null) apiController=new MastodonAPIController(this); @@ -64,6 +68,12 @@ public class AccountSession{ return statusInteractionController; } + public StatusInteractionController getRemoteStatusInteractionController(){ + if(remoteStatusInteractionController==null) + remoteStatusInteractionController=new StatusInteractionController(getID(), false); + return remoteStatusInteractionController; + } + public CacheController getCacheController(){ if(cacheController==null) cacheController=new CacheController(getID()); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index 713140adb..4599f1049 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -292,11 +292,11 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList followingBtn.setOnClickListener(this::onFollowersOrFollowingClick); username.setOnLongClickListener(v->{ - String username=account.acct; - if(!username.contains("@")){ - username+="@"+AccountSessionManager.getInstance().getAccount(accountID).domain; + String usernameString=account.acct; + if(!usernameString.contains("@")){ + usernameString+="@"+AccountSessionManager.getInstance().getAccount(accountID).domain; } - UiUtils.copyText(getActivity(), '@'+username); + UiUtils.copyText(username, '@'+usernameString); return true; }); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java b/mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java index e3a1bfc61..15ba797b0 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java @@ -24,9 +24,10 @@ public class ClickableLinksDelegate { private TextView view; private final Runnable longClickRunnable = () -> { - if (selectedSpan != null) selectedSpan.onLongClick(view.getContext()); + if (selectedSpan != null) selectedSpan.onLongClick(view); }; + public ClickableLinksDelegate(TextView view) { this.view=view; hlPaint=new Paint(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java b/mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java index 9cc570efe..8379a6922 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java @@ -3,6 +3,7 @@ package org.joinmastodon.android.ui.text; import android.content.Context; import android.text.TextPaint; import android.text.style.CharacterStyle; +import android.view.View; import org.joinmastodon.android.ui.utils.UiUtils; @@ -40,10 +41,11 @@ public class LinkSpan extends CharacterStyle { } } - public void onLongClick(Context context) { - UiUtils.copyText(context, getType() == Type.URL ? link : text); + public void onLongClick(View view) { + UiUtils.copyText(view, getType() == Type.URL ? link : text); } + public String getLink(){ return link; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index fe28da756..376b47987 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -55,6 +55,7 @@ import org.joinmastodon.android.api.requests.accounts.SetAccountMuted; import org.joinmastodon.android.api.requests.accounts.SetDomainBlocked; import org.joinmastodon.android.api.requests.accounts.AuthorizeFollowRequest; import org.joinmastodon.android.api.requests.accounts.RejectFollowRequest; +//import org.joinmastodon.android.api.requests.notification.DismissNotification; import org.joinmastodon.android.api.requests.notifications.DismissNotification; import org.joinmastodon.android.api.requests.search.GetSearchResults; import org.joinmastodon.android.api.requests.statuses.DeleteStatus; diff --git a/mastodon/src/main/res/drawable/ic_fluent_person_swap_24_regular.xml b/mastodon/src/main/res/drawable/ic_fluent_person_swap_24_regular.xml new file mode 100644 index 000000000..8b7c650c8 --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_fluent_person_swap_24_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/main/res/layout/item_boost_menu.xml b/mastodon/src/main/res/layout/item_boost_menu.xml index fa19a8f6c..91069afcb 100644 --- a/mastodon/src/main/res/layout/item_boost_menu.xml +++ b/mastodon/src/main/res/layout/item_boost_menu.xml @@ -78,6 +78,20 @@ android:layout_width="match_parent" android:layout_marginVertical="8dp" android:background="?colorPollVoted" /> + + \ No newline at end of file diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index be97d90e6..a25e7bb3a 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -94,4 +94,17 @@ Hashtags you follow Copy link to post Open in other account + Open with other account + Bookmark in other account + Bookmarked as %s + Already bookmarked + Favorite from other account + Favorited as %s + Already favorited + Reblog from other account + Reblogged as %s + Already reblogged + Reply with other account + Resource could not be found + Looking it up on %s \ No newline at end of file