Skip to content

Commit 2cec7bd

Browse files
authored
Merge pull request #964 from lavalink-devs/dev
release 4.0.0-beta.4
2 parents 16ca93f + 839db58 commit 2cec7bd

File tree

4 files changed

+25
-2
lines changed

4 files changed

+25
-2
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
Each release usually includes various fixes and improvements.
44
The most noteworthy of these, as well as any features and breaking changes, are listed here.
55

6+
## 4.0.0-beta.4
7+
* Update lavaplayer to [`2.0.2`](https://github.com/lavalink-devs/lavaplayer/releases/tag/2.0.2) - Support MPEG 2.5 and fixed some requests not timing out
8+
* Add `Omissible#isPresent` & `Omissible#isOmitted` to the `protocol` module
9+
* Fix null pointer when a playlist has no selected track
10+
611
## 4.0.0-beta.3
712
* Update lavaplayer to [`2.0.0`](https://github.com/lavalink-devs/lavaplayer/releases/tag/2.0.0) - Fixed YouTube 403 errors & YouTube access token errors
813

LavalinkServer/src/main/java/lavalink/server/util/util.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ fun AudioTrack.toInfo(): TrackInfo {
7676
}
7777

7878
fun AudioPlaylist.toPlaylistInfo(): PlaylistInfo {
79-
return PlaylistInfo(this.name, this.tracks.indexOf(this.selectedTrack))
79+
return PlaylistInfo(this.name, if (this.selectedTrack == null) -1 else this.tracks.indexOf(this.selectedTrack))
8080
}
8181

8282

protocol/src/commonMain/kotlin/dev/arbjerg/lavalink/protocol/v4/omissible.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import kotlinx.serialization.SerializationException
66
import kotlinx.serialization.descriptors.SerialDescriptor
77
import kotlinx.serialization.encoding.Decoder
88
import kotlinx.serialization.encoding.Encoder
9+
import kotlin.contracts.ExperimentalContracts
10+
import kotlin.contracts.contract
911
import kotlin.jvm.JvmInline
1012

1113
@Serializable(with = OmissableSerializer::class)
@@ -70,6 +72,22 @@ class OmissableSerializer<T>(private val childSerializer: KSerializer<T>) : KSer
7072
}
7173
}
7274

75+
@OptIn(ExperimentalContracts::class)
76+
fun <T : Any> Omissible<T>.isPresent(): Boolean {
77+
contract {
78+
returns(true) implies (this@isPresent is Omissible.Present<T>)
79+
}
80+
return this is Omissible.Present
81+
}
82+
83+
@OptIn(ExperimentalContracts::class)
84+
fun <T : Any> Omissible<T>.isOmitted(): Boolean {
85+
contract {
86+
returns(true) implies (this@isOmitted is Omissible.Omitted<T>)
87+
}
88+
return this is Omissible.Omitted
89+
}
90+
7391
fun <T : Any?> Omissible<T>.takeIfPresent(predicate: (T) -> Boolean = { true }) =
7492
if (this is Omissible.Present) value.takeIf(predicate) else null
7593

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ fun VersionCatalogBuilder.spring() {
3636
}
3737

3838
fun VersionCatalogBuilder.voice() {
39-
version("lavaplayer", "2.0.0")
39+
version("lavaplayer", "2.0.2")
4040

4141
library("lavaplayer", "dev.arbjerg", "lavaplayer").versionRef("lavaplayer")
4242
library("lavaplayer-ip-rotator", "dev.arbjerg", "lavaplayer-ext-youtube-rotator").versionRef("lavaplayer")

0 commit comments

Comments
 (0)