Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Copy post and comment information to clipboard #850

Merged
merged 5 commits into from
Jun 23, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
added ClipboardCopyHandler and restructured copy of thumbnail url and…
… comments
Noxor11 committed Jun 23, 2023
commit d06c9e355914de5d7857d3c04741e6b232b41a04
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package com.jerboa.ui.components.comment

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.widget.Toast
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.expandVertically
@@ -71,7 +68,6 @@ import com.jerboa.datatypes.sampleReplyCommentView
import com.jerboa.datatypes.sampleSecondReplyCommentView
import com.jerboa.datatypes.types.*
import com.jerboa.db.Account
import com.jerboa.findActivity
import com.jerboa.isModerator
import com.jerboa.isPostCreator
import com.jerboa.ui.components.common.ActionBarButton
@@ -87,6 +83,7 @@ import com.jerboa.ui.theme.SMALL_PADDING
import com.jerboa.ui.theme.XXL_PADDING
import com.jerboa.ui.theme.colorList
import com.jerboa.ui.theme.muted
import com.jerboa.util.ClipboardCopyHandler

@Composable
fun CommentNodeHeader(
@@ -728,27 +725,13 @@ fun CommentOptionsDialog(
text = stringResource(R.string.comment_node_copy_comment),
icon = Icons.Outlined.ContentCopy,
onClick = {
val activity = ctx.findActivity()

activity?.let {
val clipboard: ClipboardManager = it.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("comment", commentView.comment.content)
clipboard.setPrimaryClip(clip)
Toast.makeText(
ctx,
ctx.getString(R.string.comment_node_comment_copied),
Toast.LENGTH_SHORT,
).show()
} ?: run {
Toast.makeText(
ctx,
ctx.getString(R.string.generic_error),
Toast.LENGTH_SHORT,
).show()
if (ClipboardCopyHandler.copyToClipboard(ctx, commentView.comment.content, "comment")) {
Toast.makeText(ctx, ctx.getString(R.string.comment_node_comment_copied), Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(ctx, ctx.getString(R.string.generic_error), Toast.LENGTH_SHORT).show()
}
},
)

if (!isCreator) {
IconAndTextDrawerItem(
text = stringResource(R.string.comment_node_report_comment),
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package com.jerboa.ui.components.comment.mentionnode

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.widget.Toast
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.expandVertically
@@ -46,7 +43,6 @@ import com.jerboa.datatypes.types.Community
import com.jerboa.datatypes.types.Person
import com.jerboa.datatypes.types.PersonMentionView
import com.jerboa.db.Account
import com.jerboa.findActivity
import com.jerboa.ui.components.comment.CommentBody
import com.jerboa.ui.components.comment.PostAndCommunityContextHeader
import com.jerboa.ui.components.common.ActionBarButton
@@ -57,6 +53,7 @@ import com.jerboa.ui.theme.LARGE_PADDING
import com.jerboa.ui.theme.SMALL_PADDING
import com.jerboa.ui.theme.XXL_PADDING
import com.jerboa.ui.theme.muted
import com.jerboa.util.ClipboardCopyHandler

@Composable
fun CommentMentionNodeHeader(
@@ -281,23 +278,10 @@ fun CommentReplyNodeOptionsDialog(
text = stringResource(R.string.comment_mention_node_copy_comment),
icon = Icons.Outlined.ContentCopy,
onClick = {
val activity = ctx.findActivity()

activity?.let {
val clipboard: ClipboardManager = it.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("comment", personMentionView.comment.content)
clipboard.setPrimaryClip(clip)
Toast.makeText(
ctx,
ctx.getString(R.string.comment_mention_node_comment_copied),
Toast.LENGTH_SHORT,
).show()
} ?: run {
Toast.makeText(
ctx,
ctx.getString(R.string.generic_error),
Toast.LENGTH_SHORT,
).show()
if (ClipboardCopyHandler.copyToClipboard(ctx, personMentionView.comment.content, "comment")) {
Toast.makeText(ctx, ctx.getString(R.string.comment_mention_node_comment_copied), Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(ctx, ctx.getString(R.string.generic_error), Toast.LENGTH_SHORT).show()
}
},
)
26 changes: 5 additions & 21 deletions app/src/main/java/com/jerboa/ui/components/post/PostListing.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package com.jerboa.ui.components.post

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.widget.Toast
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
@@ -77,7 +74,6 @@ import com.jerboa.datatypes.types.Person
import com.jerboa.datatypes.types.Post
import com.jerboa.datatypes.types.PostView
import com.jerboa.db.Account
import com.jerboa.findActivity
import com.jerboa.hostName
import com.jerboa.isImage
import com.jerboa.isSameInstance
@@ -113,6 +109,7 @@ import com.jerboa.ui.theme.POST_LINK_PIC_SIZE
import com.jerboa.ui.theme.SMALL_PADDING
import com.jerboa.ui.theme.XXL_PADDING
import com.jerboa.ui.theme.muted
import com.jerboa.util.ClipboardCopyHandler

@Composable
fun PostHeaderLine(
@@ -1453,23 +1450,10 @@ fun PostOptionsDialog(
text = stringResource(R.string.post_listing_copy_thumbnail_url),
icon = Icons.Outlined.ContentCopy,
onClick = {
val activity = ctx.findActivity()

activity?.let {
val clipboard: ClipboardManager = it.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("thumbnail url", postView.post.thumbnail_url)
clipboard.setPrimaryClip(clip)
Toast.makeText(
ctx,
ctx.getString(R.string.post_listing_thumbnail_url_copied),
Toast.LENGTH_SHORT,
).show()
} ?: run {
Toast.makeText(
ctx,
ctx.getString(R.string.generic_error),
Toast.LENGTH_SHORT,
).show()
if (ClipboardCopyHandler.copyToClipboard(ctx, postView.post.thumbnail_url, "thumbnail url")) {
Toast.makeText(ctx, ctx.getString(R.string.post_listing_thumbnail_url_copied), Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(ctx, ctx.getString(R.string.generic_error), Toast.LENGTH_SHORT).show()
}
},
)
20 changes: 20 additions & 0 deletions app/src/main/java/com/jerboa/util/ClipboardCopyHandler.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.jerboa.util

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import com.jerboa.findActivity

object ClipboardCopyHandler {
fun copyToClipboard(context: Context, textToCopy: CharSequence, clipLabel: CharSequence): Boolean {
val activity = context.findActivity()
activity?.let {
val clipboard: ClipboardManager = it.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText(clipLabel, textToCopy)
clipboard.setPrimaryClip(clip)
return true
} ?: run {
return false
}
}
}