From a291c8dbcf6fb4b14a040737920511224eb4026b Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 19 Feb 2021 14:10:06 +0530 Subject: [PATCH] [LLC -> AttachmentFileUploader] Add remaining delete methods Signed-off-by: Sahil Kumar --- packages/stream_chat/lib/src/api/channel.dart | 18 ++++--- .../lib/src/attachment_file_uploader.dart | 52 +++++++++++++++++++ packages/stream_chat/lib/src/client.dart | 38 +++++++++++++- 3 files changed, 98 insertions(+), 10 deletions(-) diff --git a/packages/stream_chat/lib/src/api/channel.dart b/packages/stream_chat/lib/src/api/channel.dart index b63273af..d269762e 100644 --- a/packages/stream_chat/lib/src/api/channel.dart +++ b/packages/stream_chat/lib/src/api/channel.dart @@ -480,17 +480,19 @@ class Channel { } /// Delete a file from this channel - Future deleteFile(String url) async { - final response = await _client - .delete('$_channelURL/file', queryParameters: {'url': url}); - return _client.decode(response.data, EmptyResponse.fromJson); + Future deleteFile( + String url, { + CancelToken cancelToken, + }) { + return _client.deleteFile(url, id, type, cancelToken: cancelToken); } /// Delete an image from this channel - Future deleteImage(String url) async { - final response = await _client - .delete('$_channelURL/image', queryParameters: {'url': url}); - return _client.decode(response.data, EmptyResponse.fromJson); + Future deleteImage( + String url, { + CancelToken cancelToken, + }) { + return _client.deleteImage(url, id, type, cancelToken: cancelToken); } /// Send an event on this channel diff --git a/packages/stream_chat/lib/src/attachment_file_uploader.dart b/packages/stream_chat/lib/src/attachment_file_uploader.dart index 8cb970eb..c420728f 100644 --- a/packages/stream_chat/lib/src/attachment_file_uploader.dart +++ b/packages/stream_chat/lib/src/attachment_file_uploader.dart @@ -31,6 +31,28 @@ abstract class AttachmentFileUploader { ProgressCallback onSendProgress, CancelToken cancelToken, }); + + /// Deletes a image using its [url] from the given channel. + /// Returns [EmptyResponse] once deleted successfully. + /// + /// Optionally, cancel the request using [cancelToken] + Future deleteImage( + String url, + String channelId, + String channelType, { + CancelToken cancelToken, + }); + + /// Deletes a file using its [url] from the given channel. + /// Returns [EmptyResponse] once deleted successfully. + /// + /// Optionally, cancel the request using [cancelToken] + Future deleteFile( + String url, + String channelId, + String channelType, { + CancelToken cancelToken, + }); } /// Stream's default implementation of [AttachmentFileUploader] @@ -89,4 +111,34 @@ class StreamAttachmentFileUploader implements AttachmentFileUploader { ); return _client.decode(response.data, SendFileResponse.fromJson); } + + @override + Future deleteImage( + String url, + String channelId, + String channelType, { + CancelToken cancelToken, + }) async { + final response = await _client.delete( + '/channels/$channelType/$channelId/image', + queryParameters: {'url': url}, + cancelToken: cancelToken, + ); + return _client.decode(response.data, EmptyResponse.fromJson); + } + + @override + Future deleteFile( + String url, + String channelId, + String channelType, { + CancelToken cancelToken, + }) async { + final response = await _client.delete( + '/channels/$channelType/$channelId/file', + queryParameters: {'url': url}, + cancelToken: cancelToken, + ); + return _client.decode(response.data, EmptyResponse.fromJson); + } } diff --git a/packages/stream_chat/lib/src/client.dart b/packages/stream_chat/lib/src/client.dart index f898a389..2cc3fd62 100644 --- a/packages/stream_chat/lib/src/client.dart +++ b/packages/stream_chat/lib/src/client.dart @@ -822,10 +822,14 @@ class StreamChatClient { Future> delete( String path, { Map queryParameters, + CancelToken cancelToken, }) async { try { - final response = await httpClient.delete(path, - queryParameters: queryParameters); + final response = await httpClient.delete( + path, + queryParameters: queryParameters, + cancelToken: cancelToken, + ); return response; } on DioError catch (error) { throw _parseError(error); @@ -1076,6 +1080,36 @@ class StreamChatClient { ); } + /// Delete a file from this channel + Future deleteFile( + String url, + String channelId, + String channelType, { + CancelToken cancelToken, + }) { + return attachmentFileUploader.deleteFile( + url, + channelId, + channelType, + cancelToken: cancelToken, + ); + } + + /// Delete an image from this channel + Future deleteImage( + String url, + String channelId, + String channelType, { + CancelToken cancelToken, + }) { + return attachmentFileUploader.deleteImage( + url, + channelId, + channelType, + cancelToken: cancelToken, + ); + } + /// Add a device for Push Notifications. Future addDevice(String id, PushProvider pushProvider) async { final response = await post('/devices', data: {