Skip to content

Commit fe5d79e

Browse files
committed
-Desktop Version Bump
1 parent a06cab4 commit fe5d79e

File tree

5 files changed

+38
-37
lines changed

5 files changed

+38
-37
lines changed

gradle/libs.versions.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
[versions]
22
agp = "8.2.2"
33
kotlin = "2.0.0"
4+
kotlinxSerializationJsonVersion = "1.7.1"
5+
media3ExoplayerVersion = "1.4.1"
6+
media3ExoplayerDashVersion = "1.4.1"
47
nexus-publish = "2.0.0-rc-1"
58
android-minSdk = "24"
69
android-compileSdk = "34"
@@ -18,7 +21,12 @@ kotlinx-coroutines = "1.9.0-RC"
1821

1922

2023
[libraries]
24+
androidx-media3-exoplayer-dash-v141 = { module = "androidx.media3:media3-exoplayer-dash", version.ref = "media3ExoplayerDashVersion" }
25+
androidx-media3-exoplayer-v141 = { module = "androidx.media3:media3-exoplayer", version.ref = "media3ExoplayerVersion" }
26+
androidx-media3-session = { module = "androidx.media3:media3-session", version.ref = "media3Ui" }
27+
jetbrains-kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJsonVersion" }
2128
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
29+
kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinxSerializationJsonVersion" }
2230
nexus-publish = { module = "io.github.gradle-nexus.publish-plugin:io.github.gradle-nexus.publish-plugin.gradle.plugin", version.ref = "nexus-publish" }
2331
startup-runtime = { module = "androidx.startup:startup-runtime", version.ref = "startupRuntime" }
2432
androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "media3Ui" }

mediaplayer-kmp/build.gradle.kts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ kotlin {
5555
implementation(libs.androidx.activityCompose)
5656
implementation(libs.compose.uitooling)
5757
implementation(compose.ui)
58-
implementation("androidx.media3:media3-exoplayer:1.4.0")
59-
implementation("androidx.media3:media3-exoplayer-dash:1.4.0")
60-
implementation("androidx.media3:media3-ui:1.4.0")
61-
implementation("androidx.media3:media3-session:1.4.0")
62-
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")
63-
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.0")
58+
implementation(libs.androidx.media3.exoplayer.v141)
59+
implementation(libs.androidx.media3.exoplayer.dash.v141)
60+
implementation(libs.androidx.media3.ui)
61+
implementation(libs.androidx.media3.session)
62+
implementation(libs.jetbrains.kotlinx.serialization.json)
63+
implementation(libs.kotlinx.serialization.core)
6464
implementation(libs.kotlinx.coroutines.android)
6565
}
6666
}
@@ -104,7 +104,7 @@ mavenPublishing {
104104
coordinates(
105105
groupId = "io.github.khubaibkhan4",
106106
artifactId = "mediaplayer-kmp",
107-
version = "1.1.7"
107+
version = "1.1.8"
108108
)
109109

110110
pom {

mediaplayer-kmp/src/jvmMain/kotlin/DesktopWebView.kt

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,13 @@ import javax.swing.JPanel
1414
fun DesktopWebView(
1515
modifier: Modifier,
1616
url: String,
17-
onLoadingChange: (Boolean) -> Unit={}
1817
) {
1918
val jPanel: JPanel = remember { JPanel() }
2019
val jfxPanel = JFXPanel()
2120

2221
SwingPanel(
2322
factory = {
24-
jfxPanel.apply { buildWebView(url, onLoadingChange) }
23+
jfxPanel.apply { buildWebView(url) }
2524
jPanel.add(jfxPanel)
2625
},
2726
modifier = modifier,
@@ -30,45 +29,39 @@ fun DesktopWebView(
3029
DisposableEffect(url) { onDispose { jPanel.remove(jfxPanel) } }
3130
}
3231

33-
private fun JFXPanel.buildWebView(url: String, onLoadingChange: (Boolean) -> Unit) {
32+
private fun JFXPanel.buildWebView(url: String) {
3433
Platform.runLater {
3534
val webView = WebView()
3635
val webEngine = webView.engine
3736

38-
// Notify loading start
39-
onLoadingChange(true)
40-
41-
webEngine.loadWorker.stateProperty().addListener { _, _, newState ->
42-
if (newState == Worker.State.SUCCEEDED) {
43-
// Notify loading end
44-
onLoadingChange(false)
45-
}
46-
}
47-
48-
// Set the user agent to simulate a browser for YouTube
4937
webEngine.userAgent =
5038
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
5139

52-
val script = """
53-
setTimeout(function() {
54-
var element = document.querySelector('.ytp-chrome-top.ytp-show-cards-title');
55-
if (element !== null) {
56-
element.style.display = "none";
57-
}
58-
// Repeat the above pattern for other elements...
59-
}, 1000); // Adjust the timeout value as needed
60-
""".trimIndent()
61-
62-
webEngine.executeScript(script)
63-
64-
// Enable JavaScript support for YouTube embed player
6540
webEngine.isJavaScriptEnabled = true
6641

67-
// Enable full-screen mode support
68-
webEngine.executeScript("document.webkitExitFullscreen = function() {};")
69-
// Load the YouTube video using the embed URL
7042
webEngine.load(url)
43+
7144
val scene = Scene(webView)
7245
setScene(scene)
46+
47+
webEngine.loadWorker.stateProperty().addListener { _, _, newState ->
48+
if (newState == Worker.State.SUCCEEDED) {
49+
val script = """
50+
setTimeout(function() {
51+
var overlaySelectors = [
52+
'.ytp-gradient-top',
53+
'.ytp-gradient-bottom'
54+
];
55+
overlaySelectors.forEach(function(selector) {
56+
var element = document.querySelector(selector);
57+
if (element !== null) {
58+
element.style.display = 'none';
59+
}
60+
});
61+
}, 1000); // Adjust the timeout value as needed
62+
""".trimIndent()
63+
webEngine.executeScript(script)
64+
}
65+
}
7366
}
7467
}

0 commit comments

Comments
 (0)