Skip to content

Commit 98b4a58

Browse files
authored
Add "Share text and link" option (#1995)
1 parent 08c9336 commit 98b4a58

9 files changed

Lines changed: 48 additions & 30 deletions

File tree

app/src/main/assets/mercury-parser.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/assets/stylesheet.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/capyreader/app/common/ContextShareLinkExt.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ fun Context.shareLink(url: String, title: String) {
1414
startActivity(share)
1515
}
1616

17+
fun Context.shareText(text: String) {
18+
val share = Intent.createChooser(Intent().apply {
19+
type = "text/plain"
20+
action = Intent.ACTION_SEND
21+
putExtra(Intent.EXTRA_TEXT, text)
22+
}, null)
23+
startActivity(share)
24+
}
25+
1726
fun Context.shareImage(uri: Uri) {
1827
val shareIntent = Intent(Intent.ACTION_SEND).apply {
1928
putExtra(Intent.EXTRA_STREAM, uri)

app/src/main/java/com/capyreader/app/ui/articles/detail/ShareLinkDialog.kt

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
66
import androidx.compose.foundation.layout.padding
77
import androidx.compose.foundation.rememberScrollState
88
import androidx.compose.foundation.verticalScroll
9-
import androidx.compose.material.icons.Icons
10-
import androidx.compose.material.icons.rounded.ContentCopy
11-
import androidx.compose.material.icons.rounded.Share
129
import androidx.compose.material3.CardDefaults
1310
import androidx.compose.material3.HorizontalDivider
14-
import androidx.compose.material3.Icon
1511
import androidx.compose.material3.ListItem
1612
import androidx.compose.material3.ListItemDefaults
1713
import androidx.compose.material3.Text
@@ -26,6 +22,7 @@ import androidx.compose.ui.unit.sp
2622
import androidx.compose.ui.window.Dialog
2723
import com.capyreader.app.R
2824
import com.capyreader.app.common.shareLink
25+
import com.capyreader.app.common.shareText
2926
import com.capyreader.app.ui.components.DialogCard
3027
import com.capyreader.app.ui.components.ShareLink
3128
import com.capyreader.app.ui.components.buildCopyToClipboard
@@ -40,11 +37,17 @@ fun ShareLinkDialog(
4037
ListItemDefaults.colors(containerColor = CardDefaults.cardColors().containerColor)
4138

4239
val context = LocalContext.current
40+
4341
val shareLink = {
4442
context.shareLink(url = link.url, title = link.text)
4543
onClose()
4644
}
4745

46+
val shareLinkWithText = {
47+
context.shareText(link.string())
48+
onClose()
49+
}
50+
4851
val copy = buildCopyToClipboard(link.url)
4952

5053
val copyLink = {
@@ -85,12 +88,6 @@ fun ShareLinkDialog(
8588
copyLink()
8689
},
8790
colors = listItemColors,
88-
leadingContent = {
89-
Icon(
90-
Icons.Rounded.ContentCopy,
91-
contentDescription = null
92-
)
93-
},
9491
headlineContent = { Text(stringResource(R.string.actions_copy_link)) }
9592
)
9693

@@ -99,14 +96,16 @@ fun ShareLinkDialog(
9996
shareLink()
10097
},
10198
colors = listItemColors,
102-
leadingContent = {
103-
Icon(
104-
Icons.Rounded.Share,
105-
contentDescription = null
106-
)
107-
},
10899
headlineContent = { Text(stringResource(R.string.actions_share_link)) }
109100
)
101+
102+
ListItem(
103+
modifier = Modifier.clickable {
104+
shareLinkWithText()
105+
},
106+
colors = listItemColors,
107+
headlineContent = { Text(stringResource(R.string.actions_share_link_with_title)) }
108+
)
110109
}
111110
}
112111
}

app/src/main/java/com/capyreader/app/ui/components/ShareLink.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@ import androidx.compose.runtime.mutableStateOf
66
import androidx.compose.runtime.saveable.Saver
77
import androidx.compose.runtime.saveable.rememberSaveable
88
import kotlinx.serialization.Serializable
9-
import kotlinx.serialization.encodeToString
109
import kotlinx.serialization.json.Json
1110

1211
@Serializable
1312
data class ShareLink(
1413
val text: String,
1514
val url: String,
16-
)
15+
) {
16+
fun string(): String {
17+
return "$text $url"
18+
}
19+
}
1720

1821
val ShareLink.Companion.Saver
1922
get() = Saver<MutableState<ShareLink?>, String>(

app/src/main/res/raw/template.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,13 @@
3232
<body>
3333
<article role="main">
3434
<header>
35-
<a class="article__header" href="{{external_link}}">
36-
<h1 class="article__title article__title--font-{{title_font_family}}">{{title}}</h1>
35+
<div class="article__header">
36+
<a href="{{external_link}}">
37+
<h1 class="article__title article__title--font-{{title_font_family}}">{{title}}</h1>
38+
</a>
3739
<div>{{byline}}</div>
3840
<div>{{feed_name}}</div>
39-
</a>
41+
</div>
4042
</header>
4143
<div class="article__body article__body--font-{{font_family}}">
4244
<div id="article-body-content">{{body}}</div>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@
310310
<string name="tag_action_edit">Edit Tag</string>
311311
<string name="actions_copy_link">Copy link</string>
312312
<string name="actions_share_link">Share link</string>
313+
<string name="actions_share_link_with_title">Share text and link</string>
313314
<string name="widget_receiver_headlines_title">Headlines</string>
314315
<string name="widget_headlines_title">Latest Headlines</string>
315316
<string name="widget_headlines_see_more_button">See more articles</string>

article_forge/style/stylesheet.scss

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -365,9 +365,11 @@ ul:has(img) {
365365
margin: 0 auto 1rem;
366366
text-align: var(--article-title-text-align);
367367

368-
&:link,
369-
&:visited {
370-
text-decoration: none;
368+
a {
369+
&:link,
370+
&:visited {
371+
text-decoration: none;
372+
}
371373
}
372374
}
373375

0 commit comments

Comments
 (0)