Handle some case about share intent from android phone
This commit is contained in:
@@ -110,12 +110,15 @@ class HomeController extends BaseController {
|
||||
_emailReceiveManager.receivingSharingStream.listen((uri) {
|
||||
log('HomeController::onReady(): Received Email: ${uri.toString()}');
|
||||
if (uri != null) {
|
||||
if(GetUtils.isEmail(uri.path)) {
|
||||
if (GetUtils.isEmail(uri.path)) {
|
||||
log('HomeController::onReady(): Address: ${uri.path}');
|
||||
_emailReceiveManager.setPendingEmailAddress(EmailAddress(null, uri.path));
|
||||
} else {
|
||||
log('HomeController::onInit(): SharedMediaFilePath: ${uri.path}');
|
||||
} else if (uri.scheme == "file") {
|
||||
log('HomeController::onReady(): SharedMediaFilePath: ${uri.path}');
|
||||
_emailReceiveManager.setPendingFileInfo([SharedMediaFile(uri.path, null, null, SharedMediaType.FILE)]);
|
||||
} else {
|
||||
log('HomeController::onReady(): EmailContent: ${uri.path}');
|
||||
_emailReceiveManager.setPendingEmailContent(EmailContent(EmailContentType.textPlain, Uri.decodeComponent(uri.path)));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+16
@@ -216,6 +216,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
@override
|
||||
void onReady() {
|
||||
_registerPendingEmailAddress();
|
||||
_registerPendingEmailContents();
|
||||
_registerPendingFileInfo();
|
||||
_getSessionCurrent();
|
||||
_getAppVersion();
|
||||
@@ -358,6 +359,21 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
});
|
||||
}
|
||||
|
||||
void _registerPendingEmailContents() {
|
||||
_emailReceiveManagerStreamSubscription =
|
||||
_emailReceiveManager.pendingEmailContentInfo.stream.listen((emailContent) {
|
||||
log('MailboxDashBoardController::_registerPendingEmailContents(): ${emailContent?.content}');
|
||||
if (emailContent != null && emailContent.content.isNotEmpty == true) {
|
||||
_emailReceiveManager.clearPendingEmailContent();
|
||||
final arguments = ComposerArguments(
|
||||
emailActionType: EmailActionType.edit,
|
||||
emailContents: [emailContent],
|
||||
mailboxRole: selectedMailbox.value?.role);
|
||||
goToComposer(arguments);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void _registerPendingFileInfo() {
|
||||
_fileReceiveManagerStreamSubscription =
|
||||
_emailReceiveManager.pendingFileInfo.stream.listen((listFile) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/email/email_content.dart';
|
||||
import 'package:receive_sharing_intent/receive_sharing_intent.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
|
||||
@@ -8,6 +9,9 @@ class EmailReceiveManager {
|
||||
BehaviorSubject<EmailAddress?> _pendingEmailAddressInfo = BehaviorSubject.seeded(null);
|
||||
BehaviorSubject<EmailAddress?> get pendingEmailAddressInfo => _pendingEmailAddressInfo;
|
||||
|
||||
BehaviorSubject<EmailContent?> _pendingEmailContentInfo = BehaviorSubject.seeded(null);
|
||||
BehaviorSubject<EmailContent?> get pendingEmailContentInfo => _pendingEmailContentInfo;
|
||||
|
||||
BehaviorSubject<List<SharedMediaFile>> _pendingFileInfo = BehaviorSubject.seeded(List.empty(growable: true));
|
||||
BehaviorSubject<List<SharedMediaFile>> get pendingFileInfo => _pendingFileInfo;
|
||||
|
||||
@@ -29,6 +33,19 @@ class EmailReceiveManager {
|
||||
_pendingEmailAddressInfo.add(emailAddress);
|
||||
}
|
||||
|
||||
void setPendingEmailContent(EmailContent emailContent) async {
|
||||
clearPendingEmailAddress();
|
||||
_pendingEmailContentInfo.add(emailContent);
|
||||
}
|
||||
|
||||
void clearPendingEmailContent() {
|
||||
if(_pendingEmailContentInfo.isClosed) {
|
||||
_pendingEmailContentInfo = BehaviorSubject.seeded(null);
|
||||
} else {
|
||||
_pendingEmailContentInfo.add(null);
|
||||
}
|
||||
}
|
||||
|
||||
void clearPendingEmailAddress() {
|
||||
if(_pendingEmailAddressInfo.isClosed) {
|
||||
_pendingEmailAddressInfo = BehaviorSubject.seeded(null);
|
||||
|
||||
Reference in New Issue
Block a user