Skip to content

Commit 0023b6f

Browse files
committed
Ability to go to the origin of a crosspost
1 parent 7acc3a5 commit 0023b6f

File tree

3 files changed

+46
-4
lines changed

3 files changed

+46
-4
lines changed

Diff for: src/main/java/org/quantumbadger/redreader/reddit/api/RedditPostActions.kt

+42-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@
1717

1818
package org.quantumbadger.redreader.reddit.api
1919

20-
import android.content.*
20+
import android.content.ActivityNotFoundException
21+
import android.content.ClipData
22+
import android.content.ClipboardManager
23+
import android.content.Context
24+
import android.content.DialogInterface
25+
import android.content.Intent
2126
import android.graphics.Color
2227
import android.view.LayoutInflater
2328
import android.widget.ImageButton
@@ -28,10 +33,22 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
2833
import org.apache.commons.text.StringEscapeUtils
2934
import org.quantumbadger.redreader.R
3035
import org.quantumbadger.redreader.account.RedditAccountManager
31-
import org.quantumbadger.redreader.activities.*
36+
import org.quantumbadger.redreader.activities.BaseActivity
37+
import org.quantumbadger.redreader.activities.BugReportActivity
38+
import org.quantumbadger.redreader.activities.CommentEditActivity
39+
import org.quantumbadger.redreader.activities.CommentReplyActivity
40+
import org.quantumbadger.redreader.activities.MainActivity
41+
import org.quantumbadger.redreader.activities.PostListingActivity
42+
import org.quantumbadger.redreader.activities.WebViewActivity
3243
import org.quantumbadger.redreader.cache.CacheManager
33-
import org.quantumbadger.redreader.common.*
44+
import org.quantumbadger.redreader.common.AndroidCommon
45+
import org.quantumbadger.redreader.common.Constants
46+
import org.quantumbadger.redreader.common.FileUtils
47+
import org.quantumbadger.redreader.common.General
48+
import org.quantumbadger.redreader.common.LinkHandler
49+
import org.quantumbadger.redreader.common.PrefsUtility
3450
import org.quantumbadger.redreader.common.PrefsUtility.PostFlingAction
51+
import org.quantumbadger.redreader.common.RRError
3552
import org.quantumbadger.redreader.common.time.TimestampUTC
3653
import org.quantumbadger.redreader.fragments.PostPropertiesDialog
3754
import org.quantumbadger.redreader.reddit.APIResponseHandler.ActionResponseHandler
@@ -42,13 +59,15 @@ import org.quantumbadger.redreader.reddit.prepared.RedditChangeDataManager
4259
import org.quantumbadger.redreader.reddit.prepared.RedditPreparedPost
4360
import org.quantumbadger.redreader.reddit.things.InvalidSubredditNameException
4461
import org.quantumbadger.redreader.reddit.things.SubredditCanonicalId
62+
import org.quantumbadger.redreader.reddit.url.PostCommentListingURL
4563
import org.quantumbadger.redreader.reddit.url.SubredditPostListURL
4664
import org.quantumbadger.redreader.reddit.url.UserProfileURL
4765
import org.quantumbadger.redreader.views.AccessibilityActionManager
4866
import org.quantumbadger.redreader.views.RedditPostView.PostSelectionListener
4967
import org.quantumbadger.redreader.views.bezelmenu.SideToolbarOverlay
5068
import org.quantumbadger.redreader.views.bezelmenu.VerticalToolbar
5169

70+
5271
object RedditPostActions {
5372

5473
enum class Action(@StringRes val descriptionResId: Int) {
@@ -85,7 +104,9 @@ object RedditPostActions {
85104
PIN(R.string.action_pin_subreddit),
86105
UNPIN(R.string.action_unpin_subreddit),
87106
SUBSCRIBE(R.string.action_subscribe_subreddit),
88-
UNSUBSCRIBE(R.string.action_unsubscribe_subreddit)
107+
UNSUBSCRIBE(R.string.action_unsubscribe_subreddit),
108+
CROSSPOST_ORIGIN(R.string.action_crosspost_origin)
109+
89110
}
90111

91112
data class ActionDescriptionPair(
@@ -346,6 +367,11 @@ object RedditPostActions {
346367
.setNegativeButton(R.string.dialog_cancel, null)
347368
.show()
348369

370+
Action.CROSSPOST_ORIGIN -> {
371+
val crosspostOriginPost = PostCommentListingURL.forPostId(post.src.isCrosspost)
372+
LinkHandler.onLinkClicked(activity, crosspostOriginPost.toString())
373+
}
374+
349375
Action.EXTERNAL -> {
350376
try {
351377
val url = if (activity is WebViewActivity) activity.currentUrl else post.src.url
@@ -669,6 +695,18 @@ object RedditPostActions {
669695
)
670696
)
671697
}
698+
if (post.src.isCrosspost != null) {
699+
if (itemPref.contains(Action.CROSSPOST_ORIGIN)) {
700+
menu.add(
701+
RPVMenuItem(
702+
String.format(
703+
activity.getText(R.string.action_crosspost_origin).toString(),
704+
),
705+
Action.CROSSPOST_ORIGIN
706+
)
707+
)
708+
}
709+
}
672710
if (!RedditAccountManager.getInstance(activity).defaultAccount.isAnonymous) {
673711
if (itemPref.contains(Action.SAVE)) {
674712
if (!post.isSaved) {

Diff for: src/main/res/values/arrays.xml

+3
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,7 @@
439439
<item>@string/action_upvote</item>
440440
<item>@string/action_downvote</item>
441441
<item>@string/action_comments</item>
442+
<item>@string/action_crosspost_origin</item>
442443
<item>@string/action_save</item>
443444
<item>@string/action_hide</item>
444445
<item>@string/action_delete</item>
@@ -466,6 +467,7 @@
466467
<item>upvote</item>
467468
<item>downvote</item>
468469
<item>comments</item>
470+
<item>crosspost_origin</item>
469471
<item>save</item>
470472
<item>hide</item>
471473
<item>delete</item>
@@ -1127,6 +1129,7 @@
11271129
<item>user_profile</item>
11281130
<item>properties</item>
11291131
<item>edit</item>
1132+
<item>crosspost_origin</item>
11301133
</string-array>
11311134

11321135
<!-- 2020-10-31 -->

Diff for: src/main/res/values/strings.xml

+1
Original file line numberDiff line numberDiff line change
@@ -1833,4 +1833,5 @@
18331833
<string name="crosspost">Crosspost</string>
18341834
<string name="pref_appearance_post_subtitle_items_crosspost">Crosspost tag</string>
18351835
<string name="accessibility_subtitle_crosspost">Crosspost.</string>
1836+
<string name="action_crosspost_origin">Go to Crosspost Origin</string>
18361837
</resources>

0 commit comments

Comments
 (0)