import 'dart:ui' as ui; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:aslan/chatvibe_core/constants/at_room_msg_type.dart'; import 'package:aslan/chatvibe_ui/widgets/room/room_msg_item.dart'; import 'package:provider/provider.dart'; import 'package:aslan/app_localizations.dart'; import 'package:aslan/chatvibe_data/sources/local/user_manager.dart'; import 'package:aslan/chatvibe_data/sources/repositories/room_repository_imp.dart'; import 'package:aslan/chatvibe_domain/models/res/room_user_card_res.dart'; import 'package:aslan/chatvibe_managers/rtc_manager.dart'; import 'package:aslan/chatvibe_managers/rtm_manager.dart'; import '../../../chatvibe_data/models/enum/at_room_roles_type.dart'; import '../../components/at_tts.dart'; import '../../components/text/at_text.dart'; class SetRoomRolePage extends StatefulWidget { RoomUserCardRes? userCardInfo; SetRoomRolePage(this.userCardInfo); @override _SetRoomRolePageState createState() => _SetRoomRolePageState(); } class _SetRoomRolePageState extends State { String roomId = ""; String roomAccount = ""; String optTips = ""; RtmProvider? rtmProvider; @override void initState() { super.initState(); roomId = Provider.of( context, listen: false, ).currenRoom?.roomProfile?.roomProfile?.id ?? ""; rtmProvider = Provider.of(context, listen: false); roomAccount = Provider.of( context, listen: false, ).currenRoom?.roomProfile?.roomProfile?.roomAccount ?? ""; } @override Widget build(BuildContext context) { optTips = ATAppLocalizations.of(context)!.operationSuccessful; return ClipRect( child: BackdropFilter( filter: ui.ImageFilter.blur(sigmaX: 15, sigmaY: 15), child: Container( width: ScreenUtil().screenWidth * 0.75, padding: EdgeInsets.symmetric(horizontal: 10.w), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(12.w)), ), child: Column( mainAxisSize: MainAxisSize.min, children: [ SizedBox(height: 18.w), Row( children: [ Expanded( child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { if (widget.userCardInfo?.roomRole == ATRoomRolesType.ADMIN.name) { ATTts.show( ATAppLocalizations.of( context, )!.alreadyAnAdministrator, ); return; } Navigator.of(context).pop(); ChatRoomRepository() .changeRoomRole( roomId, ATRoomRolesType.ADMIN.name, widget.userCardInfo?.userProfile?.id ?? "", AccountStorage() .getCurrentUser() ?.userProfile ?.id ?? "", "OTHER_CHANGE", ) .whenComplete(() { ATTts.show(optTips); Msg msg = Msg( groupId: roomAccount, msg: 'ADMIN', toUser: widget.userCardInfo?.userProfile, type: ATRoomMsgType.roomRoleChange, ); rtmProvider?.sendMsg(msg, addLocal: true); }); }, child: Column( children: [ Image.asset( "atu_images/room/at_icon_room_gly.png", width: 30.w, height: 30.w, ), SizedBox(height: 10.w), text( ATAppLocalizations.of(context)!.admin, textColor: Color(0xffB1B1B1), fontSize: 13.sp, ), ], ), ), ), Expanded( child: GestureDetector( behavior: HitTestBehavior.opaque, child: Column( children: [ Image.asset( "atu_images/room/at_icon_room_hy.png", width: 30.w, height: 30.w, ), SizedBox(height: 10.w), text( ATAppLocalizations.of(context)!.member, textColor: Color(0xffB1B1B1), fontSize: 13.sp, ), ], ), onTap: () { if (widget.userCardInfo?.roomRole == ATRoomRolesType.MEMBER.name) { ATTts.show( ATAppLocalizations.of(context)!.alreadyAnMember, ); return; } Navigator.of(context).pop(); ChatRoomRepository() .changeRoomRole( roomId, ATRoomRolesType.MEMBER.name, widget.userCardInfo?.userProfile?.id ?? "", AccountStorage() .getCurrentUser() ?.userProfile ?.id ?? "", "OTHER_CHANGE", ) .whenComplete(() { ATTts.show(optTips); Msg msg = Msg( groupId: roomAccount, msg: 'MEMBER', toUser: widget.userCardInfo?.userProfile, type: ATRoomMsgType.roomRoleChange, ); rtmProvider?.sendMsg(msg, addLocal: true); }); }, ), ), Expanded( child: GestureDetector( behavior: HitTestBehavior.opaque, child: Column( children: [ Image.asset( "atu_images/room/at_icon_room_guest.png", width: 30.w, height: 30.w, ), SizedBox(height: 10.w), text( ATAppLocalizations.of(context)!.guest, textColor: Color(0xffB1B1B1), fontSize: 13.sp, ), ], ), onTap: () { if (widget.userCardInfo?.roomRole == ATRoomRolesType.TOURIST.name) { ATTts.show( ATAppLocalizations.of(context)!.alreadyAnTourist, ); return; } Navigator.of(context).pop(); ChatRoomRepository() .changeRoomRole( roomId, ATRoomRolesType.TOURIST.name, widget.userCardInfo?.userProfile?.id ?? "", AccountStorage() .getCurrentUser() ?.userProfile ?.id ?? "", "OTHER_CHANGE", ) .whenComplete(() { ATTts.show(optTips); Msg msg = Msg( groupId: roomAccount, msg: 'TOURIST', toUser: widget.userCardInfo?.userProfile, type: ATRoomMsgType.roomRoleChange, ); rtmProvider?.sendMsg(msg, addLocal: true); }); }, ), ), ], ), SizedBox(height: 20.w), ], ), ), ), ); } }