pinMessage method

Future<UpdateMessageResponse> pinMessage(
  1. String messageId,
  2. {Object? timeoutOrExpirationDate}
)

Pins provided message timeoutOrExpirationDate can either be a DateTime or a value in seconds to be added to DateTime.now

Implementation

Future<UpdateMessageResponse> pinMessage(
  String messageId, {
  Object? /*num|DateTime*/ timeoutOrExpirationDate,
}) {
  assert(() {
    if (timeoutOrExpirationDate is! DateTime &&
        timeoutOrExpirationDate != null &&
        timeoutOrExpirationDate is! num) {
      throw ArgumentError('Invalid timeout or Expiration date');
    }
    return true;
  }(), 'Check for invalid timeout or expiration date');

  DateTime? pinExpires;
  if (timeoutOrExpirationDate is DateTime) {
    pinExpires = timeoutOrExpirationDate;
  } else if (timeoutOrExpirationDate is num) {
    pinExpires = DateTime.now().add(
      Duration(seconds: timeoutOrExpirationDate.toInt()),
    );
  }
  return partialUpdateMessage(
    messageId,
    set: {
      'pinned': true,
      'pin_expires': pinExpires?.toUtc().toIso8601String(),
    },
  );
}