[LLC] Add pin message feature

Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
Sahil Kumar
2021-02-19 17:06:45 +05:30
parent 24ce5333ce
commit e9ecd1cc35
8 changed files with 302 additions and 31 deletions
+37 -2
View File
@@ -330,7 +330,7 @@ class Channel {
state?.addMessage(message);
try {
if (message.attachments?.isNotEmpty == true) {
if (message.attachments?.any((it) => !it.uploadState.isSuccess) == true) {
final attachmentsUploadCompleter = Completer<Message>();
_messageAttachmentsUploadCompleter[message.id] =
attachmentsUploadCompleter;
@@ -383,7 +383,7 @@ class Channel {
state?.addMessage(message);
try {
if (message.attachments?.isNotEmpty == true) {
if (message.attachments?.any((it) => !it.uploadState.isSuccess) == true) {
final attachmentsUploadCompleter = Completer<Message>();
_messageAttachmentsUploadCompleter[message.id] =
attachmentsUploadCompleter;
@@ -449,6 +449,41 @@ class Channel {
}
}
/// Pins provided message
Future<UpdateMessageResponse> pinMessage(
Message message,
Object timeoutOrExpirationDate,
) {
assert(() {
if (timeoutOrExpirationDate is! DateTime &&
timeoutOrExpirationDate is! num &&
timeoutOrExpirationDate != null) {
throw ArgumentError('Invalid timeout or Expiration date');
}
return true;
}());
DateTime pinExpires;
if (timeoutOrExpirationDate is DateTime) {
pinExpires = timeoutOrExpirationDate;
} else if (timeoutOrExpirationDate is num) {
pinExpires = DateTime.now().add(
Duration(seconds: timeoutOrExpirationDate.toInt()),
);
}
return updateMessage(
message.copyWith(
pinned: true,
pinExpires: pinExpires,
),
);
}
/// Unpins provided message
Future<UpdateMessageResponse> unpinMessage(Message message) {
return updateMessage(message.copyWith(pinned: false));
}
/// Send a file to this channel
Future<SendFileResponse> sendFile(
AttachmentFile file, {