quitTeam static method
退出群
Implementation
static Future<bool> quitTeam(String teamId, NIMTeamType type) async {
var teamResult =
await NimCore.instance.teamService.getTeamInfo(teamId, type);
// 讨论组的退出逻辑
//1,判断是否为讨论组,非讨论组直接退出
//2, 判断是否为创建者,非创建者直接退出
//3, 判断是否成员数大于1,如果不大于1直接解散
//4,请求成员列表,将群转给第一个成员,并退出
if (getIt<TeamProvider>().isGroupTeam(teamResult.data)) {
var team = teamResult.data;
if (team?.ownerAccountId == getIt<IMLoginService>().userInfo?.accountId) {
if ((team?.memberCount ?? 0) > 1) {
final option = NIMTeamMemberQueryOption(
roleQueryType: NIMTeamMemberRoleQueryType.memberRoleQueryTypeAll);
var membersResult = (await NimCore.instance.teamService
.getTeamMemberList(teamId, type, option))
.data;
if (membersResult?.memberList?.isNotEmpty == true) {
var newOwner = membersResult?.memberList?.firstWhere((element) =>
element.accountId !=
getIt<IMLoginService>().userInfo?.accountId);
if (newOwner != null) {
var resTrans = await NimCore.instance.teamService
.transferTeamOwner(teamId, type, newOwner.accountId, true);
return resTrans.isSuccess;
}
}
} else {
var resDismiss =
await NimCore.instance.teamService.dismissTeam(teamId, type);
return resDismiss.isSuccess;
}
}
}
var res = await NimCore.instance.teamService.leaveTeam(teamId, type);
return res.isSuccess;
}