mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-09-18 15:32:35 +00:00
Implemented URLs open outside of live chat webview.
This commit is contained in:
parent
f311561e6f
commit
5f0a89d13b
2 changed files with 41 additions and 5 deletions
|
@ -454,6 +454,29 @@ class VideoDetailView : ConstraintLayout {
|
|||
fragment.navigate<VideoDetailFragment>(it.targetUrl);
|
||||
};
|
||||
|
||||
_container_content_liveChat.onUrlClick.subscribe { uri ->
|
||||
val c = context
|
||||
if (c is MainActivity) {
|
||||
fragment.lifecycleScope.launch(Dispatchers.Main) {
|
||||
try {
|
||||
if (!c.handleUrl(uri.toString())) {
|
||||
Intent(Intent.ACTION_VIEW, uri).apply {
|
||||
addCategory(Intent.CATEGORY_BROWSABLE)
|
||||
context.startActivity(this)
|
||||
}
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
Log.e(TAG, "Failed to handle live chat URL")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Intent(Intent.ACTION_VIEW, uri).apply {
|
||||
addCategory(Intent.CATEGORY_BROWSABLE)
|
||||
context.startActivity(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_monetization.onSupportTap.subscribe {
|
||||
_container_content_support.setPolycentricProfile(_polycentricProfile);
|
||||
switchContentView(_container_content_support);
|
||||
|
@ -478,11 +501,6 @@ class VideoDetailView : ConstraintLayout {
|
|||
|
||||
_player.attachPlayer();
|
||||
|
||||
_container_content_liveChat.onRaidNow.subscribe {
|
||||
StatePlayer.instance.clearQueue();
|
||||
fragment.navigate<VideoDetailFragment>(it.targetUrl);
|
||||
};
|
||||
|
||||
StateApp.instance.preventPictureInPicture.subscribe(this) {
|
||||
Logger.i(TAG, "StateApp.instance.preventPictureInPicture.subscribe preventPictureInPicture = true");
|
||||
preventPictureInPicture = true;
|
||||
|
|
|
@ -2,11 +2,14 @@ package com.futo.platformplayer.views.overlays
|
|||
|
||||
import android.animation.LayoutTransition
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.PointF
|
||||
import android.net.Uri
|
||||
import android.util.AttributeSet
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.View
|
||||
import android.webkit.WebResourceRequest
|
||||
import android.webkit.WebView
|
||||
import android.webkit.WebViewClient
|
||||
import android.widget.Button
|
||||
|
@ -19,6 +22,7 @@ import androidx.recyclerview.widget.LinearSmoothScroller
|
|||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.bumptech.glide.Glide
|
||||
import com.futo.platformplayer.R
|
||||
import com.futo.platformplayer.activities.MainActivity
|
||||
import com.futo.platformplayer.api.media.LiveChatManager
|
||||
import com.futo.platformplayer.api.media.models.live.ILiveChatWindowDescriptor
|
||||
import com.futo.platformplayer.api.media.models.live.ILiveEventChatMessage
|
||||
|
@ -41,6 +45,7 @@ import kotlinx.coroutines.launch
|
|||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import toAndroidColor
|
||||
import androidx.core.net.toUri
|
||||
|
||||
|
||||
class LiveChatOverlay : LinearLayout {
|
||||
|
@ -92,6 +97,7 @@ class LiveChatOverlay : LinearLayout {
|
|||
|
||||
val onRaidNow = Event1<LiveEventRaid>();
|
||||
val onRaidPrevent = Event1<LiveEventRaid>();
|
||||
val onUrlClick = Event1<Uri>()
|
||||
|
||||
private val _argJsonSerializer = Json;
|
||||
|
||||
|
@ -116,6 +122,18 @@ class LiveChatOverlay : LinearLayout {
|
|||
view?.evaluateJavascript("setInterval(()=>{" + toRemoveJSInterval + "}, 1000)") {};
|
||||
};
|
||||
}
|
||||
|
||||
override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {
|
||||
onUrlClick.emit(request.url)
|
||||
return true
|
||||
}
|
||||
|
||||
// API < 24
|
||||
@Suppress("DEPRECATION")
|
||||
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
|
||||
onUrlClick.emit(url.toUri())
|
||||
return true
|
||||
}
|
||||
};
|
||||
|
||||
_chatContainer = findViewById(R.id.chatContainer);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue