From ca741ed9313c83724f982f5809c246e258d40da8 Mon Sep 17 00:00:00 2001 From: kohlerpop1 Date: Mon, 2 Dec 2024 23:46:16 -0500 Subject: [PATCH 1/3] Add helper methods to get TikTokLinkMicBattleEvent teams by battleHostName! --- .../data/events/TikTokLinkMicBattleEvent.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokLinkMicBattleEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokLinkMicBattleEvent.java index 5ec881da..f878e45e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokLinkMicBattleEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokLinkMicBattleEvent.java @@ -25,6 +25,7 @@ import io.github.jwdeveloper.tiktok.annotations.*; import io.github.jwdeveloper.tiktok.data.events.common.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.data.models.battles.*; +import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; import io.github.jwdeveloper.tiktok.messages.enums.LinkMicBattleStatus; import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMicBattle; import lombok.*; @@ -69,6 +70,20 @@ public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) { // - msg.getHostTeamCount() always is 2 for 1v1 or 4 for 2v2 } + public Team1v1 get1v1Team(String battleHostName) { + if (!is1v1()) + throw new TikTokLiveException("Teams are not instance of 1v1 battle!"); + return teams.stream().filter(team -> team.getAs1v1Team().getHost().getName().equals(battleHostName)).findFirst().map(Team::getAs1v1Team).orElse(null); + } + + public Team2v2 get2v2Team(String battleHostName) { + if (!is2v2()) + throw new TikTokLiveException("Teams are not instance of 2v2 battle!"); + return teams.stream().filter(team -> + team.getAs2v2Team().getHosts().stream().anyMatch(user -> + user.getName().equals(battleHostName))).findFirst().map(Team::getAs2v2Team).orElse(null); + } + public boolean is1v1() { return teams.get(0) instanceof Team1v1; } From 8cd640f8eb73c5348320b82a07f4ca81ed744a64 Mon Sep 17 00:00:00 2001 From: kohlerpop1 Date: Tue, 3 Dec 2024 09:43:17 -0500 Subject: [PATCH 2/3] Converted list of teams to just 2 teams as we know the size is always 2 and updated methods accordingly. --- .../data/events/TikTokLinkMicBattleEvent.java | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokLinkMicBattleEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokLinkMicBattleEvent.java index f878e45e..c8129db2 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokLinkMicBattleEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokLinkMicBattleEvent.java @@ -28,9 +28,7 @@ import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; import io.github.jwdeveloper.tiktok.messages.enums.LinkMicBattleStatus; import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMicBattle; -import lombok.*; - -import java.util.*; +import lombok.Getter; /** * Triggered every time a battle starts & ends @@ -44,23 +42,22 @@ public class TikTokLinkMicBattleEvent extends TikTokHeaderEvent true if battle is finished otherwise false */ private final boolean finished; - private final List teams; + private final Team team1, team2; public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) { super(msg.getCommon()); battleId = msg.getId(); finished = msg.getBattleStatus() == LinkMicBattleStatus.BATTLE_FINISHED; - teams = new ArrayList<>(); if (msg.getHostTeamCount() == 2) { // 1v1 battle - teams.add(new Team1v1(msg.getHostTeam(0), msg)); - teams.add(new Team1v1(msg.getHostTeam(1), msg)); + team1 = new Team1v1(msg.getHostTeam(0), msg); + team2 = new Team1v1(msg.getHostTeam(1), msg); } else { // 2v2 battle if (isFinished()) { - teams.add(new Team2v2(msg.getHostData2V2List().stream().filter(data -> data.getTeamNumber() == 1).findFirst().orElse(null), msg)); - teams.add(new Team2v2(msg.getHostData2V2List().stream().filter(data -> data.getTeamNumber() == 2).findFirst().orElse(null), msg)); + team1 = new Team2v2(msg.getHostData2V2List().stream().filter(data -> data.getTeamNumber() == 1).findFirst().orElse(null), msg); + team2 = new Team2v2(msg.getHostData2V2List().stream().filter(data -> data.getTeamNumber() == 2).findFirst().orElse(null), msg); } else { - teams.add(new Team2v2(msg.getHostTeam(0), msg.getHostTeam(1), msg)); - teams.add(new Team2v2(msg.getHostTeam(2), msg.getHostTeam(3), msg)); + team1 = new Team2v2(msg.getHostTeam(0), msg.getHostTeam(1), msg); + team2 = new Team2v2(msg.getHostTeam(2), msg.getHostTeam(3), msg); } } @@ -70,29 +67,38 @@ public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) { // - msg.getHostTeamCount() always is 2 for 1v1 or 4 for 2v2 } + /** + * @param battleHostName name of host to search + * @return Team1v1 instance containing name of host or null if no team found */ public Team1v1 get1v1Team(String battleHostName) { if (!is1v1()) throw new TikTokLiveException("Teams are not instance of 1v1 battle!"); - return teams.stream().filter(team -> team.getAs1v1Team().getHost().getName().equals(battleHostName)).findFirst().map(Team::getAs1v1Team).orElse(null); + if (team1.getAs1v1Team().getHost().getName().equals(battleHostName)) + return team1.getAs1v1Team(); + if (team2.getAs1v1Team().getHost().getName().equals(battleHostName)) + return team2.getAs1v1Team(); + return null; } public Team2v2 get2v2Team(String battleHostName) { if (!is2v2()) throw new TikTokLiveException("Teams are not instance of 2v2 battle!"); - return teams.stream().filter(team -> - team.getAs2v2Team().getHosts().stream().anyMatch(user -> - user.getName().equals(battleHostName))).findFirst().map(Team::getAs2v2Team).orElse(null); + if (team1.getAs2v2Team().getHosts().stream().anyMatch(user -> user.getName().equals(battleHostName))) + return team1.getAs2v2Team(); + if (team2.getAs2v2Team().getHosts().stream().anyMatch(user -> user.getName().equals(battleHostName))) + return team2.getAs2v2Team(); + return null; } public boolean is1v1() { - return teams.get(0) instanceof Team1v1; + return team1.is1v1Team() || team2.is1v1Team(); } public boolean is2v2() { - return teams.get(0) instanceof Team2v2; + return team1.is2v2Team() || team2.is2v2Team(); } public boolean isTie() { - return isFinished() && teams.get(0).getTotalPoints() == teams.get(1).getTotalPoints(); + return isFinished() && team1.getTotalPoints() == team2.getTotalPoints(); } } \ No newline at end of file From a9003f42962a111618045f4de7207b22522dcb41 Mon Sep 17 00:00:00 2001 From: kohlerpop1 Date: Tue, 10 Dec 2024 19:25:20 -0500 Subject: [PATCH 3/3] Add details to Disconnect events, removed unused imports, and not needed blank lines! --- .../tiktok/data/events/TikTokDisconnectedEvent.java | 5 ----- .../tiktok/data/events/TikTokUnhandledMemberEvent.java | 2 +- .../tiktok/data/events/social/TikTokJoinEvent.java | 3 +-- .../java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java | 2 +- .../tiktok/websocket/TikTokWebSocketOfflineClient.java | 4 ++-- 5 files changed, 5 insertions(+), 11 deletions(-) diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokDisconnectedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokDisconnectedEvent.java index d3adbe74..b5a3ddd2 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokDisconnectedEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokDisconnectedEvent.java @@ -36,11 +36,6 @@ public TikTokDisconnectedEvent(String reason) { this.reason = reason.isBlank() ? "None" : reason; } - public TikTokDisconnectedEvent() { - this("None"); - } - - public static TikTokDisconnectedEvent of(String reason) { return new TikTokDisconnectedEvent(reason); diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokUnhandledMemberEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokUnhandledMemberEvent.java index 52497861..75edc83e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokUnhandledMemberEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokUnhandledMemberEvent.java @@ -35,4 +35,4 @@ public class TikTokUnhandledMemberEvent extends TikTokUnhandledEvent