TF-1606 Convert downloadUrl and uploadUrl to qualified url
(cherry picked from commit eb912f4e7100b411c4167b1d575a793327ad356c)
This commit is contained in:
@@ -75,6 +75,7 @@ class ComposerController extends BaseController {
|
|||||||
final _imagePaths = Get.find<ImagePaths>();
|
final _imagePaths = Get.find<ImagePaths>();
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
final _uuid = Get.find<Uuid>();
|
final _uuid = Get.find<Uuid>();
|
||||||
|
final _dynamicUrlInterceptors = Get.find<DynamicUrlInterceptors>();
|
||||||
|
|
||||||
final expandModeAttachments = ExpandMode.COLLAPSE.obs;
|
final expandModeAttachments = ExpandMode.COLLAPSE.obs;
|
||||||
final composerArguments = Rxn<ComposerArguments>();
|
final composerArguments = Rxn<ComposerArguments>();
|
||||||
@@ -917,7 +918,7 @@ class ComposerController extends BaseController {
|
|||||||
final session = mailboxDashBoardController.sessionCurrent;
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (session != null && accountId != null) {
|
if (session != null && accountId != null) {
|
||||||
final uploadUri = session.getUploadUri(accountId);
|
final uploadUri = session.getUploadUri(accountId, jmapUrl: _dynamicUrlInterceptors.jmapUrl);
|
||||||
uploadController.justUploadAttachmentsAction(pickedFiles, uploadUri);
|
uploadController.justUploadAttachmentsAction(pickedFiles, uploadUri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1091,7 +1092,7 @@ class ComposerController extends BaseController {
|
|||||||
_emailContents = arguments.emailContents;
|
_emailContents = arguments.emailContents;
|
||||||
emailContentsViewState.value = Right(GetEmailContentSuccess(_emailContents!, [], [], null));
|
emailContentsViewState.value = Right(GetEmailContentSuccess(_emailContents!, [], [], null));
|
||||||
} else {
|
} else {
|
||||||
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent?.getDownloadUrl();
|
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent?.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl);
|
||||||
final accountId = mailboxDashBoardController.sessionCurrent?.accounts.keys.first;
|
final accountId = mailboxDashBoardController.sessionCurrent?.accounts.keys.first;
|
||||||
final emailId = arguments.presentationEmail?.id;
|
final emailId = arguments.presentationEmail?.id;
|
||||||
if (emailId != null && baseDownloadUrl != null && accountId != null) {
|
if (emailId != null && baseDownloadUrl != null && accountId != null) {
|
||||||
@@ -1475,7 +1476,7 @@ class ComposerController extends BaseController {
|
|||||||
final session = mailboxDashBoardController.sessionCurrent;
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (session != null && accountId != null) {
|
if (session != null && accountId != null) {
|
||||||
final uploadUri = session.getUploadUri(accountId);
|
final uploadUri = session.getUploadUri(accountId, jmapUrl: _dynamicUrlInterceptors.jmapUrl);
|
||||||
uploadController.uploadFileAction(pickedFile, uploadUri, isInline: true);
|
uploadController.uploadFileAction(pickedFile, uploadUri, isInline: true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1495,7 +1496,7 @@ class ComposerController extends BaseController {
|
|||||||
void _handleUploadInlineSuccess(SuccessAttachmentUploadState uploadState) {
|
void _handleUploadInlineSuccess(SuccessAttachmentUploadState uploadState) {
|
||||||
uploadController.clearUploadInlineViewState();
|
uploadController.clearUploadInlineViewState();
|
||||||
|
|
||||||
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent?.getDownloadUrl();
|
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent?.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl);
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
|
|
||||||
if (baseDownloadUrl != null && accountId != null) {
|
if (baseDownloadUrl != null && accountId != null) {
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
final _appToast = Get.find<AppToast>();
|
final _appToast = Get.find<AppToast>();
|
||||||
final _uuid = Get.find<Uuid>();
|
final _uuid = Get.find<Uuid>();
|
||||||
final _downloadManager = Get.find<DownloadManager>();
|
final _downloadManager = Get.find<DownloadManager>();
|
||||||
|
final _dynamicUrlInterceptors = Get.find<DynamicUrlInterceptors>();
|
||||||
|
|
||||||
final GetEmailContentInteractor _getEmailContentInteractor;
|
final GetEmailContentInteractor _getEmailContentInteractor;
|
||||||
final MarkAsEmailReadInteractor _markAsEmailReadInteractor;
|
final MarkAsEmailReadInteractor _markAsEmailReadInteractor;
|
||||||
@@ -292,7 +293,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
|
|
||||||
void _getEmailContentAction(EmailId emailId) async {
|
void _getEmailContentAction(EmailId emailId) async {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent?.getDownloadUrl();
|
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent?.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl);
|
||||||
final emailLoaded = emailSupervisorController.getEmailInQueueByEmailId(emailId);
|
final emailLoaded = emailSupervisorController.getEmailInQueueByEmailId(emailId);
|
||||||
|
|
||||||
if (emailLoaded != null) {
|
if (emailLoaded != null) {
|
||||||
@@ -478,7 +479,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
void _downloadAttachmentsAction(List<Attachment> attachments) async {
|
void _downloadAttachmentsAction(List<Attachment> attachments) async {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (accountId != null && mailboxDashBoardController.sessionCurrent != null) {
|
if (accountId != null && mailboxDashBoardController.sessionCurrent != null) {
|
||||||
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl();
|
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl);
|
||||||
consumeState(_downloadAttachmentsInteractor.execute(attachments, accountId, baseDownloadUrl));
|
consumeState(_downloadAttachmentsInteractor.execute(attachments, accountId, baseDownloadUrl));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -527,7 +528,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
void _exportAttachmentAction(Attachment attachment, CancelToken cancelToken) async {
|
void _exportAttachmentAction(Attachment attachment, CancelToken cancelToken) async {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (accountId != null && mailboxDashBoardController.sessionCurrent != null) {
|
if (accountId != null && mailboxDashBoardController.sessionCurrent != null) {
|
||||||
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl();
|
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl);
|
||||||
consumeState(_exportAttachmentInteractor.execute(attachment, accountId, baseDownloadUrl, cancelToken));
|
consumeState(_exportAttachmentInteractor.execute(attachment, accountId, baseDownloadUrl, cancelToken));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -577,7 +578,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
void _downloadAttachmentForWebAction(BuildContext context, Attachment attachment) async {
|
void _downloadAttachmentForWebAction(BuildContext context, Attachment attachment) async {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (accountId != null && mailboxDashBoardController.sessionCurrent != null) {
|
if (accountId != null && mailboxDashBoardController.sessionCurrent != null) {
|
||||||
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl();
|
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent!.getDownloadUrl(jmapUrl: _dynamicUrlInterceptors.jmapUrl);
|
||||||
final generateTaskId = DownloadTaskId(_uuid.v4());
|
final generateTaskId = DownloadTaskId(_uuid.v4());
|
||||||
consumeState(_downloadAttachmentForWebInteractor.execute(
|
consumeState(_downloadAttachmentForWebInteractor.execute(
|
||||||
generateTaskId,
|
generateTaskId,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
import 'package:core/presentation/extensions/uri_extension.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
||||||
@@ -8,8 +9,13 @@ import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
|||||||
import 'package:uri/uri.dart';
|
import 'package:uri/uri.dart';
|
||||||
|
|
||||||
extension SessionExtension on Session {
|
extension SessionExtension on Session {
|
||||||
String getDownloadUrl() {
|
|
||||||
var baseUrl = '${downloadUrl.origin}${downloadUrl.path}?${downloadUrl.query}';
|
String getDownloadUrl({String? jmapUrl}) {
|
||||||
|
final downloadUrlValid = jmapUrl != null
|
||||||
|
? downloadUrl.toQualifiedUrl(baseUrl: Uri.parse(jmapUrl))
|
||||||
|
: downloadUrl;
|
||||||
|
log('SessionExtension::getDownloadUrl():downloadUrlValid: $downloadUrlValid');
|
||||||
|
var baseUrl = '${downloadUrlValid.origin}${downloadUrlValid.path}?${downloadUrlValid.query}';
|
||||||
if (baseUrl.endsWith('/')) {
|
if (baseUrl.endsWith('/')) {
|
||||||
baseUrl = baseUrl.substring(0, baseUrl.length - 1);
|
baseUrl = baseUrl.substring(0, baseUrl.length - 1);
|
||||||
}
|
}
|
||||||
@@ -19,8 +25,12 @@ extension SessionExtension on Session {
|
|||||||
return downloadUrlDecode;
|
return downloadUrlDecode;
|
||||||
}
|
}
|
||||||
|
|
||||||
Uri getUploadUri(AccountId accountId) {
|
Uri getUploadUri(AccountId accountId, {String? jmapUrl}) {
|
||||||
final baseUrl = '${uploadUrl.origin}${uploadUrl.path}';
|
final uploadUrlValid = jmapUrl != null
|
||||||
|
? uploadUrl.toQualifiedUrl(baseUrl: Uri.parse(jmapUrl))
|
||||||
|
: uploadUrl;
|
||||||
|
log('SessionExtension::getUploadUri():downloadUrlValid: $uploadUrlValid');
|
||||||
|
final baseUrl = '${uploadUrlValid.origin}${uploadUrlValid.path}';
|
||||||
final uploadUriTemplate = UriTemplate(Uri.decodeFull(baseUrl));
|
final uploadUriTemplate = UriTemplate(Uri.decodeFull(baseUrl));
|
||||||
final uploadUri = uploadUriTemplate.expand({
|
final uploadUri = uploadUriTemplate.expand({
|
||||||
'accountId' : accountId.id.value
|
'accountId' : accountId.id.value
|
||||||
|
|||||||
Reference in New Issue
Block a user