quitTeam static method

Future<bool> quitTeam(
  1. String teamId,
  2. NIMTeamType type
)

退出群

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;
}