Skip to content

Commit d45e12d

Browse files
committed
add toread preference. improve bookmark parsing.
1 parent 5d26760 commit d45e12d

File tree

5 files changed

+45
-25
lines changed

5 files changed

+45
-25
lines changed

.idea/misc.xml

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

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ android {
1111
minSdk 28
1212
targetSdk 31
1313
versionCode 1
14-
versionName "0.0.3"
14+
versionName "0.0.4"
1515

1616
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1717
}

app/src/main/java/com/espial/espialshare/EspialCore.kt

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package com.espial.espialshare
22

3-
import android.content.Context
43
import android.content.Intent
54
import android.util.Patterns
6-
import androidx.preference.PreferenceManager
75
import java.net.URLEncoder
86

97
class EspialCore {
@@ -13,7 +11,6 @@ class EspialCore {
1311
}
1412

1513
private fun toEspialGetUrl(espialServerUrl: String, addParams: AddParams): String {
16-
1714
return when (addParams) {
1815
is AddParams.Bookmark ->
1916
"$espialServerUrl/add?url=${enc(addParams.Url)}&title=${enc(addParams.Title)}&description=${enc(addParams.Description)}&next=closeWindow"
@@ -26,26 +23,41 @@ class EspialCore {
2623
val extraText = intent.getStringExtra(Intent.EXTRA_TEXT) ?: ""
2724
val extraSubject = intent.getStringExtra(Intent.EXTRA_SUBJECT) ?: ""
2825

29-
val res = extraText.split('\n')
30-
return if(res.count() > 1) {
31-
val lastUrl = res.last().trim().takeWhile { it != '#' }
32-
if(isUrl(lastUrl)) {
33-
val content = res.dropLast(1).joinToString("\n").removeSurrounding("\"")
34-
if(content.length < 80) {
35-
AddParams.Bookmark(lastUrl, content, "")
36-
} else {
37-
AddParams.Bookmark(lastUrl, "", content)
38-
}
39-
} else {
40-
AddParams.Note(extraSubject, extraText)
41-
}
42-
} else if(isUrl(extraText)) {
26+
var addParams = trySplitAndParseBookmark(extraText, "\n")
27+
if (addParams != null) return addParams
28+
addParams = trySplitAndParseBookmark(extraText, " ")
29+
if (addParams != null) return addParams
30+
31+
return if (isUrl(extraText)) {
4332
AddParams.Bookmark(extraText, extraSubject, "")
33+
} else if (isUrl(extraSubject)) {
34+
AddParams.Bookmark(extraSubject, extraText, "")
4435
} else {
4536
AddParams.Note(extraSubject, extraText)
4637
}
4738
}
4839

40+
private fun trySplitAndParseBookmark(input: String, delimiter: String): AddParams? {
41+
val tokens = input.split(delimiter)
42+
if (tokens.count() <= 1) {
43+
return null
44+
}
45+
val lastToken = stripHash(tokens.last())
46+
if (!isUrl(lastToken)) {
47+
return null
48+
}
49+
val content =
50+
tokens.dropLast(1).joinToString(delimiter).removeSurrounding("\"")
51+
return if (content.length < 80) {
52+
AddParams.Bookmark(lastToken, content, "")
53+
} else {
54+
AddParams.Bookmark(lastToken, "", content)
55+
}
56+
}
57+
58+
private fun stripHash(res: String) =
59+
res.trim().takeWhile { it != '#' }
60+
4961
private fun enc(s: String) =
5062
URLEncoder.encode(s, "utf-8")
5163

app/src/main/java/com/espial/espialshare/ReadLaterActivity.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class ReadLaterActivity : Activity() {
6060
Intent.ACTION_SEND -> {
6161
if ("text/plain" == intent.type) {
6262
val addParams = EspialCore().toAddParams(intent)
63-
val postData = toPostData(addParams)
63+
val postData = toPostData(addParams, sharedPreferences.getBoolean("espial_readlater_marktoread", true))
6464
if (postData == null) {
6565
finish()
6666
return
@@ -89,14 +89,14 @@ class ReadLaterActivity : Activity() {
8989
return requestBuilder.build()
9090
}
9191

92-
private fun toPostData(addParams: EspialCore.AddParams): JSONObject? {
92+
private fun toPostData(addParams: EspialCore.AddParams, toRead: Boolean): JSONObject? {
9393
when (addParams) {
9494
is EspialCore.AddParams.Bookmark -> {
9595
val postData = JSONObject()
9696
postData.put("url", addParams.Url)
9797
postData.put("title", addParams.Title)
9898
postData.put("description", addParams.Description)
99-
postData.put("toread", true)
99+
postData.put("toread", toRead)
100100
return postData
101101
}
102102
is EspialCore.AddParams.Note -> {
Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1-
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" >
1+
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
22

3-
<PreferenceCategory app:title="@string/config_header">
3+
<PreferenceCategory app:title="@string/config_header">
44

55
<EditTextPreference
6-
app:key="espial_server_url"
76
app:defaultValue=""
7+
app:key="espial_server_url"
88
app:title="Espial Server Url"
99
app:useSimpleSummaryProvider="true" />
1010

1111
<EditTextPreference
12-
app:key="espial_api_key"
1312
app:defaultValue=""
13+
app:key="espial_api_key"
1414
app:title="ApiKey"
1515
app:useSimpleSummaryProvider="true" />
1616

1717
</PreferenceCategory>
18+
<PreferenceCategory app:title="Read Later">
19+
<SwitchPreferenceCompat
20+
app:defaultValue="true"
21+
app:key="espial_readlater_marktoread"
22+
app:title="Mark as to-read"
23+
app:useSimpleSummaryProvider="true" />
24+
</PreferenceCategory>
1825

1926
</PreferenceScreen>

0 commit comments

Comments
 (0)