From 5501345a7e53648e3234de1d1e675ec5eaf59b39 Mon Sep 17 00:00:00 2001 From: roxy Date: Tue, 2 Jun 2026 13:57:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/configs/sc_variant1_config.dart | 2 +- lib/app/constants/sc_global_config.dart | 18 +- lib/modules/chat/message_chat_page.dart | 212 +----------------- lib/modules/gift/gift_page.dart | 52 ----- .../room_game/views/baishun_loading_view.dart | 8 +- .../my_items/chatbox/bags_chatbox_page.dart | 8 +- lib/services/audio/rtc_manager.dart | 68 +----- lib/services/audio/rtm_manager.dart | 87 ------- lib/services/auth/user_profile_manager.dart | 27 +++ .../local/floating_screen_manager.dart | 76 +------ .../tools/sc_lucky_gift_win_sound_player.dart | 92 ++++++-- lib/shared/tools/sc_room_utils.dart | 2 +- .../bag/props_bag_chatbox_detail_dialog.dart | 32 ++- .../room/anim/room_entrance_screen.dart | 23 +- .../room/anim/luck_gift/lucky_gift_win.mp3 | Bin 185856 -> 102912 bytes 15 files changed, 155 insertions(+), 552 deletions(-) diff --git a/lib/app/config/configs/sc_variant1_config.dart b/lib/app/config/configs/sc_variant1_config.dart index e4502ee..c31ecf2 100644 --- a/lib/app/config/configs/sc_variant1_config.dart +++ b/lib/app/config/configs/sc_variant1_config.dart @@ -16,7 +16,7 @@ class SCVariant1Config implements AppConfig { @override String get apiHost => const String.fromEnvironment( 'API_HOST', - defaultValue: 'https://jvapi.haiyihy.com/', + defaultValue: 'http://192.168.110.64:1100/', ); // 默认连本地接口,本地调试可通过 --dart-define=API_HOST 覆盖,线上“https://jvapi.haiyihy.com/” @override diff --git a/lib/app/constants/sc_global_config.dart b/lib/app/constants/sc_global_config.dart index 59cdd01..0ba2a6b 100644 --- a/lib/app/constants/sc_global_config.dart +++ b/lib/app/constants/sc_global_config.dart @@ -168,8 +168,7 @@ class SCGlobalConfig { } static String clampFloatingBroadcastScope(String value) { - final scope = normalizeFloatingBroadcastScope(value); - return _isLowPerformanceDevice ? floatingBroadcastScopeOff : scope; + return normalizeFloatingBroadcastScope(value); } static String floatingBroadcastScopeStorageKey(String? account) { @@ -188,8 +187,7 @@ class SCGlobalConfig { static bool get isLowPerformanceDevice => _isLowPerformanceDevice; - static bool get allowsHighCostAnimations => - !_isLowPerformanceDevice && sdkInt > maxSdkNoAnim; + static bool get allowsHighCostAnimations => true; static int get recommendedImageCacheBytes => _isLowPerformanceDevice ? 40 * 1024 * 1024 : 100 * 1024 * 1024; @@ -211,19 +209,17 @@ class SCGlobalConfig { isLowRamDevice || processorCount <= 6 || matchesKnownLowPerformanceModel; - resetVisualEffectSwitchesToRecommendedDefaults(); } static bool clampVisualEffectPreference(bool enabled) { - return !_isLowPerformanceDevice && enabled; + return enabled; } static void resetVisualEffectSwitchesToRecommendedDefaults() { - final enabled = !_isLowPerformanceDevice; - isEntryVehicleAnimation = enabled; - isGiftSpecialEffects = enabled; - isFloatingAnimationInGlobal = enabled; - isLuckGiftSpecialEffects = enabled; + isEntryVehicleAnimation = true; + isGiftSpecialEffects = true; + isFloatingAnimationInGlobal = true; + isLuckGiftSpecialEffects = true; } /// 获取当前业务逻辑策略 diff --git a/lib/modules/chat/message_chat_page.dart b/lib/modules/chat/message_chat_page.dart index f24c035..f1f6d06 100644 --- a/lib/modules/chat/message_chat_page.dart +++ b/lib/modules/chat/message_chat_page.dart @@ -23,7 +23,6 @@ import 'package:yumi/shared/tools/sc_message_utils.dart'; import 'package:yumi/shared/tools/sc_user_id_utils.dart'; import 'package:yumi/shared/data_sources/sources/repositories/sc_user_repository_impl.dart'; import 'package:yumi/shared/business_logic/models/res/login_res.dart'; -import 'package:yumi/shared/business_logic/models/res/sc_vip_res.dart'; import 'package:yumi/services/audio/rtm_manager.dart'; import 'package:marquee/marquee.dart'; import 'package:provider/provider.dart'; @@ -59,7 +58,6 @@ import 'package:yumi/shared/tools/sc_message_notifier.dart'; import 'package:yumi/shared/tools/sc_path_utils.dart'; import 'package:yumi/shared/data_sources/sources/local/data_persistence.dart'; import 'package:yumi/shared/data_sources/sources/local/user_manager.dart'; -import 'package:yumi/shared/data_sources/sources/repositories/sc_vip_repository_imp.dart'; import 'package:yumi/services/auth/user_profile_manager.dart'; import 'package:yumi/modules/index/main_route.dart'; import 'package:yumi/ui_kit/widgets/sc_nine_patch_image.dart'; @@ -81,29 +79,6 @@ const EdgeInsets _vipBubbleCenterSliceRatio = EdgeInsets.fromLTRB( ); const EdgeInsets _vipBubbleSourceEdgeInset = EdgeInsets.all(2); -String _resolveVipChatBubbleImageUrl(SCVipResourceRes? resource) { - final candidates = [ - resource?.sourceResourceUrl, - resource?.previewUrl, - resource?.coverUrl, - resource?.cover, - ]; - return _firstNonBlankChatBubbleUrl([ - ...candidates.where((value) => SCNetworkSvgaWidget.isSvga(value)), - ...candidates, - ]); -} - -String _firstNonBlankChatBubbleUrl(Iterable values) { - for (final value in values) { - final text = value?.trim(); - if (text != null && text.isNotEmpty) { - return text; - } - } - return ""; -} - class SCMessageChatPage extends StatefulWidget { final V2TimConversation? conversation; final bool shrinkWrap; @@ -144,8 +119,6 @@ class _SCMessageChatPageState extends State { ///互相关注才能互相发送消息 bool canSendMsg = false; SocialChatUserProfile? friend; - SCVipResourceRes? _selfVipChatBubble; - bool _isSelfVipChatBubbleLoading = false; final Map _localCpInviteStates = {}; ///是否显示发送按钮 @@ -196,7 +169,6 @@ class _SCMessageChatPageState extends State { rtmProvider?.onRevokeMessageListener = _onRevokeMessage; rtmProvider?.onNewMessageCurrentConversationListener = _onNewMessage; loadMsg(); - _loadSelfVipChatBubble(); if (_isC2CConversation && friend == null) { loadFriend(); @@ -385,171 +357,6 @@ class _SCMessageChatPageState extends State { }); } - Future _loadSelfVipChatBubble() async { - if (_isSelfVipChatBubbleLoading) return; - final currentUserId = AccountStorage().getCurrentUser()?.userProfile?.id; - if (currentUserId == null || currentUserId.isEmpty) return; - - _isSelfVipChatBubbleLoading = true; - final repository = SCVipRepositoryImp(); - SCVipHomeRes? vipHome; - SCVipResourceRes? chatBubble; - - try { - final home = await repository.vipHome(); - vipHome = home; - chatBubble = _resolveSelfVipChatBubbleFromHome(home); - } catch (error) {} - - if (chatBubble == null) { - try { - final status = await repository.vipStatus(); - chatBubble = _resolveSelfVipChatBubbleFromStatus(status); - if (chatBubble == null && - vipHome != null && - _isUsableVipStatus(status)) { - chatBubble = _firstUsableVipChatBubble([ - _currentVipLevelConfig( - vipHome, - targetLevel: status.levelInt, - targetLevelCode: status.levelCode, - )?.chatBubble, - ]); - } - } catch (error) {} - } - - if (!mounted) return; - setState(() { - _selfVipChatBubble = chatBubble; - _isSelfVipChatBubbleLoading = false; - }); - } - - SCVipResourceRes? _resolveSelfVipChatBubbleFromHome(SCVipHomeRes home) { - final status = home.state; - if (status?.active == false) { - return null; - } - - final config = _currentVipLevelConfig(home); - if (_isUsableVipStatus(status)) { - return _firstUsableVipChatBubble([ - status?.chatBubble, - config?.chatBubble, - ]); - } - - final profileLevel = - AccountStorage().getCurrentUser()?.userProfile?.vipLevelForColoredId ?? - 0; - if (profileLevel > 0) { - return _firstUsableVipChatBubble([config?.chatBubble]); - } - return null; - } - - SCVipResourceRes? _resolveSelfVipChatBubbleFromStatus(SCVipStatusRes status) { - if (!_isUsableVipStatus(status)) { - return null; - } - return _firstUsableVipChatBubble([status.chatBubble]); - } - - SCVipLevelConfigRes? _currentVipLevelConfig( - SCVipHomeRes home, { - int? targetLevel, - String? targetLevelCode, - }) { - final status = home.state; - final statusLevel = _vipLevelIntFromStatus(status); - final profileLevel = - AccountStorage().getCurrentUser()?.userProfile?.vipLevelForColoredId ?? - 0; - final resolvedTargetLevel = - (targetLevel ?? 0) > 0 - ? targetLevel! - : (statusLevel > 0 ? statusLevel : profileLevel); - final statusLevelCode = - targetLevelCode?.trim() ?? status?.levelCode?.trim(); - - for (final level in home.levels) { - if (resolvedTargetLevel > 0 && level.levelInt == resolvedTargetLevel) { - return level; - } - } - if (statusLevelCode != null && statusLevelCode.isNotEmpty) { - for (final level in home.levels) { - if (_sameVipLevelCode(level.levelCode, statusLevelCode)) { - return level; - } - } - } - return null; - } - - bool _isUsableVipStatus(SCVipStatusRes? status) { - return status != null && - status.active != false && - (_vipLevelIntFromStatus(status) > 0 || - _hasNonBlankText(status.levelCode) || - _hasNonBlankText(status.displayName) || - _resolveVipChatBubbleImageUrl(status.chatBubble).isNotEmpty); - } - - int _vipLevelIntFromStatus(SCVipStatusRes? status) { - final explicitLevel = status?.levelInt ?? 0; - if (explicitLevel > 0) { - return explicitLevel; - } - return _parseVipLevelText(status?.levelCode) ?? - _parseVipLevelText(status?.displayName) ?? - 0; - } - - int? _parseVipLevelText(String? value) { - final text = value?.trim(); - if (text == null || text.isEmpty) { - return null; - } - final match = RegExp( - r'(?:S?VIP)?\s*([1-9]\d*)', - caseSensitive: false, - ).firstMatch(text); - return int.tryParse(match?.group(1) ?? ''); - } - - bool _sameVipLevelCode(String? left, String? right) { - final normalizedLeft = left?.replaceAll(RegExp(r'\s+'), '').toLowerCase(); - final normalizedRight = right?.replaceAll(RegExp(r'\s+'), '').toLowerCase(); - return normalizedLeft != null && - normalizedLeft.isNotEmpty && - normalizedLeft == normalizedRight; - } - - bool _hasNonBlankText(String? value) { - return value?.trim().isNotEmpty ?? false; - } - - SCVipResourceRes? _firstUsableVipChatBubble( - Iterable resources, - ) { - for (final resource in resources) { - if (_resolveVipChatBubbleImageUrl(resource).isNotEmpty) { - return resource; - } - } - return null; - } - - String _vipChatBubbleLogValue(SCVipResourceRes? resource) { - if (resource == null) return 'null'; - return '{id:${resource.resourceId},name:${resource.name},' - 'previewUrl:${resource.previewUrl},' - 'sourceUrl:${resource.sourceResourceUrl},' - 'selectedUrl:${_resolveVipChatBubbleImageUrl(resource)}}'; - } - ///消息列表 Widget _msgList() { return SmartRefresher( @@ -595,7 +402,6 @@ class _SCMessageChatPageState extends State { delegate: SliverChildBuilderDelegate( (c, i) => _MessageItem( message: currentConversationMessageList[i], - selfVipChatBubble: _selfVipChatBubble, currentConversation: currentConversation, preMessage: i > 0 ? currentConversationMessageList[i - 1] : null, @@ -1182,7 +988,6 @@ class _MessageItem extends StatelessWidget { final V2TimMessage message; final V2TimMessage? preMessage; - final SCVipResourceRes? selfVipChatBubble; final V2TimConversation? currentConversation; BusinessLogicStrategy get _strategy => SCGlobalConfig.businessLogicStrategy; @@ -1201,7 +1006,6 @@ class _MessageItem extends StatelessWidget { _MessageItem({ required this.message, - this.selfVipChatBubble, this.currentConversation, this.preMessage, // this.userProfile, @@ -2827,24 +2631,18 @@ class _MessageItem extends StatelessWidget { if (chatBubbleUrl.isNotEmpty) { return _buildVipTextBubble(content: content, imageUrl: chatBubbleUrl); } - if (message.isSelf ?? false) { - final vipChatBubbleUrl = _resolveVipChatBubbleImageUrl(selfVipChatBubble); - if (vipChatBubbleUrl.isNotEmpty) { - return _buildVipTextBubble( - content: content, - imageUrl: vipChatBubbleUrl, - ); - } - } return _buildDefaultTextBubble(content); } PropsResources? _currentUserChatBubble() { - final memoryBubble = - AccountStorage().getCurrentUser()?.userProfile?.getChatBox(); + final currentUser = AccountStorage().getCurrentUser(); + final memoryBubble = currentUser?.userProfile?.getChatBox(); if (_resolveChatBubbleImageUrl(memoryBubble).isNotEmpty) { return memoryBubble; } + if (currentUser?.userProfile != null) { + return memoryBubble; + } final userJson = DataPersistence.getCurrentUser(); if (userJson.isEmpty) { diff --git a/lib/modules/gift/gift_page.dart b/lib/modules/gift/gift_page.dart index eb74d7f..83f3a54 100644 --- a/lib/modules/gift/gift_page.dart +++ b/lib/modules/gift/gift_page.dart @@ -1900,16 +1900,6 @@ class _GiftPageState extends State with TickerProviderStateMixin { 'animationCount=$animationCount', ); SCGiftVapSvgaManager().play(gift.giftSourceUrl!); - } else if (!_isCpGift(gift) && - SCGlobalConfig.isLowPerformanceDevice && - SCGlobalConfig.isGiftSpecialEffects && - (rtcProvider?.shouldShowRoomVisualEffects ?? false)) { - _enqueueLowPerformanceGiftCompensation( - gift: gift, - receiver: u.user, - quantity: quantity, - coins: coins, - ); } else { _giftFxLog( 'skip local play because visual effects disabled ' @@ -1936,52 +1926,10 @@ class _GiftPageState extends State with TickerProviderStateMixin { } } - void _enqueueLowPerformanceGiftCompensation({ - required SocialChatGiftRes gift, - required SocialChatUserProfile? receiver, - required int quantity, - required num coins, - }) { - final sender = AccountStorage().getCurrentUser()?.userProfile; - final roomId = rtcProvider?.currenRoom?.roomProfile?.roomProfile?.id ?? ""; - _enqueueGiftFloatingMessage( - SCFloatingMessage( - type: 1, - priority: 900, - userId: sender?.id ?? "", - toUserId: receiver?.id ?? "", - userAvatarUrl: sender?.userAvatar ?? "", - toUserAvatarUrl: receiver?.userAvatar ?? "", - userName: sender?.userNickname ?? "", - toUserName: receiver?.userNickname ?? "", - giftUrl: gift.giftPhoto ?? "", - giftId: gift.id, - giftTab: _floatingGiftTabFor(gift), - number: quantity, - coins: coins, - roomId: roomId, - ), - dedupKey: _giftFloatingDedupKey( - roomId: roomId, - senderId: sender?.id, - receiverId: receiver?.id, - giftId: gift.id, - quantity: quantity, - ), - ); - } - void _enqueueGiftFloatingMessage( SCFloatingMessage message, { String? dedupKey, }) { - if (SCGlobalConfig.isLowPerformanceDevice) { - OverlayManager().addLowPerformanceCompensationMessage( - message, - dedupKey: dedupKey, - ); - return; - } OverlayManager().addMessage(message); } diff --git a/lib/modules/room_game/views/baishun_loading_view.dart b/lib/modules/room_game/views/baishun_loading_view.dart index 3363bcb..cbf3984 100644 --- a/lib/modules/room_game/views/baishun_loading_view.dart +++ b/lib/modules/room_game/views/baishun_loading_view.dart @@ -6,24 +6,24 @@ class BaishunLoadingView extends StatelessWidget { const BaishunLoadingView({ super.key, this.message = 'Loading game...', + this.backgroundColor = const Color(0xFF081915), }); final String message; + final Color backgroundColor; @override Widget build(BuildContext context) { return Positioned.fill( child: Container( - color: Colors.black.withValues(alpha: 0.42), + color: backgroundColor, alignment: Alignment.center, child: Container( padding: EdgeInsets.symmetric(horizontal: 22.w, vertical: 18.w), decoration: BoxDecoration( color: const Color(0xFF102D28).withValues(alpha: 0.92), borderRadius: BorderRadius.circular(16.w), - border: Border.all( - color: Colors.white.withValues(alpha: 0.1), - ), + border: Border.all(color: Colors.white.withValues(alpha: 0.1)), ), child: Column( mainAxisSize: MainAxisSize.min, diff --git a/lib/modules/user/my_items/chatbox/bags_chatbox_page.dart b/lib/modules/user/my_items/chatbox/bags_chatbox_page.dart index 6057619..3475e5b 100644 --- a/lib/modules/user/my_items/chatbox/bags_chatbox_page.dart +++ b/lib/modules/user/my_items/chatbox/bags_chatbox_page.dart @@ -295,6 +295,9 @@ class _BagsChatboxPageState res.propsResources?.id ?? "", unload, ); + try { + await profileManager.fetchUserProfileData(loadGuardCount: false); + } catch (_) {} if (!mounted) { return false; } @@ -305,8 +308,11 @@ class _BagsChatboxPageState myChatbox = null; SCTts.show(localizations.successfullyUnloaded); } + profileManager.syncCurrentUserChatBubble( + unload ? null : res.propsResources, + expireTime: res.expireTime?.toString(), + ); setState(() {}); - profileManager.fetchUserProfileData(loadGuardCount: false); return true; } catch (e) { return false; diff --git a/lib/services/audio/rtc_manager.dart b/lib/services/audio/rtc_manager.dart index 423d7f3..f2f0862 100644 --- a/lib/services/audio/rtc_manager.dart +++ b/lib/services/audio/rtc_manager.dart @@ -13,8 +13,6 @@ import 'package:yumi/shared/tools/sc_room_utils.dart'; import 'package:yumi/shared/tools/sc_room_top_layer_guard.dart'; import 'package:yumi/shared/tools/sc_cp_relation_notice_utils.dart'; import 'package:yumi/shared/data_sources/models/message/room_rocket_launch_broadcast_message.dart'; -import 'package:yumi/shared/data_sources/models/message/sc_floating_message.dart'; -import 'package:yumi/shared/data_sources/sources/local/floating_screen_manager.dart'; import 'package:yumi/shared/data_sources/sources/local/user_manager.dart'; import 'package:yumi/shared/data_sources/sources/repositories/sc_room_repository_imp.dart'; import 'package:yumi/shared/data_sources/sources/repositories/sc_vip_repository_imp.dart'; @@ -3864,46 +3862,6 @@ class RealTimeCommunicationManager extends ChangeNotifier { return ""; } - String _resolveEntryCompensationCover(PropsResources? resource) { - return _firstNonBlankEntryResource([ - resource?.roomSendCoverUrl, - resource?.roomOpenedUrl, - resource?.cover, - resource?.roomNotOpenedUrl, - ]); - } - - void _enqueueLowPerformanceEntryCompensation({ - required Msg joinMsg, - required PropsResources resource, - required String roomId, - }) { - if (!SCGlobalConfig.isLowPerformanceDevice || - !shouldShowRoomVisualEffects || - roomId.isEmpty) { - return; - } - final coverUrl = _resolveEntryCompensationCover(resource); - OverlayManager().addLowPerformanceCompensationMessage( - SCFloatingMessage( - type: 5, - priority: 950, - userId: joinMsg.user?.id ?? "", - roomId: roomId, - userAvatarUrl: joinMsg.user?.userAvatar ?? "", - userName: joinMsg.user?.userNickname ?? "", - giftUrl: coverUrl, - fallbackUrl: coverUrl, - ), - dedupKey: [ - "entry", - roomId, - joinMsg.user?.id ?? "", - resource.id ?? "", - ].join("|"), - ); - } - void _playRoomEntryEffects( Msg joinMsg, { required int entryRequestSerial, @@ -3931,24 +3889,6 @@ class RealTimeCommunicationManager extends ChangeNotifier { type: SCGiftVapSvgaManager.entryEffectType, ); }); - } else if (sourceUrl.isNotEmpty && - SCGlobalConfig.isLowPerformanceDevice && - SCGlobalConfig.isEntryVehicleAnimation && - shouldShowRoomVisualEffects && - _isCurrentRoomEntrySession(entryRequestSerial, roomId)) { - _roomEntryEffectTimer?.cancel(); - _roomEntryEffectTimer = Timer(const Duration(milliseconds: 550), () { - _roomEntryEffectTimer = null; - if (!shouldShowRoomVisualEffects || - !_isCurrentRoomEntrySession(entryRequestSerial, roomId)) { - return; - } - _enqueueLowPerformanceEntryCompensation( - joinMsg: joinMsg, - resource: entryResource, - roomId: roomId, - ); - }); } } if (rtmProvider?.msgUserJoinListener != null) { @@ -5296,11 +5236,10 @@ class RealTimeCommunicationManager extends ChangeNotifier { ); final targetIndex = micGoUpRes.micIndex ?? index; + final selfMicMuted = micGoUpRes.micMute ?? false; final switched = await _switchRoomRtcToBroadcaster( - muted: (micGoUpRes.micMute ?? false) || isMic, - keepAudioPublishing: - ((micGoUpRes.micMute ?? false) || isMic) && - _currentUserPublishingRoomMusic, + muted: selfMicMuted, + keepAudioPublishing: selfMicMuted && _currentUserPublishingRoomMusic, ); if (!switched) { await _switchRoomRtcToAudience(); @@ -5356,6 +5295,7 @@ class RealTimeCommunicationManager extends ChangeNotifier { roomToken: micGoUpRes.roomToken, ); } + isMic = selfMicMuted; _syncSelfMicRuntimeState(); if (roomWheatMap[targetIndex]?.micMute ?? false) { ///房主上麦自动解禁麦位 diff --git a/lib/services/audio/rtm_manager.dart b/lib/services/audio/rtm_manager.dart index 27bbacb..e01ff20 100644 --- a/lib/services/audio/rtm_manager.dart +++ b/lib/services/audio/rtm_manager.dart @@ -256,13 +256,6 @@ class RealTimeMessagingManager extends ChangeNotifier { SCFloatingMessage message, { String? dedupKey, }) { - if (SCGlobalConfig.isLowPerformanceDevice) { - OverlayManager().addLowPerformanceCompensationMessage( - message, - dedupKey: dedupKey, - ); - return; - } OverlayManager().addMessage(message); } @@ -283,23 +276,6 @@ class RealTimeMessagingManager extends ChangeNotifier { ].join("|"); } - String _entryFloatingDedupKey({ - required String? roomId, - required String? userId, - required String? resourceId, - }) { - return ["entry", roomId ?? "", userId ?? "", resourceId ?? ""].join("|"); - } - - String _resolveEntryCompensationCover(PropsResources? resource) { - return _firstNonBlank([ - resource?.roomSendCoverUrl, - resource?.roomOpenedUrl, - resource?.cover, - resource?.roomNotOpenedUrl, - ]); - } - String _firstNonBlank(Iterable values) { for (final value in values) { final text = value?.trim(); @@ -6387,29 +6363,6 @@ class RealTimeMessagingManager extends ChangeNotifier { priority: SCGiftVapSvgaManager.entryEffectPriority, type: SCGiftVapSvgaManager.entryEffectType, ); - } else if (SCGlobalConfig.isLowPerformanceDevice && - SCGlobalConfig.isEntryVehicleAnimation && - shouldShowRoomVisualEffects) { - final roomId = - rtcProvider.currenRoom?.roomProfile?.roomProfile?.id ?? ""; - final coverUrl = _resolveEntryCompensationCover(entryResource); - OverlayManager().addLowPerformanceCompensationMessage( - SCFloatingMessage( - type: 5, - priority: 950, - userId: msg.user?.id ?? "", - roomId: roomId, - userAvatarUrl: msg.user?.userAvatar ?? "", - userName: msg.user?.userNickname ?? "", - giftUrl: coverUrl, - fallbackUrl: coverUrl, - ), - dedupKey: _entryFloatingDedupKey( - roomId: roomId, - userId: msg.user?.id, - resourceId: entryResource.id, - ), - ); } } } else if (msg.type == SCRoomMsgType.gift) { @@ -6460,46 +6413,6 @@ class RealTimeMessagingManager extends ChangeNotifier { 'giftId=${gift.id} giftName=${gift.giftName}', ); SCGiftVapSvgaManager().play(giftSourceUrl); - } else if (!scIsCpGift(gift) && - SCGlobalConfig.isLowPerformanceDevice && - SCGlobalConfig.isGiftSpecialEffects && - rtcProvider.shouldShowRoomVisualEffects) { - final roomId = - (msg.msg?.trim().isNotEmpty ?? false) - ? msg.msg ?? "" - : rtcProvider - .currenRoom - ?.roomProfile - ?.roomProfile - ?.id ?? - ""; - final quantity = msg.number ?? 0; - final coins = quantity * (gift.giftCandy ?? 0); - _enqueueGiftFloatingMessage( - SCFloatingMessage( - type: 1, - priority: 900, - userId: msg.user?.id ?? "", - toUserId: msg.toUser?.id ?? "", - userAvatarUrl: msg.user?.userAvatar ?? "", - userName: msg.user?.userNickname ?? "", - toUserName: msg.toUser?.userNickname ?? "", - toUserAvatarUrl: msg.toUser?.userAvatar ?? "", - giftUrl: gift.giftPhoto, - giftId: gift.id, - giftTab: _floatingGiftTabFor(gift), - number: quantity, - coins: coins, - roomId: roomId, - ), - dedupKey: _giftFloatingDedupKey( - roomId: roomId, - senderId: msg.user?.id, - receiverId: msg.toUser?.id, - giftId: gift.id, - quantity: quantity, - ), - ); } else { _giftFxLog( 'skip player play because visual effects disabled ' diff --git a/lib/services/auth/user_profile_manager.dart b/lib/services/auth/user_profile_manager.dart index add84ed..d5adb4e 100644 --- a/lib/services/auth/user_profile_manager.dart +++ b/lib/services/auth/user_profile_manager.dart @@ -14,6 +14,7 @@ import 'package:yumi/shared/business_logic/models/res/login_res.dart'; import 'package:yumi/shared/business_logic/models/res/room_user_card_res.dart'; import 'package:yumi/shared/business_logic/models/res/sc_user_identity_res.dart'; import 'package:yumi/shared/business_logic/models/res/sc_vip_res.dart'; +import 'package:yumi/shared/data_sources/models/enum/sc_props_type.dart'; import 'package:yumi/shared/tools/sc_cp_relation_level_utils.dart'; import 'package:yumi/shared/tools/sc_cp_relation_notice_utils.dart'; @@ -92,6 +93,32 @@ class SocialChatUserProfileManager extends ChangeNotifier { notifyListeners(); } + void syncCurrentUserChatBubble( + PropsResources? chatBubble, { + String? expireTime, + }) { + final profile = currentUserProfile; + if (profile == null) { + return; + } + + final useProps = [ + ...?profile.useProps?.where( + (item) => item.propsResources?.type != SCPropsType.CHAT_BUBBLE.name, + ), + ]; + if (chatBubble != null) { + useProps.add( + UseProps( + expireTime: expireTime ?? "4102444800000", + propsResources: chatBubble, + userId: profile.id, + ), + ); + } + syncCurrentUserProfile(profile.copyWith(useProps: useProps)); + } + Future fetchUserProfileData({ bool loadGuardCount = true, bool refreshFamilyData = false, diff --git a/lib/shared/data_sources/sources/local/floating_screen_manager.dart b/lib/shared/data_sources/sources/local/floating_screen_manager.dart index b9739a9..c2f36f5 100644 --- a/lib/shared/data_sources/sources/local/floating_screen_manager.dart +++ b/lib/shared/data_sources/sources/local/floating_screen_manager.dart @@ -26,9 +26,7 @@ import 'package:yumi/ui_kit/widgets/svga/sc_svga_asset_widget.dart'; typedef FloatingScreenManager = OverlayManager; class OverlayManager { - static const int _maxLowPerformanceCompensationQueueLength = 8; static const int _maxDeferredRegionRedPacketCount = 12; - static const Duration _compensationDedupWindow = Duration(seconds: 3); static const Duration _redPacketFloatingDedupWindow = Duration(minutes: 30); static const Duration _rocketFloatingFallbackDedupWindow = Duration( seconds: 30, @@ -43,7 +41,6 @@ class OverlayManager { (a, b) => b.priority.compareTo(a.priority), ); final List _deferredRegionRedPacketMessages = []; - final Map _recentCompensationKeys = {}; final Map _recentFloatingKeys = {}; final Map _stackedOverlayEntries = {}; final Map _stackedMessages = {}; @@ -84,28 +81,6 @@ class OverlayManager { } } - void addLowPerformanceCompensationMessage( - SCFloatingMessage message, { - String? dedupKey, - }) { - if (_isDisposed || - _isSuppressed || - !SCGlobalConfig.isLowPerformanceDevice || - SCGlobalConfig.isFloatingBroadcastClosed) { - return; - } - final key = dedupKey ?? _compensationKeyFor(message); - if (_isRecentCompensationDuplicate(key)) { - return; - } - _rememberCompensationKey(key); - _trimLowPerformanceCompensationQueue(); - _enqueueMessage( - message, - debugLabel: 'low_performance_compensation_${message.type ?? -1}', - ); - } - void _enqueueMessage( SCFloatingMessage message, { required String debugLabel, @@ -123,27 +98,6 @@ class OverlayManager { ); } - bool _isRecentCompensationDuplicate(String key) { - _pruneRecentCompensationKeys(); - final recentTime = _recentCompensationKeys[key]; - if (recentTime == null) { - return false; - } - return DateTime.now().difference(recentTime) < _compensationDedupWindow; - } - - void _rememberCompensationKey(String key) { - _recentCompensationKeys[key] = DateTime.now(); - _pruneRecentCompensationKeys(); - } - - void _pruneRecentCompensationKeys() { - final now = DateTime.now(); - _recentCompensationKeys.removeWhere( - (_, time) => now.difference(time) > _compensationDedupWindow, - ); - } - bool _isRecentFloatingDuplicate(SCFloatingMessage message) { _pruneRecentFloatingKeys(); final key = _floatingDedupKeyFor(message); @@ -261,33 +215,6 @@ class OverlayManager { return _redPacketFloatingDedupWindow; } - String _compensationKeyFor(SCFloatingMessage message) { - return [ - message.type, - message.roomId, - message.userId, - message.toUserId, - message.giftId, - message.number, - message.giftUrl, - ].join('|'); - } - - void _trimLowPerformanceCompensationQueue() { - if (_messageQueue.length < _maxLowPerformanceCompensationQueueLength) { - return; - } - final retained = - _messageQueue.unorderedElements.cast().toList() - ..sort((a, b) => b.priority.compareTo(a.priority)); - _messageQueue.clear(); - for (final message in retained.take( - _maxLowPerformanceCompensationQueueLength - 1, - )) { - _messageQueue.add(message); - } - } - Future _warmMessageImages(SCFloatingMessage message) async { unawaited( warmImageResource( @@ -671,7 +598,7 @@ class OverlayManager { SCGlobalConfig.floatingBroadcastScope = scope; return; } - final defaultEffectsEnabled = !SCGlobalConfig.isLowPerformanceDevice; + const defaultEffectsEnabled = true; final isLegacyFloatingAnimationInGlobal = DataPersistence.getBool( SCGlobalConfig.legacyFloatingAnimationInGlobalStorageKey(account), defaultValue: defaultEffectsEnabled, @@ -752,7 +679,6 @@ class OverlayManager { _removeAllStackedMessages(); _messageQueue.clear(); _deferredRegionRedPacketMessages.clear(); - _recentCompensationKeys.clear(); _isPlaying = false; _isProcessing = false; } diff --git a/lib/shared/tools/sc_lucky_gift_win_sound_player.dart b/lib/shared/tools/sc_lucky_gift_win_sound_player.dart index baeb138..28fe3c6 100644 --- a/lib/shared/tools/sc_lucky_gift_win_sound_player.dart +++ b/lib/shared/tools/sc_lucky_gift_win_sound_player.dart @@ -1,14 +1,20 @@ +import 'dart:async'; + import 'package:audioplayers/audioplayers.dart'; import 'package:yumi/shared/data_sources/sources/local/data_persistence.dart'; class SCLuckyGiftWinSoundPlayer { static const String assetPath = "sc_images/room/anim/luck_gift/lucky_gift_win.mp3"; - static const Duration _sameEventDedupeWindow = Duration(seconds: 3); + static const Duration _stopDelay = Duration(milliseconds: 3200); + static const double _volume = 0.75; static final AudioPlayer _player = AudioPlayer(); - static String? _lastEventKey; - static DateTime? _lastPlayedAt; + static bool _loaded = false; + static bool _playing = false; + static Future? _loadFuture; + static Future? _startFuture; + static Timer? _stopTimer; static String buildEventKey({ String? giftId, @@ -26,25 +32,75 @@ class SCLuckyGiftWinSoundPlayer { static Future play({String? eventKey}) async { if (DataPersistence.getPlayGiftMusic()) { + unawaited(stop()); return; } - final normalizedEventKey = (eventKey ?? '').trim(); - final now = DateTime.now(); - final lastPlayedAt = _lastPlayedAt; - if (normalizedEventKey.isNotEmpty && - normalizedEventKey == _lastEventKey && - lastPlayedAt != null && - now.difference(lastPlayedAt) < _sameEventDedupeWindow) { - return; - } - - _lastEventKey = normalizedEventKey.isEmpty ? null : normalizedEventKey; - _lastPlayedAt = now; try { - await _player.stop(); - await _player.play(AssetSource(assetPath)); - } catch (error) {} + await _ensureLoaded(); + _extendStopWindow(); + + if (_playing || _startFuture != null) { + return; + } + + _startFuture = _startPlayback(); + await _startFuture; + } catch (error) { + _startFuture = null; + } + _startFuture = null; + } + + static Future stop() async { + _stopTimer?.cancel(); + _stopTimer = null; + try { + if (_player.state != PlayerState.stopped) { + await _player.stop(); + } + } catch (error) { + _playing = false; + return; + } + _playing = false; + } + + static Future _ensureLoaded() { + if (_loaded) { + return Future.value(); + } + final loadFuture = _loadFuture; + if (loadFuture != null) { + return loadFuture; + } + _loadFuture = _load(); + return _loadFuture!; + } + + static Future _load() async { + try { + await _player.setReleaseMode(ReleaseMode.loop); + await _player.setVolume(_volume); + await _player.setSource(AssetSource(assetPath)); + _loaded = true; + } catch (error) { + _loadFuture = null; + rethrow; + } + } + + static Future _startPlayback() async { + await _player.seek(Duration.zero); + await _player.resume(); + _playing = true; + } + + static void _extendStopWindow() { + _stopTimer?.cancel(); + _stopTimer = Timer(_stopDelay, () { + unawaited(stop()); + }); } static String _formatNum(num? value) { diff --git a/lib/shared/tools/sc_room_utils.dart b/lib/shared/tools/sc_room_utils.dart index 0f8244c..24b6447 100644 --- a/lib/shared/tools/sc_room_utils.dart +++ b/lib/shared/tools/sc_room_utils.dart @@ -288,7 +288,7 @@ class SCChatRoomHelper { } static void roomSCGlobalConfig(String roomId) { - final defaultEffectsEnabled = !SCGlobalConfig.isLowPerformanceDevice; + const defaultEffectsEnabled = true; final account = AccountStorage().getCurrentUser()?.userProfile?.account; SCGlobalConfig .isGiftSpecialEffects = SCGlobalConfig.clampVisualEffectPreference( diff --git a/lib/ui_kit/widgets/bag/props_bag_chatbox_detail_dialog.dart b/lib/ui_kit/widgets/bag/props_bag_chatbox_detail_dialog.dart index 1d44c88..fbe95fb 100644 --- a/lib/ui_kit/widgets/bag/props_bag_chatbox_detail_dialog.dart +++ b/lib/ui_kit/widgets/bag/props_bag_chatbox_detail_dialog.dart @@ -1,5 +1,3 @@ -import 'package:extended_image/extended_image.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_debouncer/flutter_debouncer.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -70,7 +68,11 @@ class _PropsBagChatboxDetailDialogState ], ), SizedBox(height: 25.w), - netImage(url: widget.res.propsResources?.cover??"",width: 80.w,height: 25.w), + netImage( + url: widget.res.propsResources?.cover ?? "", + width: 80.w, + height: 25.w, + ), SizedBox(height: 30.w), GestureDetector( child: Container( @@ -136,6 +138,11 @@ class _PropsBagChatboxDetailDialogState } void _use(BagsListRes res, bool unload) { + final localizations = SCAppLocalizations.of(context)!; + final profileManager = Provider.of( + context, + listen: false, + ); SCLoadingManager.show(); SCStoreRepositoryImp() .switchPropsUse( @@ -144,18 +151,25 @@ class _PropsBagChatboxDetailDialogState unload, ) .then((value) async { - await Provider.of( - context, - listen: false, - ).fetchUserProfileData(loadGuardCount: false); + try { + await profileManager.fetchUserProfileData(loadGuardCount: false); + } catch (_) {} + if (!mounted) { + SCLoadingManager.hide(); + return; + } + profileManager.syncCurrentUserChatBubble( + unload ? null : res.propsResources, + expireTime: res.expireTime?.toString(), + ); Future.delayed(Duration(milliseconds: 400), () { SCLoadingManager.hide(); SmartDialog.dismiss(tag: "showPropsDetail"); }); if (!unload) { - SCTts.show(SCAppLocalizations.of(context)!.successfulWear); + SCTts.show(localizations.successfulWear); } else { - SCTts.show(SCAppLocalizations.of(context)!.successfullyUnloaded); + SCTts.show(localizations.successfullyUnloaded); } }) .catchError((e) { diff --git a/lib/ui_kit/widgets/room/anim/room_entrance_screen.dart b/lib/ui_kit/widgets/room/anim/room_entrance_screen.dart index 39e4f10..9218637 100644 --- a/lib/ui_kit/widgets/room/anim/room_entrance_screen.dart +++ b/lib/ui_kit/widgets/room/anim/room_entrance_screen.dart @@ -65,10 +65,6 @@ class _RoomAnimationQueueScreenState extends State { } void _enqueueVipEntryFloatingMessage(Msg msg) { - if (SCGlobalConfig.isLowPerformanceDevice && - ((msg.user?.getMountains()?.sourceUrl ?? "").trim().isNotEmpty)) { - return; - } final floatPicture = msg.user?.getFloatPicture(); final floatPictureUrl = _resolveVipFloatPictureUrl(floatPicture); final floatPictureFallbackUrl = _resolveVipFloatPictureFallbackUrl( @@ -86,33 +82,16 @@ class _RoomAnimationQueueScreenState extends State { if (roomId.isEmpty) { return; } - final isLowPerformance = SCGlobalConfig.isLowPerformanceDevice; - final displayUrl = - isLowPerformance && floatPictureFallbackUrl.isNotEmpty - ? floatPictureFallbackUrl - : floatPictureUrl; final floatingMessage = SCFloatingMessage( type: 5, userId: msg.user?.id, roomId: roomId, userAvatarUrl: msg.user?.userAvatar, userName: msg.user?.userNickname, - giftUrl: displayUrl, + giftUrl: floatPictureUrl, fallbackUrl: floatPictureFallbackUrl, priority: 900, ); - if (isLowPerformance) { - OverlayManager().addLowPerformanceCompensationMessage( - floatingMessage, - dedupKey: [ - "entry_float", - roomId, - msg.user?.id ?? "", - floatPicture?.id ?? "", - ].join("|"), - ); - return; - } OverlayManager().addMessage(floatingMessage); } diff --git a/sc_images/room/anim/luck_gift/lucky_gift_win.mp3 b/sc_images/room/anim/luck_gift/lucky_gift_win.mp3 index 974ce34e6ab5149cf790a67d25ec1ec296e2c5a4..44ea1120e83808db2f0f8e00f2adf75ba9187e0c 100644 GIT binary patch delta 12 TcmZoz!`-lit?B2opNx|LC8!1u delta 83621 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≀nnwL%WUk0U8-Ktp#1MU*L)0A1lQ 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 E0LXDHBLDyZ