diff --git a/.github/workflows/ci-develop.yml b/.github/workflows/ci-develop.yml index 3f29ab3..36561ad 100644 --- a/.github/workflows/ci-develop.yml +++ b/.github/workflows/ci-develop.yml @@ -1,8 +1,9 @@ -name: Develop Workflow / Build and Unit Tests +name: Main Workflow / Build and Unit Tests on: push: branches: + - master - develop pull_request: branches: diff --git a/NoMoreAdsOnMyWebViewPlayer/build.gradle.kts b/NoMoreAdsOnMyWebViewPlayer/build.gradle.kts index 0fae941..98fc443 100644 --- a/NoMoreAdsOnMyWebViewPlayer/build.gradle.kts +++ b/NoMoreAdsOnMyWebViewPlayer/build.gradle.kts @@ -44,7 +44,7 @@ publishing { groupId = "com.ead.lib" artifactId = "NoMoreAdsOnMyWebViewPlayer" - version = "0.1.0" + version = "0.1.1" } } } diff --git a/NoMoreAdsOnMyWebViewPlayer/src/main/java/com/ead/lib/nomoreadsonmywebviewplayer/NoMoreAdsWebView.kt b/NoMoreAdsOnMyWebViewPlayer/src/main/java/com/ead/lib/nomoreadsonmywebviewplayer/NoMoreAdsWebView.kt index 3a8deb4..65675fb 100644 --- a/NoMoreAdsOnMyWebViewPlayer/src/main/java/com/ead/lib/nomoreadsonmywebviewplayer/NoMoreAdsWebView.kt +++ b/NoMoreAdsOnMyWebViewPlayer/src/main/java/com/ead/lib/nomoreadsonmywebviewplayer/NoMoreAdsWebView.kt @@ -7,6 +7,7 @@ import android.view.ViewGroup import android.view.ViewGroup.LayoutParams import android.webkit.WebSettings import android.webkit.WebView +import android.webkit.WebViewClient import com.ead.lib.nomoreadsonmywebviewplayer.models.BlockerClient /** @@ -17,7 +18,7 @@ open class BaseWebView @JvmOverloads constructor( /** * param context for the web view */ - context: Context, + private val context: Context, /** * param attributeSet for the web view */ @@ -66,11 +67,27 @@ open class BaseWebView @JvmOverloads constructor( override val exceptionWordKeys: List get() = listOf( - "your key word" + /** + * Your Key words + */ ) } } + + override fun setWebViewClient(client: WebViewClient) { + if (client !is BlockerClient) { + throw IllegalArgumentException(context.getString(R.string.illegal_argument_exception_message)) + } + + /** + * Override setter for make the client work just in NoMoreAdsWebView or BasicWebView + */ + this.client = client + + super.setWebViewClient(client) + } + /** * Setup the web view settings requirements to work properly */ diff --git a/NoMoreAdsOnMyWebViewPlayer/src/main/java/com/ead/lib/nomoreadsonmywebviewplayer/models/BlockerClient.kt b/NoMoreAdsOnMyWebViewPlayer/src/main/java/com/ead/lib/nomoreadsonmywebviewplayer/models/BlockerClient.kt index 2021364..423f8a0 100644 --- a/NoMoreAdsOnMyWebViewPlayer/src/main/java/com/ead/lib/nomoreadsonmywebviewplayer/models/BlockerClient.kt +++ b/NoMoreAdsOnMyWebViewPlayer/src/main/java/com/ead/lib/nomoreadsonmywebviewplayer/models/BlockerClient.kt @@ -128,7 +128,7 @@ open class BlockerClient( * if want to accept redirections * override this method and return true */ - protected open fun onOverrideUrlLoading(view: WebView?, request: WebResourceRequest?) : Boolean = false + open fun onOverrideUrlLoading(view: WebView?, request: WebResourceRequest?) : Boolean = false /** * Used to validate, to replace shouldInterceptRequest @@ -136,5 +136,5 @@ open class BlockerClient( * if want to accept intercepted request * override this method and return a WebResourceResponse or null */ - protected open fun onInterceptRequest(view: WebView?, request: WebResourceRequest?) : WebResourceResponse? = emptyResource + open fun onInterceptRequest(view: WebView?, request: WebResourceRequest?) : WebResourceResponse? = emptyResource } \ No newline at end of file diff --git a/NoMoreAdsOnMyWebViewPlayer/src/main/res/values/strings.xml b/NoMoreAdsOnMyWebViewPlayer/src/main/res/values/strings.xml new file mode 100644 index 0000000..44e19a5 --- /dev/null +++ b/NoMoreAdsOnMyWebViewPlayer/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + + WebViewClient type must be a BlockerClient + \ No newline at end of file diff --git a/README.md b/README.md index 524e51f..aa656c4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ [![](https://jitpack.io/v/darkryh/NoMoreAdsOnMyWebViewPlayer.svg)](https://jitpack.io/#darkryh/NoMoreAdsOnMyWebViewPlayer) +![CI](https://github.com/darkryh/NoMoreAdsOnMyWebViewPlayer/actions/workflows/ci-develop.yml/badge.svg) +![CI](https://github.com/darkryh/NoMoreAdsOnMyWebViewPlayer/actions/workflows/ci-develop-instrumental.yml/badge.svg) +![CI](https://github.com/darkryh/NoMoreAdsOnMyWebViewPlayer/actions/workflows/ci-release-production.yml/badge.svg) # NoMoreAdsOnMyWebViewPlayer It's an Android Library that permit custom properties and remove ads from embed websites using WebView: @@ -41,8 +44,6 @@ dependencies { # Example of Configuration with a Custom Blocker This example is to make compatible with a custom site that contains this media players. ```kotlin -import com.ead.lib.nomoreadsonmywebviewplayer.core.Blocker - class MainActivity : ComponentActivity() { fun onCreate() { @@ -51,6 +52,11 @@ class MainActivity : ComponentActivity() { modifier = modifier.fillMaxSize(), factory = { context -> NoMoreAdsWebView(context).apply { + /** + * When setting the webViewClient + * the instance has to be NoMoreAdsWebView + * to work in a correctly way + */ webViewClient = object : BlockerClient() { /** * Exceptions key words that let known @@ -72,18 +78,48 @@ class MainActivity : ComponentActivity() { } ``` -# Example configuration +# Replacement options for override clients +Options available to the client the other ones still the same options. ```kotlin -@Composable -fun NoMoreAdsWebView(modifier: Modifier = Modifier) { - AndroidView( - modifier = modifier.fillMaxSize(), - factory = { context -> - NoMoreAdsWebView(context).apply { - loadUrl("your embed url") - } - } - ) +class MainActivity : ComponentActivity() { + + fun onCreate() { + setContent { + AndroidView( + modifier = modifier.fillMaxSize(), + factory = { context -> + NoMoreAdsWebView(context).apply { + + /** + * Replacement option for ShouldOverrideUrlLoading(view, request) + */ + override fun onOverrideUrlLoading( + view: WebView?, + request: WebResourceRequest? + ): Boolean { + /** + * Do your logic + */ + return super.onOverrideUrlLoading(view, request) + } + + /** + * Replacement option for ShouldInterceptRequest(view, request) + */ + override fun onInterceptRequest( + view: WebView?, + request: WebResourceRequest? + ): WebResourceResponse? { + /** + * Do your logic + */ + return super.onInterceptRequest(view, request) + } + } + } + ) + } + } } ``` @@ -112,4 +148,4 @@ And loading as a normal webview. ``` # Want to collaborate -f you want to help or collaborate, feel free to contact me on X account @Darkryh or just make a request. +If you want to help or collaborate, feel free to contact me on X account @Darkryh or just make a request. diff --git a/app/src/main/java/com/ead/app/nomoreadsonmywebviewplayer/MainActivity.kt b/app/src/main/java/com/ead/app/nomoreadsonmywebviewplayer/MainActivity.kt index 11ec4b1..19a3e29 100644 --- a/app/src/main/java/com/ead/app/nomoreadsonmywebviewplayer/MainActivity.kt +++ b/app/src/main/java/com/ead/app/nomoreadsonmywebviewplayer/MainActivity.kt @@ -2,6 +2,9 @@ package com.ead.app.nomoreadsonmywebviewplayer import android.annotation.SuppressLint import android.os.Bundle +import android.webkit.WebResourceRequest +import android.webkit.WebResourceResponse +import android.webkit.WebView import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge @@ -21,6 +24,7 @@ import com.ead.app.nomoreadsonmywebviewplayer.presentation.theme.NoMoreAdsOnMyWe import com.ead.app.nomoreadsonmywebviewplayer.util.TestTags import com.ead.lib.nomoreadsonmywebviewplayer.NoMoreAdsWebView import com.ead.lib.nomoreadsonmywebviewplayer.core.Blocker +import com.ead.lib.nomoreadsonmywebviewplayer.models.BlockerClient class MainActivity : ComponentActivity() { @@ -61,6 +65,36 @@ fun NoMoreAdsWebView(modifier: Modifier = Modifier, event: (MainEvent) -> Unit) NoMoreAdsWebView(context).apply { id = R.id.test_id_no_more_ads_web_view event(MainEvent.InitializeWebView(this)) + webViewClient = object : BlockerClient() { + override val exceptionWordKeys: List + get() = listOf( + /** + * Your Key words + */ + ) + + /** + * Replacement option for ShouldOverrideUrlLoading(view, request) + */ + override fun onOverrideUrlLoading( + view: WebView?, + request: WebResourceRequest? + ): Boolean { + print("What amazing replacement :)") + return super.onOverrideUrlLoading(view, request) + } + + /** + * Replacement option for ShouldInterceptRequest(view, request) + */ + override fun onInterceptRequest( + view: WebView?, + request: WebResourceRequest? + ): WebResourceResponse? { + print("What amazing replacement :)") + return super.onInterceptRequest(view, request) + } + } } } )