made: settings.fetchGifts default to true,

attach to options `setOffline`
create static method `of` for events

-TikTokGiftEvent
-TikTokCommentEvent
-TikTokSubscribeEvent
-TikTokFollowEvent
-TikTokLikeEvent
-TikTokJoinEvent

Rename:

GiftSendType -> GiftComboStateType
This commit is contained in:
JW
2024-02-28 16:05:25 +01:00
parent e923f3fad7
commit ffbd67eef4
5 changed files with 48 additions and 39 deletions

View File

@@ -23,6 +23,7 @@
package io.github.jwdeveloper.tiktok.data.events.gift; package io.github.jwdeveloper.tiktok.data.events.gift;
import io.github.jwdeveloper.tiktok.annotations.*; import io.github.jwdeveloper.tiktok.annotations.*;
import io.github.jwdeveloper.tiktok.data.models.Picture;
import io.github.jwdeveloper.tiktok.data.models.gifts.*; import io.github.jwdeveloper.tiktok.data.models.gifts.*;
import io.github.jwdeveloper.tiktok.data.models.users.User; import io.github.jwdeveloper.tiktok.data.models.users.User;
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage; import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage;
@@ -32,7 +33,7 @@ import lombok.Getter;
/** /**
* Triggered every time gift is sent * Triggered every time gift is sent
* *
* @see GiftSendType it has 3 states * @see GiftComboStateType it has 3 states
* *
* <p>Example when user sends gift with combo</p> * <p>Example when user sends gift with combo</p>
* <p>>Combo: 1 -> comboState = GiftSendType.Begin</p> * <p>>Combo: 1 -> comboState = GiftSendType.Begin</p>
@@ -45,10 +46,21 @@ import lombok.Getter;
@EventMeta(eventType = EventType.Message) @EventMeta(eventType = EventType.Message)
@Getter @Getter
public class TikTokGiftComboEvent extends TikTokGiftEvent { public class TikTokGiftComboEvent extends TikTokGiftEvent {
private final GiftSendType comboState; private final GiftComboStateType comboState;
public TikTokGiftComboEvent(Gift gift, User host, WebcastGiftMessage msg, GiftSendType comboState) { public TikTokGiftComboEvent(Gift gift, User host, WebcastGiftMessage msg, GiftComboStateType comboState) {
super(gift, host, msg); super(gift, host, msg);
this.comboState = comboState; this.comboState = comboState;
} }
public static TikTokGiftComboEvent of(Gift gift, int combo, GiftComboStateType comboState) {
return new TikTokGiftComboEvent(
gift,
new User(0L, "Test", new Picture("")),
WebcastGiftMessage
.newBuilder()
.setComboCount(combo)
.build(),
comboState);
}
} }

View File

@@ -22,17 +22,16 @@
*/ */
package io.github.jwdeveloper.tiktok.data.models.gifts; package io.github.jwdeveloper.tiktok.data.models.gifts;
public enum GiftSendType //TODO it should be called GiftComboStateType
{ public enum GiftComboStateType {
Finished, Finished,
Begin, Begin,
Active; Active;
public static GiftSendType fromNumber(long number) public static GiftComboStateType fromNumber(long number) {
{
return switch ((int) number) { return switch ((int) number) {
case 1, 2, 4 -> GiftSendType.Active; case 1, 2, 4 -> GiftComboStateType.Active;
default -> GiftSendType.Finished; default -> GiftComboStateType.Finished;
}; };
} }
} }

View File

