diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokBarrageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokBarrageEvent.java index 6658f48..3acac22 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokBarrageEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokBarrageEvent.java @@ -39,9 +39,12 @@ public class TikTokBarrageEvent extends TikTokHeaderEvent { private final String eventName; private final int duration; private final BarrageParam barrageParam; + // Expose for now until we know what this is used for + private final WebcastBarrageMessage barrageMessage; public TikTokBarrageEvent(WebcastBarrageMessage msg) { super(msg.getCommon()); + this.barrageMessage = msg; icon = Picture.map(msg.getIcon()); eventName = msg.getEvent().getEventName(); backGround = Picture.map(msg.getBackground()); diff --git a/API/src/main/proto/enums.proto b/API/src/main/proto/enums.proto index a2499b7..51341e6 100644 --- a/API/src/main/proto/enums.proto +++ b/API/src/main/proto/enums.proto @@ -835,4 +835,34 @@ enum BattleCardMsgType { BATTLE_CARD_MSG_TYPE_SPECIAL_EFFECT_NOTICE = 9; BATTLE_CARD_MSG_TYPE_USE_TOP_2_CARD = 10; BATTLE_CARD_MSG_TYPE_USE_TOP_3_CARD = 11; +} + +enum GoodyBagMessageType { + GOODY_BAG_MESSAGE_TYPE_UNKNOWN = 0; + GOODY_BAG_MESSAGE_TYPES_END = 1; + GOODY_BAG_MESSAGE_TYPE_JOIN = 2; + GOODY_BAG_MESSAGE_TYPE_WINNERS_INFO = 3; +} + +enum GoodyBagBiz { + GOODY_BAG_BIZ_UNKNOWN = 0; + GOODY_BAG_BIZ_NORMAL_COIN = 1; + GOODY_BAG_BIZ_FANS_CLUB = 2; + GOODY_BAG_BIZ_PLATFORM_NORMAL = 100; + GOODY_BAG_BIZ_PLATFORM_FANS_CLUB = 101; + GOODY_BAG_BIZ_LEVEL_UP_PARTY_REWARD_NORMAL = 110; + GOODY_BAG_BIZ_LEVEL_UP_PARTY_REWARD_FANS_CLUB = 111; +} + +enum ParticipateMethod { + PARTICIPATE_METHOD_UNKNOWN = 0; + PARTICIPATE_METHOD_COMMENT = 1; + PARTICIPATE_METHOD_SHARE = 2; + PARTICIPATE_METHOD_NO_THRESHOLD = 3; +} + +enum ParticipateThresholdType { + PARTICIPATE_THRESHOLD_TYPE_PARTICIPATE_THRESHOLD_UNKNOWN = 0; + PARTICIPATE_THRESHOLD_TYPE_PARTICIPATE_THRESHOLD_ALL_VIEWER = 1; + PARTICIPATE_THRESHOLD_TYPE_PARTICIPATE_THRESHOLD_FANS_CLUB = 2; } \ No newline at end of file diff --git a/API/src/main/proto/webcast.proto b/API/src/main/proto/webcast.proto index 6007e2f..aa8f7f6 100644 --- a/API/src/main/proto/webcast.proto +++ b/API/src/main/proto/webcast.proto @@ -1588,4 +1588,50 @@ message WebcastLinkMicBattleItemCard { CommonCardInfo common = 1; } } +} + +message WebcastGoodyBagMessage { + CommonMessageData base_message = 1; + GoodyBagBaseInfo base_info = 2; + repeated GoodyBagWinnerInfo winners = 3; + GoodyBagMessageType type = 4; + + message GoodyBagBaseInfo { + string goody_bag_id = 1; + GoodyBagBiz biz = 2; + string room_id = 3; + GoodyBagCommonDetail common_detail = 4; + GoodyBagCoinDetail coin_detail = 5; + + message GoodyBagCommonDetail { + int32 winner_headcount = 1; + int32 joined_headcount = 2; + ParticipateMethod participate_method = 3; + string participate_method_content = 4; + int32 open_at = 5; + int32 count_down_minutes = 6; + ParticipateThresholdSelected participate_threshold_selected = 7; + + message ParticipateThresholdSelected { + ParticipateThresholdType type = 1; + int64 value = 2; + } + } + + message GoodyBagCoinDetail { + int32 total_coin = 1; + } + } + + message GoodyBagWinnerInfo { + GoodyBagUserInfo user_info = 1; + int32 coins = 2; + } + + message GoodyBagUserInfo { + string user_id = 1; + string nickname = 2; + string display_id = 3; + Image avatar = 4; + } } \ No newline at end of file diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/MessagesMapperFactory.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/MessagesMapperFactory.java index ebf3a1d..633c8d4 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/MessagesMapperFactory.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/MessagesMapperFactory.java @@ -26,10 +26,7 @@ import io.github.jwdeveloper.dependance.api.DependanceContainer; import io.github.jwdeveloper.tiktok.data.events.*; import io.github.jwdeveloper.tiktok.data.events.link.*; import io.github.jwdeveloper.tiktok.mappers.data.MappingResult; -import io.github.jwdeveloper.tiktok.mappers.handlers.TikTokCommonEventHandler; -import io.github.jwdeveloper.tiktok.mappers.handlers.TikTokGiftEventHandler; -import io.github.jwdeveloper.tiktok.mappers.handlers.TikTokRoomInfoEventHandler; -import io.github.jwdeveloper.tiktok.mappers.handlers.TikTokSocialMediaEventHandler; +import io.github.jwdeveloper.tiktok.mappers.handlers.*; import io.github.jwdeveloper.tiktok.messages.webcast.*; import static io.github.jwdeveloper.tiktok.messages.enums.LinkMessageType.*; @@ -58,7 +55,6 @@ public class MessagesMapperFactory { return MappingResult.of(messageObject, new TikTokCaptionEvent(messageObject)); }); - //User Interactions events mapper.forMessage(WebcastChatMessage.class, (inputBytes, messageName, mapperHelper) -> { @@ -145,7 +141,10 @@ public class MessagesMapperFactory { //Others events // mapper.webcastObjectToConstructor(WebcastInRoomBannerMessage.class, TikTokInRoomBannerEvent.class); // mapper.webcastObjectToConstructor(WebcastMsgDetectMessage.class, TikTokDetectEvent.class); - // mapper.webcastObjectToConstructor(WebcastBarrageMessage.class, TikTokBarrageEvent.class); + mapper.forMessage(WebcastBarrageMessage.class, (inputBytes, messageName, mapperHelper) -> { + var message = mapperHelper.bytesToWebcastObject(inputBytes, WebcastBarrageMessage.class); + return MappingResult.of(message, new TikTokBarrageEvent(message)); + }); // mapper.webcastObjectToConstructor(WebcastUnauthorizedMemberMessage.class, TikTokUnauthorizedMemberEvent.class); // mapper.webcastObjectToConstructor(WebcastOecLiveShoppingMessage.class, TikTokShopEvent.class); // mapper.webcastObjectToConstructor(WebcastImDeleteMessage.class, TikTokIMDeleteEvent.class);