import 'package:aslan/chatvibe_ui/theme/chatvibe_theme.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:aslan/app_localizations.dart'; import 'package:aslan/chatvibe_ui/components/appbar/chatvibe_appbar.dart'; import 'package:aslan/chatvibe_ui/components/at_tts.dart'; import 'package:aslan/chatvibe_core/utilities/at_loading_manager.dart'; import 'package:aslan/chatvibe_data/sources/local/user_manager.dart'; import 'package:aslan/chatvibe_data/sources/repositories/user_repository_impl.dart'; import 'package:aslan/chatvibe_ui/components/at_debounce_widget.dart'; import 'package:aslan/chatvibe_ui/components/text/at_text.dart'; import '../../../../chatvibe_core/utilities/at_user_utils.dart'; import '../../../../chatvibe_data/models/enum/at_vip_contact_mode_type.dart'; import '../../../../chatvibe_data/models/enum/at_vip_type.dart'; import '../../../../chatvibe_domain/models/res/at_user_vip_ability_res.dart'; class SocialPrivilegePage extends StatefulWidget { @override _SocialPrivilegePageState createState() => _SocialPrivilegePageState(); } class _SocialPrivilegePageState extends State { ATUserVipAbilityRes? res; @override void initState() { super.initState(); _getUserVipAbility(); } @override Widget build(BuildContext context) { return SafeArea( top: false, child: Container( decoration: BoxDecoration( gradient: LinearGradient( colors: [Color(0xff2D2B35), Color(0xff17161E)], ), borderRadius: BorderRadius.only( topLeft: Radius.circular(12), topRight: Radius.circular(12), ), ), height: ScreenUtil().screenHeight * 0.6, child: Column( children: [ SizedBox(height: 10.w), Row( mainAxisSize: MainAxisSize.min, children: [ text( ATAppLocalizations.of(context)!.permissionSettings, textColor: ChatVibeTheme.primaryLight, fontWeight: FontWeight.w600, fontSize: 16.sp, ), AccountStorage().getVIP() != null ? text( "(${ATAccountHelper.getVipLevel(AccountStorage().getVIP()?.name??"")})", textColor: ChatVibeTheme.primaryLight, fontWeight: FontWeight.w600, fontSize: 16.sp, ) : Container(), ], ), Expanded( child: SingleChildScrollView( child: Column( children: [ Container( alignment: AlignmentDirectional.bottomStart, margin: EdgeInsetsDirectional.only(start: 15.w), child: text( ATAppLocalizations.of(context)!.contactUs, textColor: Colors.white70, fontSize: 15.sp, ), ), Container( padding: EdgeInsets.symmetric(vertical: 3.w), margin: EdgeInsets.symmetric( vertical: 4.w, horizontal: 15.w, ), child: Column( children: [ ATDebounceWidget( child: Row( children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text( ATAppLocalizations.of(context)!.everyone, textColor: Colors.white70, fontSize: 13.sp, ), text( ATAppLocalizations.of( context, )!.basicPermissions, textColor: Colors.white38, fontSize: 11.sp, ), ], ), Spacer(), Image.asset( res?.contactMode != ATVipContactModeType .VIP2_ABOVE .name && res?.contactMode != ATVipContactModeType .VIP3_ABOVE .name && res?.contactMode != ATVipContactModeType .VIP4_ABOVE .name && res?.contactMode != ATVipContactModeType .VIP5_ABOVE .name ? "atu_images/general/at_icon_social_privilege_select.png" : "atu_images/general/at_icon_social_privilege_unselect.png", width: 16.w, height: 16.w, ), ], ), onTap: () { if (res?.contactMode != ATVipContactModeType.EVERYONE.name) { _userVipAbilityUpdate( contactMode: ATVipContactModeType.EVERYONE.name, ); } }, ), ], ), ), Container( padding: EdgeInsets.symmetric(vertical: 3.w), margin: EdgeInsets.symmetric( vertical: 4.w, horizontal: 15.w, ), child: Column( children: [ ATDebounceWidget( child: Row( children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text( ATAppLocalizations.of( context, )!.andAboveUsers("VIP2"), textColor: Colors.white70, fontSize: 13.sp, ), text( ATAppLocalizations.of( context, )!.privileges("VIP2"), textColor: Colors.white38, fontSize: 11.sp, ), ], ), Spacer(), Image.asset( res?.contactMode == ATVipContactModeType.VIP2_ABOVE.name ? "atu_images/general/at_icon_social_privilege_select.png" : "atu_images/general/at_icon_social_privilege_unselect.png", width: 16.w, height: 16.w, ), ], ), onTap: () { if (AccountStorage().getVIP()?.name == ATVIPType.EARL.name || AccountStorage().getVIP()?.name == ATVIPType.MARQUIS.name || AccountStorage().getVIP()?.name == ATVIPType.DUKE.name || AccountStorage().getVIP()?.name == ATVIPType.KING.name || AccountStorage().getVIP()?.name == ATVIPType.EMPEROR.name) { if (res?.contactMode != ATVipContactModeType.VIP2_ABOVE.name) { _userVipAbilityUpdate( contactMode: ATVipContactModeType.VIP2_ABOVE.name, ); } } else { ATTts.show( ATAppLocalizations.of( context, )!.pleaseUpgradeYourVipLevel, ); } }, ), ], ), ), Container( padding: EdgeInsets.symmetric(vertical: 3.w), margin: EdgeInsets.symmetric( vertical: 4.w, horizontal: 15.w, ), child: Column( children: [ ATDebounceWidget( child: Row( children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text( ATAppLocalizations.of( context, )!.andAboveUsers("VIP3"), textColor: Colors.white70, fontSize: 13.sp, ), text( ATAppLocalizations.of( context, )!.privileges("VIP3"), textColor: Colors.white38, fontSize: 11.sp, ), ], ), Spacer(), Image.asset( res?.contactMode == ATVipContactModeType.VIP3_ABOVE.name ? "atu_images/general/at_icon_social_privilege_select.png" : "atu_images/general/at_icon_social_privilege_unselect.png", width: 16.w, height: 16.w, ), ], ), onTap: () { if (AccountStorage().getVIP()?.name == ATVIPType.MARQUIS.name || AccountStorage().getVIP()?.name == ATVIPType.DUKE.name || AccountStorage().getVIP()?.name == ATVIPType.KING.name || AccountStorage().getVIP()?.name == ATVIPType.EMPEROR.name) { if (res?.contactMode != ATVipContactModeType.VIP3_ABOVE.name) { _userVipAbilityUpdate( contactMode: ATVipContactModeType.VIP3_ABOVE.name, ); } } else { ATTts.show( ATAppLocalizations.of( context, )!.pleaseUpgradeYourVipLevel, ); } }, ), ], ), ), Container( padding: EdgeInsets.symmetric(vertical: 3.w), margin: EdgeInsets.symmetric( vertical: 4.w, horizontal: 15.w, ), child: Column( children: [ ATDebounceWidget( child: Row( children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text( ATAppLocalizations.of( context, )!.andAboveUsers("VIP4"), textColor: Colors.white70, fontSize: 13.sp, ), text( ATAppLocalizations.of( context, )!.privileges("VIP4"), textColor: Colors.white38, fontSize: 11.sp, ), ], ), Spacer(), Image.asset( res?.contactMode == ATVipContactModeType.VIP4_ABOVE.name ? "atu_images/general/at_icon_social_privilege_select.png" : "atu_images/general/at_icon_social_privilege_unselect.png", width: 16.w, height: 16.w, ), ], ), onTap: () { if (AccountStorage().getVIP()?.name == ATVIPType.DUKE.name || AccountStorage().getVIP()?.name == ATVIPType.KING.name || AccountStorage().getVIP()?.name == ATVIPType.EMPEROR.name) { if (res?.contactMode != ATVipContactModeType.VIP4_ABOVE.name) { _userVipAbilityUpdate( contactMode: ATVipContactModeType.VIP4_ABOVE.name, ); } } else { ATTts.show( ATAppLocalizations.of( context, )!.pleaseUpgradeYourVipLevel, ); } }, ), ], ), ), Container( padding: EdgeInsets.symmetric(vertical: 3.w), margin: EdgeInsets.symmetric( vertical: 4.w, horizontal: 15.w, ), child: Column( children: [ ATDebounceWidget( child: Row( children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text( ATAppLocalizations.of( context, )!.andAboveUsers("VIP5"), textColor: Colors.white70, fontSize: 13.sp, ), text( ATAppLocalizations.of( context, )!.privileges("VIP5"), textColor: Colors.white38, fontSize: 11.sp, ), ], ), Spacer(), Image.asset( res?.contactMode == ATVipContactModeType.VIP5_ABOVE.name ? "atu_images/general/at_icon_social_privilege_select.png" : "atu_images/general/at_icon_social_privilege_unselect.png", width: 16.w, height: 16.w, ), ], ), onTap: () { if (AccountStorage().getVIP()?.name == ATVIPType.KING.name || AccountStorage().getVIP()?.name == ATVIPType.EMPEROR.name) { if (res?.contactMode != ATVipContactModeType.VIP5_ABOVE.name) { _userVipAbilityUpdate( contactMode: ATVipContactModeType.VIP5_ABOVE.name, ); } } else { ATTts.show( ATAppLocalizations.of( context, )!.pleaseUpgradeYourVipLevel, ); } }, ), ], ), ), SizedBox(height: 8.w), Container( alignment: AlignmentDirectional.bottomStart, margin: EdgeInsetsDirectional.only(start: 15.w), child: text( ATAppLocalizations.of(context)!.vipPrivilege, textColor: Colors.white70, fontSize: 15.sp, ), ), SizedBox(height: 8.w), Container( padding: EdgeInsets.symmetric(vertical: 3.w), margin: EdgeInsets.symmetric( vertical: 4.w, horizontal: 15.w, ), child: Column( children: [ ATDebounceWidget( child: Row( children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text( ATAppLocalizations.of( context, )!.avoidBeingKicked, textColor: Colors.white70, fontSize: 13.sp, ), text( ATAppLocalizations.of( context, )!.privileges("VIP5"), textColor: Colors.white38, fontSize: 11.sp, ), ], ), Spacer(), Image.asset( res?.kickPrevention ?? false ? "atu_images/general/at_icon_social_privilege_open.png" : "atu_images/general/at_icon_social_privilege_close.png", width: 32.w, height: 18.w, ), ], ), onTap: () { if (AccountStorage().getVIP()?.name == ATVIPType.KING.name || AccountStorage().getVIP()?.name == ATVIPType.EMPEROR.name) { _userVipAbilityUpdate( kickPrevention: !(res?.kickPrevention ?? false), ); } else { ATTts.show( ATAppLocalizations.of( context, )!.pleaseUpgradeYourVipLevel, ); } }, ), ], ), ), SizedBox(height: 12.w), ], ), ), ), ], ), ), ); } void _getUserVipAbility() { ATLoadingManager.exhibitOperation(); AccountRepository() .userVipAbility() .then((value) { ATLoadingManager.veilRoutine(); res = value; setState(() {}); }) .catchError((_) { ATLoadingManager.veilRoutine(); }); } void _userVipAbilityUpdate({ String? contactMode, bool? kickPrevention, bool? mysteriousInvisibility, bool? antiBlock, }) { ATLoadingManager.exhibitOperation(); AccountRepository() .userVipAbilityUpdate( contactMode: contactMode, kickPrevention: kickPrevention, mysteriousInvisibility: mysteriousInvisibility, antiBlock: antiBlock, ) .then((res) { _getUserVipAbility(); }) .catchError((_) { ATLoadingManager.veilRoutine(); }); } }