mutePeerToChannel static method

Future<bool> mutePeerToChannel(
  1. TPChannel tpChannel,
  2. List<String> targetIds,
  3. int expireInMinutes,
  4. dynamic successCallback(
    1. TPChannel,
    2. List<TPMember>
    ), {
  5. dynamic errorCallback(
    1. int? errorCode,
    2. String? errorMessage
    )?,
})

Implementation

static Future<bool> mutePeerToChannel(
    TPChannel tpChannel,
    List<String> targetIds,
    int expireInMinutes,
    Function(TPChannel, List<TPMember>) successCallback,
    {
      Function(int? errorCode, String? errorMessage)? errorCallback
    }) async
{
  if (!_isInitialized(errorCallback: errorCallback)) { return false; }
  if (!_checkAuthInfo(errorCallback: errorCallback)) { return false; }
  if(targetIds.isEmpty) {
    if(errorCallback != null) { errorCallback(-1, "target Ids is empty"); }
    return false;
  }

  try {
    // members
    Map<String, dynamic> body = Map.from({"members": targetIds});
    // expireInMinutes: 0 (forever)
    if(expireInMinutes > 0){
      body["expireInMinutes"] = expireInMinutes;
    }
    String url = "/channels/${tpChannel.getChannelId()}/peer/mute";
    Map<String, dynamic> response = await HttpUtil.postJson(url, body);
    // TPChannel
    Map<String, dynamic> channel = response["channel"];
    // TPMember List
    List<TPMember> mutedMembers = List.from([]);
    for (Map<String, dynamic> element in response["members"]) {
      mutedMembers.add(TPMember(element));
    }
    // Succeeded
    successCallback(TPChannel(channel), mutedMembers);
    return true;
  } on TPException catch(e) {
    Logger.log("$e");
    if(errorCallback != null) { errorCallback(e.getCode(), e.getMessage()); }
  } catch(e){
    Logger.log("$e");
    if(errorCallback != null) { errorCallback(-1, e.toString()); }
  }
  return false;
}