TF-3651 Support mailto url from OpenPaas
This commit is contained in:
@@ -33,6 +33,8 @@ extension EmailActionTypeExtension on EmailActionType {
|
|||||||
case EmailActionType.editSendingEmail:
|
case EmailActionType.editSendingEmail:
|
||||||
case EmailActionType.reopenComposerBrowser:
|
case EmailActionType.reopenComposerBrowser:
|
||||||
case EmailActionType.editAsNewEmail:
|
case EmailActionType.editAsNewEmail:
|
||||||
|
case EmailActionType.composeFromMailtoUri:
|
||||||
|
case EmailActionType.composeFromUnsubscribeMailtoLink:
|
||||||
return subject;
|
return subject;
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
|
|||||||
@@ -204,6 +204,11 @@ abstract class RouteUtils {
|
|||||||
mapMailto[paramSubject] = subject;
|
mapMailto[paramSubject] = subject;
|
||||||
mapMailto[paramBody] = body;
|
mapMailto[paramBody] = body;
|
||||||
} else if (parsedMailToUri?.path == "/$mailtoPrefix" || parsedMailToUri?.path == "/$mailtoPrefix/") {
|
} else if (parsedMailToUri?.path == "/$mailtoPrefix" || parsedMailToUri?.path == "/$mailtoPrefix/") {
|
||||||
|
final uriPrefixQueryParam = parsedMailToUri?.queryParameters[uriPrefix] ?? '';
|
||||||
|
final uriFromUriPrefixQueryParam = Uri.tryParse(uriPrefixQueryParam);
|
||||||
|
if (uriFromUriPrefixQueryParam?.queryParameters.isNotEmpty == true) {
|
||||||
|
return parseMapMailtoFromUri(mailtoUri?.split('?uri=').last);
|
||||||
|
}
|
||||||
final to = {
|
final to = {
|
||||||
...?parsedMailToUri?.queryParameters[uriPrefix]?.split('$mailtoPrefix:').last.split(ADDRESS_SEPARATOR),
|
...?parsedMailToUri?.queryParameters[uriPrefix]?.split('$mailtoPrefix:').last.split(ADDRESS_SEPARATOR),
|
||||||
...?parsedMailToUri?.queryParameters[paramTo]?.split(ADDRESS_SEPARATOR)
|
...?parsedMailToUri?.queryParameters[paramTo]?.split(ADDRESS_SEPARATOR)
|
||||||
|
|||||||
@@ -224,5 +224,33 @@ void main() {
|
|||||||
equals(body)
|
equals(body)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test(
|
||||||
|
'should parse url with mailto uri '
|
||||||
|
'when the query parameter belongs to the mailto uri',
|
||||||
|
() {
|
||||||
|
// arrange
|
||||||
|
const to = 'to@example.com';
|
||||||
|
const cc1 = 'cc1@example.com', cc2 = 'cc2@example.com';
|
||||||
|
const bcc1 = 'bcc1@example.com', bcc2 = 'bcc2@example.com';
|
||||||
|
const subject = 'Hello';
|
||||||
|
const body = 'Bye';
|
||||||
|
const mailtoUri = 'https://example.com/mailto/'
|
||||||
|
'?uri=mailto:$to'
|
||||||
|
'?subject=$subject'
|
||||||
|
'&cc=$cc1,$cc2'
|
||||||
|
'&bcc=$bcc1,$bcc2'
|
||||||
|
'&body=$body';
|
||||||
|
|
||||||
|
// act
|
||||||
|
final result = RouteUtils.parseMapMailtoFromUri(mailtoUri);
|
||||||
|
|
||||||
|
// assert
|
||||||
|
expect(result[RouteUtils.paramMailtoAddress], equals(to));
|
||||||
|
expect(result[RouteUtils.paramCc], containsAll([cc1, cc2]));
|
||||||
|
expect(result[RouteUtils.paramBcc], containsAll([bcc1, bcc2]));
|
||||||
|
expect(result[RouteUtils.paramSubject], equals(subject));
|
||||||
|
expect(result[RouteUtils.paramBody], equals(body));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user