diff --git a/lib/chatvibe_data/sources/local/floating_screen_manager.dart b/lib/chatvibe_data/sources/local/floating_screen_manager.dart index aba2285..a559ff2 100644 --- a/lib/chatvibe_data/sources/local/floating_screen_manager.dart +++ b/lib/chatvibe_data/sources/local/floating_screen_manager.dart @@ -9,7 +9,7 @@ import 'package:aslan/chatvibe_ui/widgets/room/floating/floating_game_screen_wid import 'package:aslan/chatvibe_ui/widgets/room/floating/floating_gift_screen_widget.dart'; import 'package:aslan/chatvibe_ui/widgets/room/floating/floating_luck_gift_screen_widget.dart'; import 'package:aslan/chatvibe_ui/widgets/room/floating/floating_room_redenvelope_screen_widget.dart'; -import 'package:aslan/chatvibe_ui/widgets/room/floating/floating_room_rocket_screen_widget.dart'; +import 'package:aslan/chatvibe_ui/widgets/room/rocket/room_rocket_floating_popup.dart'; import 'package:aslan/chatvibe_data/models/message/at_floating_message.dart'; import '../../../chatvibe_ui/widgets/room/floating/floating_cp_gift_screen_widget.dart'; @@ -150,7 +150,7 @@ class OverlayManager { ); case 3: //火箭 - return FloatingRoomRocketScreenWidget( + return RoomRocketFloatingPopup( message: message, onAnimationCompleted: onComplete, ); diff --git a/lib/chatvibe_data/sources/repositories/room_repository_imp.dart b/lib/chatvibe_data/sources/repositories/room_repository_imp.dart index 1dd0c01..1bc9c72 100644 --- a/lib/chatvibe_data/sources/repositories/room_repository_imp.dart +++ b/lib/chatvibe_data/sources/repositories/room_repository_imp.dart @@ -14,6 +14,7 @@ import 'package:aslan/chatvibe_domain/models/res/at_room_red_packet_grab_res.dar import 'package:aslan/chatvibe_domain/models/res/at_room_red_packet_list_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_reward_info_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_rocket_config_res.dart'; +import 'package:aslan/chatvibe_domain/models/res/at_room_rocket_reward_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_rocket_status_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_task_list_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_top_four_with_reward_res.dart'; @@ -642,11 +643,11 @@ class ChatRoomRepository implements ChatVibeRoomRepository { ///api/rocket/claim @override - Future rocketClaim(String roomId) async { - final result = await http.post( + Future rocketClaim(String roomId) async { + final result = await http.post( "4c083b13f2be2a26641018619bdc0347574aff257ce7e668d08f4caccd1c6232", data: {"roomId": roomId}, - fromJson: (json) => json as bool, + fromJson: (json) => ATRoomRocketRewardRes.fromJson(json), ); return result; } diff --git a/lib/chatvibe_domain/repositories/room_repository.dart b/lib/chatvibe_domain/repositories/room_repository.dart index ec508e1..0b17dbe 100644 --- a/lib/chatvibe_domain/repositories/room_repository.dart +++ b/lib/chatvibe_domain/repositories/room_repository.dart @@ -23,6 +23,7 @@ import 'package:aslan/chatvibe_domain/models/res/at_room_red_packet_list_res.dar import 'package:aslan/chatvibe_domain/models/res/room_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_reward_info_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_rocket_config_res.dart'; +import 'package:aslan/chatvibe_domain/models/res/at_room_rocket_reward_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_rocket_status_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_task_claimable_count_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_task_list_res.dart'; @@ -200,7 +201,7 @@ abstract class ChatVibeRoomRepository { Future> rocketConfigEnabled(); ///领取奖励 - Future rocketClaim(String roomId); + Future rocketClaim(String roomId); ///处理房间违规 Future roomViolationHandle( diff --git a/lib/chatvibe_managers/rtc_manager.dart b/lib/chatvibe_managers/rtc_manager.dart index e287a26..5f80b60 100644 --- a/lib/chatvibe_managers/rtc_manager.dart +++ b/lib/chatvibe_managers/rtc_manager.dart @@ -810,9 +810,11 @@ class RealTimeCommunicationManager extends ChangeNotifier { if (!_isRoomSessionActive(roomSessionId, roomId)) { return; } - ChatRoomRepository() - .rocketClaim(currenRoom?.roomProfile?.roomProfile?.id ?? "") - .catchError((e) => false); + unawaited( + ChatRoomRepository() + .rocketClaim(currenRoom?.roomProfile?.roomProfile?.id ?? "") + .then((_) {}, onError: (_, __) {}), + ); rtmProvider?.addMsg( Msg( groupId: currenRoom?.roomProfile?.roomProfile?.roomAccount ?? "", diff --git a/lib/chatvibe_managers/rtm_manager.dart b/lib/chatvibe_managers/rtm_manager.dart index 107c521..7a93939 100644 --- a/lib/chatvibe_managers/rtm_manager.dart +++ b/lib/chatvibe_managers/rtm_manager.dart @@ -53,6 +53,7 @@ import 'package:aslan/chatvibe_domain/models/res/broad_cast_mic_change_push.dart import 'package:aslan/chatvibe_domain/models/res/gift_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_public_message_page_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_rocket_status_res.dart'; +import 'package:aslan/chatvibe_domain/models/res/at_room_rocket_reward_res.dart'; import 'package:aslan/chatvibe_domain/models/res/at_room_theme_list_res.dart'; import 'package:aslan/chatvibe_ui/widgets/room/invite/invite_room_dialog.dart'; import 'package:aslan/chatvibe_ui/widgets/room/room_msg_item.dart'; @@ -1078,25 +1079,28 @@ class RealTimeMessagingManager extends ChangeNotifier { } if (data["type"] == ATRoomMsgType.rocketRewardUser) { ///房间火箭用户中奖 - var fData = data["data"]; - String cover = fData["cover"] ?? ""; - String rewardType = fData["rewardType"] ?? ""; - String userNickname = fData["userNickname"] ?? ""; - int rocketLevel = fData["rocketLevel"] ?? 1; - String userId = fData["userId"] ?? 0; - if (AccountStorage().getCurrentUser()?.userProfile?.id == userId) { - ATRoomUtils.playRoomRocketAnim(cover, rewardType, rocketLevel); + final reward = ATRoomRocketRewardRes.fromJson(data["data"]); + if (AccountStorage().getCurrentUser()?.userProfile?.id == + reward.userId) { + ATRoomUtils.playRoomRocketAnim( + reward.cover, + reward.rewardType, + reward.rocketLevel, + ); } ///在房间里发送一条消息 addMsg( Msg( groupId: "", - msg: cover, + msg: reward.cover, type: ATRoomMsgType.rocketRewardUser, - role: rewardType, - user: ChatVibeUserProfile(userNickname: userNickname), - number: rocketLevel, + role: reward.rewardType, + user: ChatVibeUserProfile( + id: reward.userId, + userNickname: reward.userNickname, + ), + number: reward.rocketLevel, ), ); return; diff --git a/lib/chatvibe_ui/widgets/room/room_play_widget.dart b/lib/chatvibe_ui/widgets/room/room_play_widget.dart index 8d29a9f..96a28a8 100644 --- a/lib/chatvibe_ui/widgets/room/room_play_widget.dart +++ b/lib/chatvibe_ui/widgets/room/room_play_widget.dart @@ -28,6 +28,9 @@ class _RoomPlayWidgetState extends State { Widget build(BuildContext context) { return Consumer( builder: (context, ref, child) { + final int roomRocketLevel = ref.roomRocketStatus?.level?.toInt() ?? 1; + final int rocketAssetLevel = + roomRocketLevel >= 1 && roomRocketLevel <= 3 ? roomRocketLevel : 1; return Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ @@ -142,7 +145,7 @@ class _RoomPlayWidgetState extends State { child: Container( margin: EdgeInsets.symmetric(vertical: 5.w), child: Image.asset( - "atu_images/room/at_icon_room_rocket_lv1.png", + "atu_images/room/at_icon_room_rocket_lv$rocketAssetLevel.png", width: 45.w, height: 45.w, fit: BoxFit.contain,