Skip to content

Commit e6919c8

Browse files
committed
Add AbstractAudioLoadResultHandler because OOP
1 parent dd24a1b commit e6919c8

File tree

2 files changed

+69
-21
lines changed

2 files changed

+69
-21
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package dev.arbjerg.lavalink.client
2+
3+
import dev.arbjerg.lavalink.protocol.v4.LoadResult
4+
import java.util.function.Consumer
5+
6+
abstract class AbstractAudioLoadResultHandler : Consumer<LoadResult> {
7+
override fun accept(loadResult: LoadResult) {
8+
when (loadResult) {
9+
is LoadResult.TrackLoaded -> {
10+
this.ontrackLoaded(loadResult)
11+
}
12+
13+
is LoadResult.PlaylistLoaded -> {
14+
this.onPlaylistLoaded(loadResult)
15+
}
16+
17+
is LoadResult.SearchResult -> {
18+
this.onSearchResultLoaded(loadResult)
19+
}
20+
21+
is LoadResult.NoMatches -> {
22+
this.noMatches()
23+
}
24+
25+
is LoadResult.LoadFailed -> {
26+
this.loadFailed(loadResult)
27+
}
28+
}
29+
}
30+
31+
abstract fun ontrackLoaded(result: LoadResult.TrackLoaded)
32+
abstract fun onPlaylistLoaded(result: LoadResult.PlaylistLoaded)
33+
abstract fun onSearchResultLoaded(result: LoadResult.SearchResult)
34+
abstract fun noMatches()
35+
abstract fun loadFailed(result: LoadResult.LoadFailed)
36+
}

src/test/java/JavaJDAExample.java

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -173,24 +173,31 @@ public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent even
173173
final long guildId = guild.getIdLong();
174174
final Link link = this.client.getLink(guildId);
175175

176-
link.loadItem(identifier).subscribe((item) -> {
177-
if (item instanceof LoadResult.TrackLoaded trackLoaded) {
178-
final Track track = trackLoaded.getData();
176+
link.loadItem(identifier).subscribe(new AbstractAudioLoadResultHandler() {
177+
@Override
178+
public void ontrackLoaded(@NotNull LoadResult.TrackLoaded result) {
179+
final Track track = result.getData();
179180

180181
link.createOrUpdatePlayer()
181-
.setEncodedTrack(track.getEncoded())
182-
.setVolume(35)
183-
.asMono()
184-
.subscribe((ignored) -> {
185-
event.getHook().sendMessage("Now playing: " + track.getInfo().getTitle()).queue();
186-
});
187-
} else if (item instanceof LoadResult.PlaylistLoaded playlistLoaded) {
188-
final int trackCount = playlistLoaded.getData().getTracks().size();
182+
.setEncodedTrack(track.getEncoded())
183+
.setVolume(35)
184+
.asMono()
185+
.subscribe((ignored) -> {
186+
event.getHook().sendMessage("Now playing: " + track.getInfo().getTitle()).queue();
187+
});
188+
}
189+
190+
@Override
191+
public void onPlaylistLoaded(@NotNull LoadResult.PlaylistLoaded result) {
192+
final int trackCount = result.getData().getTracks().size();
189193
event.getHook()
190-
.sendMessage("This playlist has " + trackCount + " tracks!")
191-
.queue();
192-
} else if (item instanceof LoadResult.SearchResult searchResult) {
193-
final List<Track> tracks = searchResult.getData().getTracks();
194+
.sendMessage("This playlist has " + trackCount + " tracks!")
195+
.queue();
196+
}
197+
198+
@Override
199+
public void onSearchResultLoaded(@NotNull LoadResult.SearchResult result) {
200+
final List<Track> tracks = result.getData().getTracks();
194201

195202
if (tracks.isEmpty()) {
196203
event.getHook().sendMessage("No tracks found!").queue();
@@ -202,14 +209,19 @@ public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent even
202209
// This is a different way of updating the player! Choose your preference!
203210
// This method will also create a player if there is not one in the server yet
204211
link.updatePlayer((update) -> update.setEncodedTrack(firstTrack.getEncoded()).setVolume(35))
205-
.subscribe((ignored) -> {
206-
event.getHook().sendMessage("Now playing: " + firstTrack.getInfo().getTitle()).queue();
207-
});
212+
.subscribe((ignored) -> {
213+
event.getHook().sendMessage("Now playing: " + firstTrack.getInfo().getTitle()).queue();
214+
});
215+
}
208216

209-
} else if (item instanceof LoadResult.NoMatches) {
217+
@Override
218+
public void noMatches() {
210219
event.getHook().sendMessage("No matches found for your input!").queue();
211-
} else if (item instanceof LoadResult.LoadFailed fail) {
212-
event.getHook().sendMessage("Failed to load track! " + fail.getData().getMessage()).queue();
220+
}
221+
222+
@Override
223+
public void loadFailed(@NotNull LoadResult.LoadFailed result) {
224+
event.getHook().sendMessage("Failed to load track! " + result.getData().getMessage()).queue();
213225
}
214226
});
215227

0 commit comments

Comments
 (0)