diff --git a/lib/features/upload/data/datasource/attachment_upload_datasource.dart b/lib/features/upload/data/datasource/attachment_upload_datasource.dart new file mode 100644 index 000000000..0a0659028 --- /dev/null +++ b/lib/features/upload/data/datasource/attachment_upload_datasource.dart @@ -0,0 +1,8 @@ + +import 'package:dio/dio.dart'; +import 'package:model/upload/file_info.dart'; +import 'package:tmail_ui_user/features/upload/domain/model/upload_attachment.dart'; + +abstract class AttachmentUploadDataSource { + UploadAttachment uploadAttachment(FileInfo fileInfo, Uri uploadUri, {CancelToken? cancelToken}); +} \ No newline at end of file diff --git a/lib/features/upload/data/datasource_impl/attachment_upload_datasource_impl.dart b/lib/features/upload/data/datasource_impl/attachment_upload_datasource_impl.dart new file mode 100644 index 000000000..8130d6d1f --- /dev/null +++ b/lib/features/upload/data/datasource_impl/attachment_upload_datasource_impl.dart @@ -0,0 +1,33 @@ + +import 'package:dio/dio.dart'; +import 'package:model/upload/file_info.dart'; +import 'package:tmail_ui_user/features/upload/data/datasource/attachment_upload_datasource.dart'; +import 'package:tmail_ui_user/features/upload/data/network/file_uploader.dart'; +import 'package:tmail_ui_user/features/upload/domain/model/upload_attachment.dart'; +import 'package:tmail_ui_user/features/upload/domain/model/upload_task_id.dart'; +import 'package:uuid/uuid.dart'; + +class AttachmentUploadDataSourceImpl extends AttachmentUploadDataSource { + + final FileUploader _fileUploader; + + AttachmentUploadDataSourceImpl(this._fileUploader); + + @override + UploadAttachment uploadAttachment(FileInfo fileInfo, Uri uploadUri, {CancelToken? cancelToken}) { + final attachmentUploadId = _generateAttachmentUploadId(); + final uploadAttachment = UploadAttachment( + attachmentUploadId, + fileInfo, + uploadUri, + _fileUploader, + cancelToken: cancelToken) + ..upload(); + + return uploadAttachment; + } + + UploadTaskId _generateAttachmentUploadId() { + return UploadTaskId(const Uuid().v4()); + } +} \ No newline at end of file