chatapp3-flutter/lib/services/room/rc_room_manager.dart
2026-04-14 14:49:28 +08:00

66 lines
2.3 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:yumi/app_localizations.dart';
import 'package:yumi/ui_kit/components/sc_tts.dart';
import 'package:yumi/shared/tools/sc_loading_manager.dart';
import 'package:yumi/shared/data_sources/sources/repositories/sc_room_repository_imp.dart';
import 'package:yumi/shared/data_sources/sources/repositories/sc_user_repository_impl.dart';
import 'package:yumi/shared/business_logic/models/res/sc_edit_room_info_res.dart';
import 'package:yumi/shared/business_logic/models/res/my_room_res.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_contribute_level_res.dart';
class SocialChatRoomManager extends ChangeNotifier {
MyRoomRes? myRoom;
SCRoomContributeLevelRes? roomContributeLevelRes;
void fetchMyRoomData() async {
myRoom = null;
myRoom = await SCAccountRepository().myProfile();
notifyListeners();
}
void updateMyRoomInfo(SCEditRoomInfoRes roomInfo) {
if (myRoom != null && myRoom!.id == roomInfo.id) {
if (roomInfo.roomCover != null) {
myRoom?.setRoomCover = roomInfo.roomCover!;
}
if (roomInfo.roomName != null) {
myRoom?.setRoomName = roomInfo.roomName!;
}
if (roomInfo.roomDesc != null) {
myRoom?.setRoomDesc = roomInfo.roomDesc!;
}
notifyListeners();
}
}
void createNewRoom(BuildContext context, {String? customName}) async {
SCLoadingManager.show(context: context);
// 差异化:添加自定义名称参数(暂未使用,为未来扩展预留)
if (customName != null) {
// TODO: 实现自定义房间名称
debugPrint('创建房间使用自定义名称: $customName');
}
await SCAccountRepository().createRoom();
myRoom = await SCAccountRepository().myProfile();
if (!context.mounted) {
notifyListeners();
SCLoadingManager.hide();
return;
}
SCTts.show(SCAppLocalizations.of(context)!.createRoomSuccsess);
notifyListeners();
SCLoadingManager.hide();
}
void fetchContributionLevelData(String roomId, {bool forceRefresh = false}) {
if (forceRefresh) {
roomContributeLevelRes = null;
}
SCChatRoomRepository().roomContributionActivity(roomId).then((value) {
roomContributeLevelRes = value;
notifyListeners();
});
}
}