@@ -58,40 +58,40 @@ public class TikTokGiftEventHandler {
public List<TikTokEvent> handleGift(WebcastGiftMessage currentMessage) { public List<TikTokEvent> handleGift(WebcastGiftMessage currentMessage) {
var userId = currentMessage.getUser().getId(); var userId = currentMessage.getUser().getId();
var currentType = GiftSendType.fromNumber(currentMessage.getSendType()); var currentType = GiftComboStateType.fromNumber(currentMessage.getSendType());
var containsPreviousMessage = giftsMessages.containsKey(userId); var containsPreviousMessage = giftsMessages.containsKey(userId);
//If gift is not streakable just return onGift event //If gift is not streakable just return onGift event
if (currentMessage.getGift().getType() != 1) { if (currentMessage.getGift().getType() != 1) {
var comboEvent = getGiftComboEvent(currentMessage, GiftSendType.Finished); var comboEvent = getGiftComboEvent(currentMessage, GiftComboStateType.Finished);
var giftEvent = getGiftEvent(currentMessage); var giftEvent = getGiftEvent(currentMessage);
return List.of(comboEvent, giftEvent); return List.of(comboEvent, giftEvent);
} }
if (!containsPreviousMessage) { if (!containsPreviousMessage) {
if (currentType == GiftSendType.Finished) { if (currentType == GiftComboStateType.Finished) {
return List.of(getGiftEvent(currentMessage)); return List.of(getGiftEvent(currentMessage));
} else { } else {
giftsMessages.put(userId, currentMessage); giftsMessages.put(userId, currentMessage);
return List.of(getGiftComboEvent(currentMessage, GiftSendType.Begin)); return List.of(getGiftComboEvent(currentMessage, GiftComboStateType.Begin));
} }
} }
var previousMessage = giftsMessages.get(userId); var previousMessage = giftsMessages.get(userId);
var previousType = GiftSendType.fromNumber(previousMessage.getSendType()); var previousType = GiftComboStateType.fromNumber(previousMessage.getSendType());
if (currentType == GiftSendType.Active && if (currentType == GiftComboStateType.Active &&
previousType == GiftSendType.Active) { previousType == GiftComboStateType.Active) {
giftsMessages.put(userId, currentMessage); giftsMessages.put(userId, currentMessage);
return List.of(getGiftComboEvent(currentMessage, GiftSendType.Active)); return List.of(getGiftComboEvent(currentMessage, GiftComboStateType.Active));
} }
if (currentType == GiftSendType.Finished && if (currentType == GiftComboStateType.Finished &&
previousType == GiftSendType.Active) { previousType == GiftComboStateType.Active) {
giftsMessages.clear(); giftsMessages.clear();
return List.of( return List.of(
getGiftComboEvent(currentMessage, GiftSendType.Finished), getGiftComboEvent(currentMessage, GiftComboStateType.Finished),
getGiftEvent(currentMessage)); getGiftEvent(currentMessage));
} }
@@ -104,7 +104,7 @@ public class TikTokGiftEventHandler {
return new TikTokGiftEvent(gift, tikTokRoomInfo.getHost(), message); return new TikTokGiftEvent(gift, tikTokRoomInfo.getHost(), message);
} }
private TikTokGiftEvent getGiftComboEvent(WebcastGiftMessage message, GiftSendType state) { private TikTokGiftEvent getGiftComboEvent(WebcastGiftMessage message, GiftComboStateType state) {
var gift = getGiftObject(message); var gift = getGiftObject(message);
return new TikTokGiftComboEvent(gift, tikTokRoomInfo.getHost(), message, state); return new TikTokGiftComboEvent(gift, tikTokRoomInfo.getHost(), message, state);
} }

View File

@@ -27,7 +27,7 @@ import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftComboEvent;
import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent; import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent;
import io.github.jwdeveloper.tiktok.data.models.Picture; import io.github.jwdeveloper.tiktok.data.models.Picture;
import io.github.jwdeveloper.tiktok.data.models.gifts.Gift; import io.github.jwdeveloper.tiktok.data.models.gifts.Gift;
import io.github.jwdeveloper.tiktok.data.models.gifts.GiftSendType; import io.github.jwdeveloper.tiktok.data.models.gifts.GiftComboStateType;
import io.github.jwdeveloper.tiktok.gifts.TikTokGiftsManager; import io.github.jwdeveloper.tiktok.gifts.TikTokGiftsManager;
import io.github.jwdeveloper.tiktok.mappers.handlers.TikTokGiftEventHandler; import io.github.jwdeveloper.tiktok.mappers.handlers.TikTokGiftEventHandler;
import io.github.jwdeveloper.tiktok.messages.data.GiftStruct; import io.github.jwdeveloper.tiktok.messages.data.GiftStruct;
@@ -40,7 +40,6 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance;
import java.util.List; import java.util.List;
import java.util.logging.Logger;
@TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestInstance(TestInstance.Lifecycle.PER_CLASS)
@@ -99,9 +98,9 @@ class TikTokGiftEventHandlerTest {
Assertions.assertEquals(2, result3.size()); Assertions.assertEquals(2, result3.size());
var event3 = (TikTokGiftComboEvent) result3.get(0); var event3 = (TikTokGiftComboEvent) result3.get(0);
Assertions.assertEquals(GiftSendType.Begin, event1.getComboState()); Assertions.assertEquals(GiftComboStateType.Begin, event1.getComboState());
Assertions.assertEquals(GiftSendType.Active, event2.getComboState()); Assertions.assertEquals(GiftComboStateType.Active, event2.getComboState());
Assertions.assertEquals(GiftSendType.Finished, event3.getComboState()); Assertions.assertEquals(GiftComboStateType.Finished, event3.getComboState());
} }

View File

@@ -3,15 +3,16 @@ package io.github.jwdeveloper.tiktok;
import io.github.jwdeveloper.tiktok.data.events.TikTokCommentEvent; import io.github.jwdeveloper.tiktok.data.events.TikTokCommentEvent;
import io.github.jwdeveloper.tiktok.data.events.TikTokSubNotifyEvent; import io.github.jwdeveloper.tiktok.data.events.TikTokSubNotifyEvent;
import io.github.jwdeveloper.tiktok.data.events.TikTokSubscribeEvent; import io.github.jwdeveloper.tiktok.data.events.TikTokSubscribeEvent;
import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftComboEvent;
import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent; import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent;
import io.github.jwdeveloper.tiktok.data.events.social.TikTokFollowEvent; import io.github.jwdeveloper.tiktok.data.events.social.TikTokFollowEvent;
import io.github.jwdeveloper.tiktok.data.events.social.TikTokJoinEvent; import io.github.jwdeveloper.tiktok.data.events.social.TikTokJoinEvent;
import io.github.jwdeveloper.tiktok.data.events.social.TikTokLikeEvent; import io.github.jwdeveloper.tiktok.data.events.social.TikTokLikeEvent;
import io.github.jwdeveloper.tiktok.data.models.gifts.GiftComboStateType;
import io.github.jwdeveloper.tiktok.live.LiveClient; import io.github.jwdeveloper.tiktok.live.LiveClient;
public class Events_And_Gifts_Testing_Example { public class Events_And_Gifts_Testing_Example {
public static void main(String[] args) public static void main(String[] args) {
{
LiveClient client = TikTokLive.newClient(ConnectionExample.TIKTOK_HOSTNAME) LiveClient client = TikTokLive.newClient(ConnectionExample.TIKTOK_HOSTNAME)
.configure(liveClientSettings -> .configure(liveClientSettings ->
{ {
@@ -28,17 +29,19 @@ public class Events_And_Gifts_Testing_Example {
}) })
.onGiftCombo((liveClient, event) -> .onGiftCombo((liveClient, event) ->
{ {
liveClient.getLogger().info("Connected"); liveClient.getLogger().info("New fake combo Gift: " + event.getGift());
}) })
.onGift((liveClient, event) -> .onGift((liveClient, event) ->
{ {
liveClient.getLogger().info("New fakeGift: " + event.getGift()); liveClient.getLogger().info("New fake Gift: " + event.getGift());
}) })
.buildAndConnect(); .build();
var gifts = TikTokLive.gifts(); var gifts = TikTokLive.gifts();
var fakeGift = TikTokGiftEvent.of(gifts.getByName("Rose")); var roseGift = gifts.getByName("Rose");
fakeGift = TikTokGiftEvent.of("Rose", 1, 23);
var fakeGift = TikTokGiftEvent.of(roseGift);
var fakeComboGift = TikTokGiftComboEvent.of(roseGift, 12, GiftComboStateType.Begin);
var fakeMessage = TikTokCommentEvent.of("Mark", "Hello world"); var fakeMessage = TikTokCommentEvent.of("Mark", "Hello world");
@@ -47,8 +50,10 @@ public class Events_And_Gifts_Testing_Example {
var fakeLike = TikTokLikeEvent.of("Mark", 12); var fakeLike = TikTokLikeEvent.of("Mark", 12);
var fakeJoin = TikTokJoinEvent.of("Mark"); var fakeJoin = TikTokJoinEvent.of("Mark");
client.connect();
client.publishEvent(fakeGift); client.publishEvent(fakeGift);
client.publishEvent(fakeComboGift);
client.publishEvent(fakeMessage); client.publishEvent(fakeMessage);
client.publishEvent(fakeSubscriber); client.publishEvent(fakeSubscriber);
client.publishEvent(fakeFollow); client.publishEvent(fakeFollow);
@@ -59,10 +64,4 @@ public class Events_And_Gifts_Testing_Example {
} }
public void GetBuilder() {
}
} }