TF-32 Add domain layer of download attachment for android platform
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class DownloadTaskId with EquatableMixin {
|
||||
final String taskId;
|
||||
|
||||
DownloadTaskId(this.taskId);
|
||||
|
||||
@override
|
||||
List<Object> get props => [taskId];
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:http_parser/http_parser.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart';
|
||||
import 'package:uri/uri.dart';
|
||||
|
||||
class Attachment with EquatableMixin {
|
||||
|
||||
final PartId? partId;
|
||||
final Id? blobId;
|
||||
final UnsignedInt? size;
|
||||
final String? name;
|
||||
final MediaType? type;
|
||||
final String? cid;
|
||||
|
||||
Attachment(
|
||||
this.partId,
|
||||
this.blobId,
|
||||
this.size,
|
||||
this.name,
|
||||
this.type,
|
||||
this.cid
|
||||
);
|
||||
|
||||
String getDownloadUrl(String baseDownloadUrl, AccountId accountId) {
|
||||
final downloadUriTemplate = UriTemplate('$baseDownloadUrl');
|
||||
final downloadUri = downloadUriTemplate.expand({
|
||||
'accountId' : '${accountId.id.value}',
|
||||
'blobId' : '${blobId?.value}',
|
||||
'name' : '$name',
|
||||
'type' : '${type?.mimeType}',
|
||||
});
|
||||
return Uri.decodeFull(downloadUri);
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [partId, blobId, size, name, type, cid];
|
||||
}
|
||||
@@ -1,16 +1,12 @@
|
||||
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:uri/uri.dart';
|
||||
|
||||
extension SessionExtension on Session {
|
||||
|
||||
String getDownloadUrl(String accountId, String blobId, String name, String type) {
|
||||
final downloadUriTemplate = UriTemplate('${downloadUrl.origin}');
|
||||
return downloadUriTemplate.expand({
|
||||
'accountId' : '$accountId',
|
||||
'blobId' : '$blobId',
|
||||
'name' : '$name',
|
||||
'type' : '$type',
|
||||
});
|
||||
String getDownloadUrl() {
|
||||
var baseUrl = '${downloadUrl.origin}${downloadUrl.path}';
|
||||
if (baseUrl.endsWith('/')) {
|
||||
baseUrl = baseUrl.substring(0, baseUrl.length - 1);
|
||||
}
|
||||
return Uri.decodeFull(baseUrl);
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ export 'email/email_action_type.dart';
|
||||
export 'email/presentation_email_address.dart';
|
||||
export 'email/email_address_cache.dart';
|
||||
export 'email/read_actions.dart';
|
||||
export 'email/attachment.dart';
|
||||
|
||||
// Extensions
|
||||
export 'extensions/email_address_extension.dart';
|
||||
@@ -34,3 +35,6 @@ export 'extensions/user_profile_extension.dart';
|
||||
export 'extensions/presentation_email_extension.dart';
|
||||
export 'extensions/keyword_identifier_extension.dart';
|
||||
export 'extensions/presentation_mailbox_extension.dart';
|
||||
|
||||
// Download
|
||||
export 'download/download_task_id.dart';
|
||||
@@ -52,6 +52,9 @@ dependencies:
|
||||
# json_annotation
|
||||
json_annotation: 4.0.1
|
||||
|
||||
# http_parser
|
||||
http_parser: 4.0.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
||||
Reference in New Issue
Block a user