aboutsummaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2017-10-24 17:47:52 -0400
committerGitHub <noreply@github.com>2017-10-24 17:47:52 -0400
commit3e0d4547a5618463508cb9f13a4c8158c161b11f (patch)
treeedd37abe26e5548deed540e7635c824292e70b2c /app/src/main
parente4b3f3534a099d61eb2537f39d09bc40b4636b30 (diff)
downloadfrost-3e0d4547a5618463508cb9f13a4c8158c161b11f.tar.gz
frost-3e0d4547a5618463508cb9f13a4c8158c161b11f.tar.bz2
frost-3e0d4547a5618463508cb9f13a4c8158c161b11f.zip
misc (#428)
* Add permission check * Validate uri before downloading * Update links, addresses # 411 * Update crashlytics
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt5
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/contracts/FileChooser.kt18
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/Downloader.kt5
-rw-r--r--app/src/main/res/values/strings_no_translate.xml3
4 files changed, 23 insertions, 8 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt
index b7bacbc2..8168efca 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt
@@ -133,8 +133,9 @@ class AboutActivity : AboutActivityBase(null, {
val size = c.dimenPixelSize(R.dimen.kau_avatar_bounds)
images = arrayOf<Pair<IIcon, () -> Unit>>(
GoogleMaterial.Icon.gmd_star to { c.startPlayStoreLink(R.string.play_store_package_id) },
- CommunityMaterial.Icon.cmd_reddit to { c.startLink("https://www.reddit.com/r/FrostForFacebook/") },
- CommunityMaterial.Icon.cmd_github_circle to { c.startLink("https://github.com/AllanWang/Frost-for-Facebook") }
+ CommunityMaterial.Icon.cmd_reddit to { c.startLink(R.string.reddit_url) },
+ CommunityMaterial.Icon.cmd_github_circle to { c.startLink(R.string.github_url) },
+ CommunityMaterial.Icon.cmd_xda to { c.startLink(R.string.xda_url) }
).mapIndexed { i, (icon, onClick) ->
ImageView(c).apply {
layoutParams = ViewGroup.LayoutParams(size, size)
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/contracts/FileChooser.kt b/app/src/main/kotlin/com/pitchedapps/frost/contracts/FileChooser.kt
index 50ab3acb..26b10532 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/contracts/FileChooser.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/contracts/FileChooser.kt
@@ -5,6 +5,8 @@ import android.content.Intent
import android.net.Uri
import android.webkit.ValueCallback
import android.webkit.WebChromeClient
+import ca.allanwang.kau.permissions.PERMISSION_WRITE_EXTERNAL_STORAGE
+import ca.allanwang.kau.permissions.kauRequestPermissions
import ca.allanwang.kau.utils.string
import com.pitchedapps.frost.R
import com.pitchedapps.frost.utils.L
@@ -29,11 +31,17 @@ class FileChooserDelegate : FileChooserContract {
override var filePathCallback: ValueCallback<Array<Uri>?>? = null
override fun Activity.openMediaPicker(filePathCallback: ValueCallback<Array<Uri>?>, fileChooserParams: WebChromeClient.FileChooserParams) {
- this@FileChooserDelegate.filePathCallback = filePathCallback
- val intent = Intent()
- intent.type = fileChooserParams.acceptTypes.firstOrNull()
- intent.action = Intent.ACTION_GET_CONTENT
- startActivityForResult(Intent.createChooser(intent, string(R.string.pick_image)), MEDIA_CHOOSER_RESULT)
+ kauRequestPermissions(PERMISSION_WRITE_EXTERNAL_STORAGE) { granted, _ ->
+ if (!granted) {
+ filePathCallback.onReceiveValue(null)
+ return@kauRequestPermissions
+ }
+ this@FileChooserDelegate.filePathCallback = filePathCallback
+ val intent = Intent()
+ intent.type = fileChooserParams.acceptTypes.firstOrNull()
+ intent.action = Intent.ACTION_GET_CONTENT
+ startActivityForResult(Intent.createChooser(intent, string(R.string.pick_image)), MEDIA_CHOOSER_RESULT)
+ }
}
override fun Activity.onActivityResultWeb(requestCode: Int, resultCode: Int, intent: Intent?): Boolean {
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/Downloader.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/Downloader.kt
index ac9745f9..53cede18 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/utils/Downloader.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/Downloader.kt
@@ -20,9 +20,12 @@ import com.pitchedapps.frost.dbflow.loadFbCookie
*/
fun Context.frostDownload(url: String, userAgent: String, contentDisposition: String, mimeType: String, contentLength: Long) {
L.d("Received download request", "Download $url")
+ val uri = Uri.parse(url) ?: return
+ if (uri.scheme != "http" && uri.scheme != "https")
+ return L.e("Invalid download attempt", url)
kauRequestPermissions(PERMISSION_WRITE_EXTERNAL_STORAGE) { granted, _ ->
if (!granted) return@kauRequestPermissions
- val request = DownloadManager.Request(Uri.parse(url))
+ val request = DownloadManager.Request(uri)
request.setMimeType(mimeType)
val cookie = loadFbCookie(Prefs.userId) ?: return@kauRequestPermissions
request.addRequestHeader("cookie", cookie.cookie)
diff --git a/app/src/main/res/values/strings_no_translate.xml b/app/src/main/res/values/strings_no_translate.xml
index 4651668b..e7155df9 100644
--- a/app/src/main/res/values/strings_no_translate.xml
+++ b/app/src/main/res/values/strings_no_translate.xml
@@ -4,6 +4,9 @@
<string name="paypal" translatable="false">PayPal</string>
<string name="play_store_package_id" translatable="false">com.pitchedapps.frost</string>
<string name="translation_url" translatable="false">https://crwd.in/frost-for-facebook</string>
+ <string name="github_url">https://github.com/AllanWang/Frost-for-Facebook</string>
+ <string name="reddit_url">https://www.reddit.com/r/FrostForFacebook</string>
+ <string name="xda_url" translatable="false">https://forum.xda-developers.com/android/apps-games/app-frost-facebook-t3685896</string>
<string name="frost_prefix" translatable="false">Frost for Facebook:</string>
<string name="feedback" translatable="false">Feedback</string>
<string name="bug_report" translatable="false">Bug Report</string>