Skip to content

Commit

Permalink
Remove passing of bindings (#57)
Browse files Browse the repository at this point in the history
* The binding should not be passed around

The binding generated by the MainActivity should not be passed around as it can generate memory leaks. This also helps to keep things where they belong instead of doing view logic everywhere. Eventually this could help to write better unit tests.

* Clean some dirty for and remove redundant builder calls

* Update app/src/main/java/to/dev/dev_android/view/main/view/MainActivity.kt

Co-Authored-By: Joan Barroso Garrido <joanbarrosogarrido@gmail.com>

* Adding missing braces as they add readability
  • Loading branch information
sierisimo authored and maestromac committed Nov 6, 2019
1 parent 894887b commit 26d91ec
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ import android.net.Uri
import android.webkit.ValueCallback
import android.webkit.WebChromeClient
import android.webkit.WebView
import to.dev.dev_android.databinding.ActivityMainBinding


class CustomWebChromeClient(
val baseURL: String,
val binding: ActivityMainBinding,
private val baseURL: String,
private val listener: CustomListener
) : WebChromeClient() {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package to.dev.dev_android.view.main.view

import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Build
Expand All @@ -10,9 +9,11 @@ import android.webkit.CookieManager
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.browser.customtabs.CustomTabsIntent
import to.dev.dev_android.databinding.ActivityMainBinding

class CustomWebViewClient(private val context: Context, private val binding: ActivityMainBinding) : WebViewClient() {
class CustomWebViewClient(
private val context: Context,
private val onPageFinish: () -> Unit
) : WebViewClient() {

private val overrideUrlList = listOf(
"://dev.to",
Expand All @@ -21,8 +22,9 @@ class CustomWebViewClient(private val context: Context, private val binding: Act
"github.com/login",
"github.com/sessions/"
)

override fun onPageFinished(view: WebView, url: String?) {
binding.splash.visibility = View.GONE
onPageFinish()
view.visibility = View.VISIBLE
super.onPageFinished(view, url)
}
Expand All @@ -39,22 +41,15 @@ class CustomWebViewClient(private val context: Context, private val binding: Act
}
}

for (i in 0 until overrideUrlList.size) {
if (url.contains(overrideUrlList[i])) {
return false
}
if (overrideUrlList.any { url.contains(it) }) {
return false
}

val builder = CustomTabsIntent.Builder()
builder.setToolbarColor(Color.parseColor("#00000000"))
val customTabsIntent = builder.build()
customTabsIntent.launchUrl(context, Uri.parse(url))
return true
}
CustomTabsIntent.Builder()
.setToolbarColor(Color.parseColor("#00000000"))
.build()
.also { it.launchUrl(context, Uri.parse(url)) }

private fun openBrowser(url: String): Boolean {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
context.startActivity(intent)
return true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.View
import android.webkit.ValueCallback
import androidx.core.app.ActivityCompat
import to.dev.dev_android.R
Expand Down Expand Up @@ -51,8 +52,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), CustomWebChromeClient.
binding.webView.settings.javaScriptEnabled = true
binding.webView.settings.domStorageEnabled = true
binding.webView.addJavascriptInterface(webViewBridge, "androidWebViewBridge")
binding.webView.webViewClient = CustomWebViewClient(this@MainActivity, binding)
binding.webView.webChromeClient = CustomWebChromeClient(BuildConfig.baseUrl, binding, this)
binding.webView.webViewClient = CustomWebViewClient(this@MainActivity) {
binding.splash.visibility = View.GONE
}
binding.webView.webChromeClient = CustomWebChromeClient(BuildConfig.baseUrl, this)
}

private fun restoreState(savedInstanceState: Bundle) {
Expand Down

0 comments on commit 26d91ec

Please sign in to comment.