mirror of
https://github.com/AllanWang/Frost-for-Facebook.git
synced 2024-11-10 13:02:35 +01:00
Revert/mediapicker (#407)
* Remove kau mediapicker * Allow cancellation and clean up * Fix up downloader
This commit is contained in:
parent
32ff6c3269
commit
4ad2d23cec
@ -135,12 +135,6 @@
|
||||
<activity
|
||||
android:name=".activities.ImageActivity"
|
||||
android:theme="@style/FrostTheme.Transparent" />
|
||||
<activity
|
||||
android:name=".activities.ImagePickerActivity"
|
||||
android:theme="@style/Kau.MediaPicker.Overlay" />
|
||||
<activity
|
||||
android:name=".activities.VideoPickerActivity"
|
||||
android:theme="@style/Kau.MediaPicker.Overlay" />
|
||||
|
||||
<service
|
||||
android:name=".services.NotificationService"
|
||||
|
@ -372,7 +372,7 @@ class MainActivity : BaseActivity(),
|
||||
return true
|
||||
}
|
||||
|
||||
override fun openFileChooser(filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams: WebChromeClient.FileChooserParams) {
|
||||
override fun openFileChooser(filePathCallback: ValueCallback<Array<Uri>?>, fileChooserParams: WebChromeClient.FileChooserParams) {
|
||||
openMediaPicker(filePathCallback, fileChooserParams)
|
||||
}
|
||||
|
||||
|
@ -1,30 +0,0 @@
|
||||
package com.pitchedapps.frost.activities
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import android.support.v4.content.FileProvider
|
||||
import ca.allanwang.kau.mediapicker.*
|
||||
import ca.allanwang.kau.utils.colorToBackground
|
||||
import com.pitchedapps.frost.BuildConfig
|
||||
import com.pitchedapps.frost.utils.Prefs
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* Created by Allan Wang on 2017-07-23.
|
||||
*/
|
||||
private fun actions(): List<MediaAction> {
|
||||
val color = Prefs.accentColorForWhite
|
||||
return listOf(object : MediaActionCamera(color) {
|
||||
|
||||
override fun createFile(context: Context): File
|
||||
= createMediaFile("Frost", ".jpg")
|
||||
|
||||
override fun createUri(context: Context, file: File): Uri
|
||||
= FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", file)
|
||||
|
||||
}, MediaActionGallery(color = color.colorToBackground(0.1f)))
|
||||
}
|
||||
|
||||
class ImagePickerActivity : MediaPickerActivityOverlayBase(MediaType.IMAGE, actions())
|
||||
|
||||
class VideoPickerActivity : MediaPickerActivityOverlayBase(MediaType.VIDEO, actions())
|
@ -192,7 +192,7 @@ open class WebOverlayActivityBase(private val forceBasicAgent: Boolean) : KauBas
|
||||
}
|
||||
}
|
||||
|
||||
override fun openFileChooser(filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams: WebChromeClient.FileChooserParams) {
|
||||
override fun openFileChooser(filePathCallback: ValueCallback<Array<Uri>?>, fileChooserParams: WebChromeClient.FileChooserParams) {
|
||||
openMediaPicker(filePathCallback, fileChooserParams)
|
||||
}
|
||||
|
||||
|
@ -5,10 +5,8 @@ import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.webkit.ValueCallback
|
||||
import android.webkit.WebChromeClient
|
||||
import ca.allanwang.kau.mediapicker.kauLaunchMediaPicker
|
||||
import ca.allanwang.kau.mediapicker.kauOnMediaPickerResult
|
||||
import com.pitchedapps.frost.activities.ImagePickerActivity
|
||||
import com.pitchedapps.frost.activities.VideoPickerActivity
|
||||
import ca.allanwang.kau.utils.string
|
||||
import com.pitchedapps.frost.R
|
||||
import com.pitchedapps.frost.utils.L
|
||||
|
||||
/**
|
||||
@ -17,33 +15,32 @@ import com.pitchedapps.frost.utils.L
|
||||
const val MEDIA_CHOOSER_RESULT = 67
|
||||
|
||||
interface FileChooserActivityContract {
|
||||
fun openFileChooser(filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams: WebChromeClient.FileChooserParams)
|
||||
fun openFileChooser(filePathCallback: ValueCallback<Array<Uri>?>, fileChooserParams: WebChromeClient.FileChooserParams)
|
||||
}
|
||||
|
||||
interface FileChooserContract {
|
||||
var filePathCallback: ValueCallback<Array<Uri>>?
|
||||
fun Activity.openMediaPicker(filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams: WebChromeClient.FileChooserParams)
|
||||
var filePathCallback: ValueCallback<Array<Uri>?>?
|
||||
fun Activity.openMediaPicker(filePathCallback: ValueCallback<Array<Uri>?>, fileChooserParams: WebChromeClient.FileChooserParams)
|
||||
fun Activity.onActivityResultWeb(requestCode: Int, resultCode: Int, intent: Intent?): Boolean
|
||||
}
|
||||
|
||||
class FileChooserDelegate : FileChooserContract {
|
||||
|
||||
override var filePathCallback: ValueCallback<Array<Uri>>? = null
|
||||
override var filePathCallback: ValueCallback<Array<Uri>?>? = null
|
||||
|
||||
override fun Activity.openMediaPicker(filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams: WebChromeClient.FileChooserParams) {
|
||||
override fun Activity.openMediaPicker(filePathCallback: ValueCallback<Array<Uri>?>, fileChooserParams: WebChromeClient.FileChooserParams) {
|
||||
this@FileChooserDelegate.filePathCallback = filePathCallback
|
||||
val isVideo = fileChooserParams.acceptTypes.firstOrNull() == "video/*"
|
||||
kauLaunchMediaPicker(if (isVideo) VideoPickerActivity::class.java else ImagePickerActivity::class.java, MEDIA_CHOOSER_RESULT)
|
||||
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 {
|
||||
L.d("FileChooser On activity results web $requestCode")
|
||||
if (requestCode != MEDIA_CHOOSER_RESULT) return false
|
||||
val results = kauOnMediaPickerResult(resultCode, intent).map { it.uri }.toTypedArray()
|
||||
L.i("FileChooser result ${results.contentToString()}")
|
||||
//proper path content://com.android.providers.media.documents/document/image%3A36341
|
||||
L.d("FileChooser Callback received; ${filePathCallback != null}")
|
||||
filePathCallback?.onReceiveValue(results)
|
||||
val data = intent?.data
|
||||
filePathCallback?.onReceiveValue(if (data != null) arrayOf(data) else null)
|
||||
filePathCallback = null
|
||||
return true
|
||||
}
|
||||
|
@ -8,6 +8,8 @@ import android.os.Environment
|
||||
import android.webkit.URLUtil
|
||||
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.dbflow.loadFbCookie
|
||||
|
||||
|
||||
@ -20,14 +22,12 @@ fun Context.frostDownload(url: String, userAgent: String, contentDisposition: St
|
||||
L.d("Received download request", "Download $url")
|
||||
kauRequestPermissions(PERMISSION_WRITE_EXTERNAL_STORAGE) { granted, _ ->
|
||||
if (!granted) return@kauRequestPermissions
|
||||
|
||||
val request = DownloadManager.Request(Uri.parse(url))
|
||||
|
||||
request.setMimeType(mimeType)
|
||||
val cookie = loadFbCookie(Prefs.userId) ?: return@kauRequestPermissions
|
||||
request.addRequestHeader("cookie", cookie.cookie)
|
||||
request.addRequestHeader("User-Agent", userAgent)
|
||||
request.setDescription("Downloading file...")
|
||||
request.setDescription(string(R.string.downloading))
|
||||
request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimeType))
|
||||
request.allowScanningByMediaScanner()
|
||||
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
|
||||
|
@ -69,7 +69,7 @@ class FrostChromeClient(webCore: FrostWebViewCore) : WebChromeClient() {
|
||||
progressObservable.onNext(newProgress)
|
||||
}
|
||||
|
||||
override fun onShowFileChooser(webView: WebView, filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams: FileChooserParams): Boolean {
|
||||
override fun onShowFileChooser(webView: WebView, filePathCallback: ValueCallback<Array<Uri>?>, fileChooserParams: FileChooserParams): Boolean {
|
||||
activityContract?.openFileChooser(filePathCallback, fileChooserParams) ?: webView.frostSnackbar(R.string.file_chooser_not_found)
|
||||
return activityContract != null
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="pick_image">Pick Image</string>
|
||||
<string name="downloading">Downloading…</string>
|
||||
<string name="image_download_success">Image downloaded</string>
|
||||
<string name="image_download_fail">Image failed to download</string>
|
||||
<string name="image_share_failed">Failed to share image</string>
|
||||
|
Loading…
Reference in New Issue
Block a user