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);
|
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 {
|
_monetization.onSupportTap.subscribe {
|
||||||
_container_content_support.setPolycentricProfile(_polycentricProfile);
|
_container_content_support.setPolycentricProfile(_polycentricProfile);
|
||||||
switchContentView(_container_content_support);
|
switchContentView(_container_content_support);
|
||||||
|
@ -478,11 +501,6 @@ class VideoDetailView : ConstraintLayout {
|
||||||
|
|
||||||
_player.attachPlayer();
|
_player.attachPlayer();
|
||||||
|
|
||||||
_container_content_liveChat.onRaidNow.subscribe {
|
|
||||||
StatePlayer.instance.clearQueue();
|
|
||||||
fragment.navigate<VideoDetailFragment>(it.targetUrl);
|
|
||||||
};
|
|
||||||
|
|
||||||
StateApp.instance.preventPictureInPicture.subscribe(this) {
|
StateApp.instance.preventPictureInPicture.subscribe(this) {
|
||||||
Logger.i(TAG, "StateApp.instance.preventPictureInPicture.subscribe preventPictureInPicture = true");
|
Logger.i(TAG, "StateApp.instance.preventPictureInPicture.subscribe preventPictureInPicture = true");
|
||||||
preventPictureInPicture = true;
|
preventPictureInPicture = true;
|
||||||
|
|
|
@ -2,11 +2,14 @@ package com.futo.platformplayer.views.overlays
|
||||||
|
|
||||||
import android.animation.LayoutTransition
|
import android.animation.LayoutTransition
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.graphics.PointF
|
import android.graphics.PointF
|
||||||
|
import android.net.Uri
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.util.DisplayMetrics
|
import android.util.DisplayMetrics
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.webkit.WebResourceRequest
|
||||||
import android.webkit.WebView
|
import android.webkit.WebView
|
||||||
import android.webkit.WebViewClient
|
import android.webkit.WebViewClient
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
|
@ -19,6 +22,7 @@ import androidx.recyclerview.widget.LinearSmoothScroller
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.futo.platformplayer.R
|
import com.futo.platformplayer.R
|
||||||
|
import com.futo.platformplayer.activities.MainActivity
|
||||||
import com.futo.platformplayer.api.media.LiveChatManager
|
import com.futo.platformplayer.api.media.LiveChatManager
|
||||||
import com.futo.platformplayer.api.media.models.live.ILiveChatWindowDescriptor
|
import com.futo.platformplayer.api.media.models.live.ILiveChatWindowDescriptor
|
||||||
import com.futo.platformplayer.api.media.models.live.ILiveEventChatMessage
|
import com.futo.platformplayer.api.media.models.live.ILiveEventChatMessage
|
||||||
|
@ -41,6 +45,7 @@ import kotlinx.coroutines.launch
|
||||||
import kotlinx.serialization.encodeToString
|
import kotlinx.serialization.encodeToString
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import toAndroidColor
|
import toAndroidColor
|
||||||
|
import androidx.core.net.toUri
|
||||||
|
|
||||||
|
|
||||||
class LiveChatOverlay : LinearLayout {
|
class LiveChatOverlay : LinearLayout {
|
||||||
|
@ -92,6 +97,7 @@ class LiveChatOverlay : LinearLayout {
|
||||||
|
|
||||||
val onRaidNow = Event1<LiveEventRaid>();
|
val onRaidNow = Event1<LiveEventRaid>();
|
||||||
val onRaidPrevent = Event1<LiveEventRaid>();
|
val onRaidPrevent = Event1<LiveEventRaid>();
|
||||||
|
val onUrlClick = Event1<Uri>()
|
||||||
|
|
||||||
private val _argJsonSerializer = Json;
|
private val _argJsonSerializer = Json;
|
||||||
|
|
||||||
|
@ -116,6 +122,18 @@ class LiveChatOverlay : LinearLayout {
|
||||||
view?.evaluateJavascript("setInterval(()=>{" + toRemoveJSInterval + "}, 1000)") {};
|
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);
|
_chatContainer = findViewById(R.id.chatContainer);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue