From 8db1930d7623ba071123f5978153679da7161278 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 25 Sep 2021 15:55:07 -0700 Subject: Create hilt web file chooser implementation --- .../frost/activities/BaseMainActivity.kt | 19 +++++----------- .../frost/activities/WebOverlayActivity.kt | 26 ++++++++-------------- 2 files changed, 14 insertions(+), 31 deletions(-) (limited to 'app/src/main/kotlin/com/pitchedapps/frost/activities') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt index 3766aef7..84352cb4 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt @@ -24,14 +24,11 @@ import android.content.res.ColorStateList import android.graphics.PointF import android.graphics.drawable.Drawable import android.graphics.drawable.RippleDrawable -import android.net.Uri import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.View import android.view.ViewGroup -import android.webkit.ValueCallback -import android.webkit.WebChromeClient import android.webkit.WebView import android.widget.FrameLayout import android.widget.ImageView @@ -79,10 +76,9 @@ import com.mikepenz.iconics.typeface.IIcon import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial import com.pitchedapps.frost.BuildConfig import com.pitchedapps.frost.R -import com.pitchedapps.frost.contracts.FileChooserContract -import com.pitchedapps.frost.contracts.FileChooserDelegate import com.pitchedapps.frost.contracts.MainActivityContract import com.pitchedapps.frost.contracts.VideoViewHolder +import com.pitchedapps.frost.contracts.WebFileChooser import com.pitchedapps.frost.databinding.ActivityMainBinding import com.pitchedapps.frost.databinding.ActivityMainBottomTabsBinding import com.pitchedapps.frost.databinding.ActivityMainDrawerWrapperBinding @@ -149,7 +145,6 @@ import kotlin.math.abs abstract class BaseMainActivity : BaseActivity(), MainActivityContract, - FileChooserContract by FileChooserDelegate(), VideoViewHolder, SearchViewHolder { @@ -167,6 +162,9 @@ abstract class BaseMainActivity : @Inject lateinit var genericDao: GenericDao + @Inject + lateinit var webFileChooser: WebFileChooser + interface ActivityMainContentBinding { val root: View val toolbar: Toolbar @@ -715,16 +713,9 @@ abstract class BaseMainActivity : return true } - override fun openFileChooser( - filePathCallback: ValueCallback?>, - fileChooserParams: WebChromeClient.FileChooserParams - ) { - openMediaPicker(filePathCallback, fileChooserParams) - } - @SuppressLint("NewApi") override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - if (onActivityResultWeb(requestCode, resultCode, data)) return + if (webFileChooser.onActivityResultWeb(requestCode, resultCode, data)) return super.onActivityResult(requestCode, resultCode, data) fun hasRequest(flag: Int) = resultCode and flag > 0 diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt index 689d9a65..ef7579a8 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt @@ -18,12 +18,9 @@ package com.pitchedapps.frost.activities import android.content.Intent import android.graphics.PointF -import android.net.Uri import android.os.Bundle import android.view.Menu import android.view.MenuItem -import android.webkit.ValueCallback -import android.webkit.WebChromeClient import android.widget.FrameLayout import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout @@ -49,11 +46,9 @@ import ca.allanwang.kau.utils.withMainContext import com.google.android.material.snackbar.BaseTransientBottomBar import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial import com.pitchedapps.frost.R -import com.pitchedapps.frost.contracts.ActivityContract -import com.pitchedapps.frost.contracts.FileChooserContract -import com.pitchedapps.frost.contracts.FileChooserDelegate import com.pitchedapps.frost.contracts.FrostContentContainer import com.pitchedapps.frost.contracts.VideoViewHolder +import com.pitchedapps.frost.contracts.WebFileChooser import com.pitchedapps.frost.enums.OverlayContext import com.pitchedapps.frost.facebook.FB_URL_BASE import com.pitchedapps.frost.facebook.FbItem @@ -70,10 +65,12 @@ import com.pitchedapps.frost.utils.frostSnackbar import com.pitchedapps.frost.views.FrostContentWeb import com.pitchedapps.frost.views.FrostVideoViewer import com.pitchedapps.frost.views.FrostWebView +import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.launch import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import javax.inject.Inject /** * Created by Allan Wang on 2017-06-01. @@ -155,12 +152,11 @@ class WebOverlayDesktopActivity : WebOverlayActivityBase(USER_AGENT_DESKTOP_CONS class WebOverlayActivity : WebOverlayActivityBase() @UseExperimental(ExperimentalCoroutinesApi::class) +@AndroidEntryPoint abstract class WebOverlayActivityBase(private val userAgent: String = USER_AGENT) : BaseActivity(), - ActivityContract, FrostContentContainer, - VideoViewHolder, - FileChooserContract by FileChooserDelegate() { + VideoViewHolder { override val frameWrapper: FrameLayout by bindView(R.id.frame_wrapper) val toolbar: Toolbar by bindView(R.id.overlay_toolbar) @@ -169,6 +165,9 @@ abstract class WebOverlayActivityBase(private val userAgent: String = USER_AGENT get() = content.coreView private val coordinator: CoordinatorLayout by bindView(R.id.overlay_main_content) + @Inject + lateinit var webFileChooser: WebFileChooser + private inline val urlTest: String? get() = intent.getStringExtra(ARG_URL) ?: intent.dataString @@ -297,15 +296,8 @@ abstract class WebOverlayActivityBase(private val userAgent: String = USER_AGENT kauSwipeOnDestroy() } - override fun openFileChooser( - filePathCallback: ValueCallback?>, - fileChooserParams: WebChromeClient.FileChooserParams - ) { - openMediaPicker(filePathCallback, fileChooserParams) - } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - if (onActivityResultWeb(requestCode, resultCode, data)) return + if (webFileChooser.onActivityResultWeb(requestCode, resultCode, data)) return super.onActivityResult(requestCode, resultCode, data) } -- cgit v1.2.3