diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftComboEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftComboEvent.java index cbc81ca..385fb55 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftComboEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftComboEvent.java @@ -26,6 +26,7 @@ import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; 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.users.User; import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage; import lombok.Getter; @@ -40,7 +41,7 @@ import lombok.Getter; *

Combo: 4 -> comboState = GiftSendType.Active

*

Combo: 8 -> comboState = GiftSendType.Active

*

Combo: 12 -> comboState = GiftSendType.Finsihed

- * + *

* Remember if comboState is Finsihed both TikTokGiftComboEvent and TikTokGiftEvent event gets triggered */ @EventMeta(eventType = EventType.Message) @@ -48,8 +49,8 @@ import lombok.Getter; public class TikTokGiftComboEvent extends TikTokGiftEvent { private final GiftSendType comboState; - public TikTokGiftComboEvent(Gift gift, WebcastGiftMessage msg, GiftSendType comboState) { - super(gift, msg); + public TikTokGiftComboEvent(Gift gift, User host, WebcastGiftMessage msg, GiftSendType comboState) { + super(gift, host, msg); this.comboState = comboState; } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftEvent.java index b8db670..0fff54c 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftEvent.java @@ -49,11 +49,15 @@ public class TikTokGiftEvent extends TikTokHeaderEvent { private final User toUser; private final int combo; - public TikTokGiftEvent(Gift gift, WebcastGiftMessage msg) { + public TikTokGiftEvent(Gift gift, User liveHost, WebcastGiftMessage msg) { super(msg.getCommon()); this.gift = gift; user = User.map(msg.getUser(), msg.getUserIdentity()); - toUser = new User(msg.getUserGiftReciever().getUserId(), "", "", new Picture(""), 0, 0, new ArrayList<>()); + if (msg.getToUser().getNickname().isEmpty()) { + toUser = liveHost; + } else { + toUser = User.map(msg.getToUser()); + } combo = msg.getComboCount(); } } \ No newline at end of file diff --git a/API/src/main/proto/webcast.proto b/API/src/main/proto/webcast.proto index e05ba29..afc3791 100644 --- a/API/src/main/proto/webcast.proto +++ b/API/src/main/proto/webcast.proto @@ -18,7 +18,7 @@ message WebcastPushFrame { uint64 LogId = 2; uint64 Service = 3; uint64 Method = 4; - map headers = 5; + map headers = 5; string PayloadEncoding = 6; string PayloadType = 7; bytes Payload = 8; @@ -68,6 +68,7 @@ message WebcastGiftMessage { int32 repeatCount = 5; int32 comboCount = 6; User user = 7; + User toUser = 8; int32 repeatEnd = 9; int64 groupId = 11; int64 incomeTaskgifts = 12; @@ -84,8 +85,8 @@ message WebcastGiftMessage { message UserGiftReciever { - int64 userId =1; - string deviceName = 10; + int64 userId = 1; + string deviceName = 10; } message GiftIMPriority { @@ -203,7 +204,7 @@ message WebcastChatMessage { int32 quickChatScene = 16; int32 communityFlaggedStatus = 17; UserIdentity UserIdentity = 18; - map CommentQualityScores = 19; + map CommentQualityScores = 19; // @EmoteWithIndex // proto.webcast.im.ChatMessage @@ -283,14 +284,14 @@ message WebcastGoalUpdateMessage { int64 contributorId = 4; Image contributorAvatar = 5; string contributorDisplayId = 6; -// SubGoal contributeSubgoal = 7; + // SubGoal contributeSubgoal = 7; int64 contributeCount = 9; int64 contributeScore = 10; int64 giftRepeatCount = 11; string contributorIdStr = 12; bool pin = 13; bool unpin = 14; - // GoalPinInfo pinInfo = 15; + // GoalPinInfo pinInfo = 15; } // Message related to Chat-moderation? @@ -354,7 +355,7 @@ message WebcastSocialMessage { message WebcastSubNotifyMessage { Common common = 1; User user = 2; -// ExhibitionType exhibitionType = 3; // Enum + // ExhibitionType exhibitionType = 3; // Enum int64 subMonth = 4; SubscribeType subscribeType = 5; // Enum OldSubscribeStatus oldSubscribeStatus = 6; // Enum @@ -681,7 +682,7 @@ message WebcastMsgDetectMessage { bool detectP2PMsg = 3; bool detectRoomMsg = 4; bool httpOptimize = 5; -} + } } //@WebcastOecLiveShoppingMessage @@ -751,11 +752,11 @@ message WebcastLinkMessage { LinkerUpdateUserSettingContent UpdateUserSettingContent = 18; LinkerMicIdxUpdateContent MicIdxUpdateContent = 19; LinkerListChangeContent ListChangeContent = 20; - // CohostListChangeContent CohostListChangeContent = 21; + // CohostListChangeContent CohostListChangeContent = 21; LinkerMediaChangeContent MediaChangeContent = 22; LinkerAcceptNoticeContent ReplyAcceptNoticeContent = 23; LinkerSysKickOutContent SysKickOutContent = 101; - // LinkmicUserToastContent UserToastContent = 102; + // LinkmicUserToastContent UserToastContent = 102; string Extra = 200; int64 ExpireTimestamp = 201; string TransferExtra = 202; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java index 0fc314f..17c7191 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java @@ -192,7 +192,7 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder { //ConnectionEvents events var commonHandler = new TikTokCommonEventHandler(); - var giftHandler = new TikTokGiftEventHandler(giftManager); + var giftHandler = new TikTokGiftEventHandler(giftManager, roomInfo); var roomInfoHandler = new TikTokRoomInfoEventHandler(roomInfo); var socialHandler = new TikTokSocialMediaEventHandler(roomInfo); diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/handlers/TikTokGiftEventHandler.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/handlers/TikTokGiftEventHandler.java index 9667abd..b9b5a1e 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/handlers/TikTokGiftEventHandler.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/handlers/TikTokGiftEventHandler.java @@ -22,6 +22,7 @@ */ package io.github.jwdeveloper.tiktok.mappers.handlers; +import io.github.jwdeveloper.tiktok.TikTokRoomInfo; import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftComboEvent; import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent; @@ -43,17 +44,19 @@ import java.util.Map; public class TikTokGiftEventHandler { private final GiftManager giftManager; private final Map giftsMessages; + private final TikTokRoomInfo tikTokRoomInfo; - public TikTokGiftEventHandler(GiftManager giftManager) { + public TikTokGiftEventHandler(GiftManager giftManager, TikTokRoomInfo tikTokRoomInfo) { this.giftManager = giftManager; giftsMessages = new HashMap<>(); + this.tikTokRoomInfo = tikTokRoomInfo; } @SneakyThrows public MappingResult handleGifts(byte[] msg, String name, TikTokMapperHelper helper) { var currentMessage = WebcastGiftMessage.parseFrom(msg); var gifts = handleGift(currentMessage); - return MappingResult.of(currentMessage,gifts); + return MappingResult.of(currentMessage, gifts); } public List handleGift(WebcastGiftMessage currentMessage) { @@ -101,12 +104,12 @@ public class TikTokGiftEventHandler { private TikTokGiftEvent getGiftEvent(WebcastGiftMessage message) { var gift = getGiftObject(message); - return new TikTokGiftEvent(gift, message); + return new TikTokGiftEvent(gift, tikTokRoomInfo.getHost(), message); } private TikTokGiftEvent getGiftComboEvent(WebcastGiftMessage message, GiftSendType state) { var gift = getGiftObject(message); - return new TikTokGiftComboEvent(gift, message, state); + return new TikTokGiftComboEvent(gift, tikTokRoomInfo.getHost(), message, state); } private Gift getGiftObject(WebcastGiftMessage giftMessage) {