From 0023b6f4d2cdd2d7d0b57f8eef3afe3fd219e060 Mon Sep 17 00:00:00 2001 From: folkemat Date: Sat, 13 Jan 2024 06:43:57 +0100 Subject: [PATCH] Ability to go to the origin of a crosspost --- .../redreader/reddit/api/RedditPostActions.kt | 46 +++++++++++++++++-- src/main/res/values/arrays.xml | 3 ++ src/main/res/values/strings.xml | 1 + 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/reddit/api/RedditPostActions.kt b/src/main/java/org/quantumbadger/redreader/reddit/api/RedditPostActions.kt index a820f46c4..0fedfa2a9 100644 --- a/src/main/java/org/quantumbadger/redreader/reddit/api/RedditPostActions.kt +++ b/src/main/java/org/quantumbadger/redreader/reddit/api/RedditPostActions.kt @@ -17,7 +17,12 @@ package org.quantumbadger.redreader.reddit.api -import android.content.* +import android.content.ActivityNotFoundException +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context +import android.content.DialogInterface +import android.content.Intent import android.graphics.Color import android.view.LayoutInflater import android.widget.ImageButton @@ -28,10 +33,22 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.apache.commons.text.StringEscapeUtils import org.quantumbadger.redreader.R import org.quantumbadger.redreader.account.RedditAccountManager -import org.quantumbadger.redreader.activities.* +import org.quantumbadger.redreader.activities.BaseActivity +import org.quantumbadger.redreader.activities.BugReportActivity +import org.quantumbadger.redreader.activities.CommentEditActivity +import org.quantumbadger.redreader.activities.CommentReplyActivity +import org.quantumbadger.redreader.activities.MainActivity +import org.quantumbadger.redreader.activities.PostListingActivity +import org.quantumbadger.redreader.activities.WebViewActivity import org.quantumbadger.redreader.cache.CacheManager -import org.quantumbadger.redreader.common.* +import org.quantumbadger.redreader.common.AndroidCommon +import org.quantumbadger.redreader.common.Constants +import org.quantumbadger.redreader.common.FileUtils +import org.quantumbadger.redreader.common.General +import org.quantumbadger.redreader.common.LinkHandler +import org.quantumbadger.redreader.common.PrefsUtility import org.quantumbadger.redreader.common.PrefsUtility.PostFlingAction +import org.quantumbadger.redreader.common.RRError import org.quantumbadger.redreader.common.time.TimestampUTC import org.quantumbadger.redreader.fragments.PostPropertiesDialog import org.quantumbadger.redreader.reddit.APIResponseHandler.ActionResponseHandler @@ -42,6 +59,7 @@ import org.quantumbadger.redreader.reddit.prepared.RedditChangeDataManager import org.quantumbadger.redreader.reddit.prepared.RedditPreparedPost import org.quantumbadger.redreader.reddit.things.InvalidSubredditNameException import org.quantumbadger.redreader.reddit.things.SubredditCanonicalId +import org.quantumbadger.redreader.reddit.url.PostCommentListingURL import org.quantumbadger.redreader.reddit.url.SubredditPostListURL import org.quantumbadger.redreader.reddit.url.UserProfileURL import org.quantumbadger.redreader.views.AccessibilityActionManager @@ -49,6 +67,7 @@ import org.quantumbadger.redreader.views.RedditPostView.PostSelectionListener import org.quantumbadger.redreader.views.bezelmenu.SideToolbarOverlay import org.quantumbadger.redreader.views.bezelmenu.VerticalToolbar + object RedditPostActions { enum class Action(@StringRes val descriptionResId: Int) { @@ -85,7 +104,9 @@ object RedditPostActions { PIN(R.string.action_pin_subreddit), UNPIN(R.string.action_unpin_subreddit), SUBSCRIBE(R.string.action_subscribe_subreddit), - UNSUBSCRIBE(R.string.action_unsubscribe_subreddit) + UNSUBSCRIBE(R.string.action_unsubscribe_subreddit), + CROSSPOST_ORIGIN(R.string.action_crosspost_origin) + } data class ActionDescriptionPair( @@ -346,6 +367,11 @@ object RedditPostActions { .setNegativeButton(R.string.dialog_cancel, null) .show() + Action.CROSSPOST_ORIGIN -> { + val crosspostOriginPost = PostCommentListingURL.forPostId(post.src.isCrosspost) + LinkHandler.onLinkClicked(activity, crosspostOriginPost.toString()) + } + Action.EXTERNAL -> { try { val url = if (activity is WebViewActivity) activity.currentUrl else post.src.url @@ -669,6 +695,18 @@ object RedditPostActions { ) ) } + if (post.src.isCrosspost != null) { + if (itemPref.contains(Action.CROSSPOST_ORIGIN)) { + menu.add( + RPVMenuItem( + String.format( + activity.getText(R.string.action_crosspost_origin).toString(), + ), + Action.CROSSPOST_ORIGIN + ) + ) + } + } if (!RedditAccountManager.getInstance(activity).defaultAccount.isAnonymous) { if (itemPref.contains(Action.SAVE)) { if (!post.isSaved) { diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml index 45dad6e15..5285c9216 100644 --- a/src/main/res/values/arrays.xml +++ b/src/main/res/values/arrays.xml @@ -439,6 +439,7 @@ @string/action_upvote @string/action_downvote @string/action_comments + @string/action_crosspost_origin @string/action_save @string/action_hide @string/action_delete @@ -466,6 +467,7 @@ upvote downvote comments + crosspost_origin save hide delete @@ -1127,6 +1129,7 @@ user_profile properties edit + crosspost_origin diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 01760034d..d23361c6d 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1833,4 +1833,5 @@ Crosspost Crosspost tag Crosspost. + Go to Crosspost Origin