feat(llc): add support for AttachmentFileUploaderProvider. (#1246)
* feat(llc): add support for `AttachmentFileUploaderProvider`. Signed-off-by: xsahil03x <[email protected]> * chore(llc): update CHANGELOG.md Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
@@ -4,6 +4,15 @@
|
|||||||
|
|
||||||
- Fix WebSocket contemporary connection calls while disconnecting
|
- Fix WebSocket contemporary connection calls while disconnecting
|
||||||
|
|
||||||
|
✅ Added
|
||||||
|
|
||||||
|
- Export `StreamAttachmentFileUploader`.
|
||||||
|
|
||||||
|
🔄 Changed
|
||||||
|
|
||||||
|
- Deprecated `StreamChatClient.attachmentFileUploader`,
|
||||||
|
Use `StreamChatClient.attachmentFileUploaderProvider` instead.
|
||||||
|
|
||||||
## 4.3.0
|
## 4.3.0
|
||||||
|
|
||||||
🐞 Fixed
|
🐞 Fixed
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import 'dart:math';
|
|||||||
|
|
||||||
import 'package:collection/collection.dart'
|
import 'package:collection/collection.dart'
|
||||||
show IterableExtension, ListEquality;
|
show IterableExtension, ListEquality;
|
||||||
import 'package:dio/dio.dart';
|
|
||||||
import 'package:rxdart/rxdart.dart';
|
import 'package:rxdart/rxdart.dart';
|
||||||
import 'package:stream_chat/src/client/retry_queue.dart';
|
import 'package:stream_chat/src/client/retry_queue.dart';
|
||||||
import 'package:stream_chat/src/core/util/utils.dart';
|
import 'package:stream_chat/src/core/util/utils.dart';
|
||||||
|
|||||||
@@ -70,8 +70,15 @@ class StreamChatClient {
|
|||||||
Duration receiveTimeout = const Duration(seconds: 6),
|
Duration receiveTimeout = const Duration(seconds: 6),
|
||||||
StreamChatApi? chatApi,
|
StreamChatApi? chatApi,
|
||||||
WebSocket? ws,
|
WebSocket? ws,
|
||||||
AttachmentFileUploader? attachmentFileUploader,
|
@Deprecated('Use [attachmentFileUploaderProvider] instead')
|
||||||
}) {
|
AttachmentFileUploader? attachmentFileUploader,
|
||||||
|
AttachmentFileUploaderProvider? attachmentFileUploaderProvider,
|
||||||
|
}) : assert(
|
||||||
|
attachmentFileUploader == null ||
|
||||||
|
attachmentFileUploaderProvider == null,
|
||||||
|
'You can only use one of [attachmentFileUploader] '
|
||||||
|
'or [attachmentFileUploaderProvider]',
|
||||||
|
) {
|
||||||
logger.info('Initiating new StreamChatClient');
|
logger.info('Initiating new StreamChatClient');
|
||||||
|
|
||||||
final options = StreamHttpClientOptions(
|
final options = StreamHttpClientOptions(
|
||||||
@@ -81,13 +88,23 @@ class StreamChatClient {
|
|||||||
headers: {'X-Stream-Client': defaultUserAgent},
|
headers: {'X-Stream-Client': defaultUserAgent},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO: simplify this once we remove the deprecated field.
|
||||||
|
final AttachmentFileUploaderProvider fileUploaderProvider;
|
||||||
|
if (attachmentFileUploaderProvider != null) {
|
||||||
|
fileUploaderProvider = attachmentFileUploaderProvider;
|
||||||
|
} else if (attachmentFileUploader != null) {
|
||||||
|
fileUploaderProvider = (httpClient) => attachmentFileUploader;
|
||||||
|
} else {
|
||||||
|
fileUploaderProvider = StreamAttachmentFileUploader.new;
|
||||||
|
}
|
||||||
|
|
||||||
_chatApi = chatApi ??
|
_chatApi = chatApi ??
|
||||||
StreamChatApi(
|
StreamChatApi(
|
||||||
apiKey,
|
apiKey,
|
||||||
options: options,
|
options: options,
|
||||||
tokenManager: _tokenManager,
|
tokenManager: _tokenManager,
|
||||||
connectionIdManager: _connectionIdManager,
|
connectionIdManager: _connectionIdManager,
|
||||||
attachmentFileUploader: attachmentFileUploader,
|
attachmentFileUploaderProvider: fileUploaderProvider,
|
||||||
logger: detachedLogger('🕸️'),
|
logger: detachedLogger('🕸️'),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,11 @@ import 'package:stream_chat/src/core/api/responses.dart';
|
|||||||
import 'package:stream_chat/src/core/http/stream_http_client.dart';
|
import 'package:stream_chat/src/core/http/stream_http_client.dart';
|
||||||
import 'package:stream_chat/src/core/models/attachment_file.dart';
|
import 'package:stream_chat/src/core/models/attachment_file.dart';
|
||||||
|
|
||||||
|
/// Signature for a function which provides instance of [AttachmentFileUploader]
|
||||||
|
typedef AttachmentFileUploaderProvider = AttachmentFileUploader Function(
|
||||||
|
StreamHttpClient httpClient,
|
||||||
|
);
|
||||||
|
|
||||||
/// Class responsible for uploading images and files to a given channel
|
/// Class responsible for uploading images and files to a given channel
|
||||||
abstract class AttachmentFileUploader {
|
abstract class AttachmentFileUploader {
|
||||||
/// Uploads a [image] to the given channel.
|
/// Uploads a [image] to the given channel.
|
||||||
|
|||||||
@@ -22,9 +22,10 @@ class StreamChatApi {
|
|||||||
StreamHttpClientOptions? options,
|
StreamHttpClientOptions? options,
|
||||||
TokenManager? tokenManager,
|
TokenManager? tokenManager,
|
||||||
ConnectionIdManager? connectionIdManager,
|
ConnectionIdManager? connectionIdManager,
|
||||||
AttachmentFileUploader? attachmentFileUploader,
|
AttachmentFileUploaderProvider? attachmentFileUploaderProvider,
|
||||||
Logger? logger,
|
Logger? logger,
|
||||||
}) : _fileUploader = attachmentFileUploader,
|
}) : _fileUploaderProvider =
|
||||||
|
attachmentFileUploaderProvider ?? StreamAttachmentFileUploader.new,
|
||||||
_client = client ??
|
_client = client ??
|
||||||
StreamHttpClient(
|
StreamHttpClient(
|
||||||
apiKey,
|
apiKey,
|
||||||
@@ -35,6 +36,7 @@ class StreamChatApi {
|
|||||||
);
|
);
|
||||||
|
|
||||||
final StreamHttpClient _client;
|
final StreamHttpClient _client;
|
||||||
|
final AttachmentFileUploaderProvider _fileUploaderProvider;
|
||||||
|
|
||||||
UserApi? _user;
|
UserApi? _user;
|
||||||
|
|
||||||
@@ -75,5 +77,5 @@ class StreamChatApi {
|
|||||||
|
|
||||||
/// Class responsible for uploading images and files to a given channel
|
/// Class responsible for uploading images and files to a given channel
|
||||||
AttachmentFileUploader get fileUploader =>
|
AttachmentFileUploader get fileUploader =>
|
||||||
_fileUploader ??= StreamAttachmentFileUploader(_client);
|
_fileUploader ??= _fileUploaderProvider.call(_client);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
library stream_chat;
|
library stream_chat;
|
||||||
|
|
||||||
export 'package:async/async.dart';
|
export 'package:async/async.dart';
|
||||||
|
export 'package:dio/src/cancel_token.dart';
|
||||||
export 'package:dio/src/dio_error.dart';
|
export 'package:dio/src/dio_error.dart';
|
||||||
export 'package:dio/src/multipart_file.dart';
|
export 'package:dio/src/multipart_file.dart';
|
||||||
export 'package:dio/src/options.dart';
|
export 'package:dio/src/options.dart';
|
||||||
@@ -9,8 +10,7 @@ export 'package:logging/logging.dart' show Logger, Level, LogRecord;
|
|||||||
export 'package:rate_limiter/rate_limiter.dart';
|
export 'package:rate_limiter/rate_limiter.dart';
|
||||||
export 'package:uuid/uuid.dart';
|
export 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
export './src/core/api/attachment_file_uploader.dart'
|
export './src/core/api/attachment_file_uploader.dart';
|
||||||
show AttachmentFileUploader;
|
|
||||||
export './src/core/api/requests.dart';
|
export './src/core/api/requests.dart';
|
||||||
export './src/core/api/requests.dart';
|
export './src/core/api/requests.dart';
|
||||||
export './src/core/api/responses.dart';
|
export './src/core/api/responses.dart';
|
||||||
@@ -44,7 +44,7 @@ export 'src/core/api/attachment_file_uploader.dart' show AttachmentFileUploader;
|
|||||||
export 'src/core/api/requests.dart';
|
export 'src/core/api/requests.dart';
|
||||||
export 'src/core/api/requests.dart';
|
export 'src/core/api/requests.dart';
|
||||||
export 'src/core/api/responses.dart';
|
export 'src/core/api/responses.dart';
|
||||||
export 'src/core/api/stream_chat_api.dart' show PushProvider;
|
export 'src/core/api/stream_chat_api.dart';
|
||||||
export 'src/core/error/error.dart';
|
export 'src/core/error/error.dart';
|
||||||
export 'src/core/models/action.dart';
|
export 'src/core/models/action.dart';
|
||||||
export 'src/core/models/attachment.dart';
|
export 'src/core/models/attachment.dart';
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import 'package:stream_chat/src/core/api/general_api.dart';
|
|||||||
import 'package:stream_chat/src/core/api/guest_api.dart';
|
import 'package:stream_chat/src/core/api/guest_api.dart';
|
||||||
import 'package:stream_chat/src/core/api/message_api.dart';
|
import 'package:stream_chat/src/core/api/message_api.dart';
|
||||||
import 'package:stream_chat/src/core/api/moderation_api.dart';
|
import 'package:stream_chat/src/core/api/moderation_api.dart';
|
||||||
import 'package:stream_chat/src/core/api/stream_chat_api.dart';
|
|
||||||
import 'package:stream_chat/src/core/api/user_api.dart';
|
import 'package:stream_chat/src/core/api/user_api.dart';
|
||||||
import 'package:stream_chat/src/core/http/token.dart';
|
import 'package:stream_chat/src/core/http/token.dart';
|
||||||
import 'package:stream_chat/src/core/http/token_manager.dart';
|
import 'package:stream_chat/src/core/http/token_manager.dart';
|
||||||
|
|||||||
Reference in New Issue
Block a user