Merge branch 'master' into fix-attachment-upload-state

This commit is contained in:
Salvatore Giordano
2021-02-19 16:52:45 +01:00
committed by GitHub
12 changed files with 640 additions and 106 deletions
+57 -2
View File
@@ -325,7 +325,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;
@@ -373,7 +373,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;
@@ -439,6 +439,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, {
@@ -469,6 +504,26 @@ class Channel {
);
}
/// A message search.
Future<SearchMessagesResponse> search({
String query,
Map<String, dynamic> messageFilters,
List<SortOption> sort,
PaginationParams paginationParams,
}) {
return _client.search(
{
'cid': {
r'$in': [cid],
},
},
sort: sort,
query: query,
paginationParams: paginationParams,
messageFilters: messageFilters,
);
}
/// Delete a file from this channel
Future<EmptyResponse> deleteFile(
String url, {