TF-2599 Remove requestPermissionContact in AdvancedFilterController due unnecessary and avoid error request only one set of permissions at a time

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2024-02-22 10:38:05 +07:00
committed by Dat H. Pham
parent 54d23be808
commit 07042bfb45
3 changed files with 18 additions and 65 deletions
+1
View File
@@ -258,6 +258,7 @@ abstract class BaseController extends GetxController
Future<void> injectFCMBindings(Session? session, AccountId? accountId) async { Future<void> injectFCMBindings(Session? session, AccountId? accountId) async {
try { try {
requireCapability(session!, accountId!, [FirebaseCapability.fcmIdentifier]); requireCapability(session!, accountId!, [FirebaseCapability.fcmIdentifier]);
log('BaseController::injectFCMBindings: fcmAvailable = ${AppConfig.fcmAvailable}');
if (AppConfig.fcmAvailable) { if (AppConfig.fcmAvailable) {
final mapEnvData = Map<String, String>.from(dotenv.env); final mapEnvData = Map<String, String>.from(dotenv.env);
await AppUtils.loadFcmConfigFileToEnv(currentMapEnvData: mapEnvData); await AppUtils.loadFcmConfigFileToEnv(currentMapEnvData: mapEnvData);
@@ -5,15 +5,10 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/model.dart'; import 'package:model/model.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:super_tag_editor/tag_editor.dart'; import 'package:super_tag_editor/tag_editor.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_source.dart';
import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart'; import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart';
import 'package:tmail_ui_user/features/composer/domain/state/get_device_contact_suggestions_state.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/get_all_autocomplete_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/get_device_contact_suggestions_interactor.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
@@ -34,9 +29,7 @@ import 'package:tmail_ui_user/main/routes/dialog_router.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart';
class AdvancedFilterController extends BaseController { class AdvancedFilterController extends BaseController {
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
GetAutoCompleteInteractor? _getAutoCompleteInteractor; GetAutoCompleteInteractor? _getAutoCompleteInteractor;
GetDeviceContactSuggestionsInteractor? _getDeviceContactSuggestionsInteractor;
final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs; final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs;
final hasAttachment = false.obs; final hasAttachment = false.obs;
@@ -57,7 +50,6 @@ class AdvancedFilterController extends BaseController {
TextEditingController hasKeyWordFilterInputController = TextEditingController(); TextEditingController hasKeyWordFilterInputController = TextEditingController();
TextEditingController notKeyWordFilterInputController = TextEditingController(); TextEditingController notKeyWordFilterInputController = TextEditingController();
TextEditingController mailBoxFilterInputController = TextEditingController(); TextEditingController mailBoxFilterInputController = TextEditingController();
ContactSuggestionSource _contactSuggestionSource = ContactSuggestionSource.tMailContact;
final search.SearchController searchController = Get.find<search.SearchController>(); final search.SearchController searchController = Get.find<search.SearchController>();
final MailboxDashBoardController _mailboxDashBoardController = Get.find<MailboxDashBoardController>(); final MailboxDashBoardController _mailboxDashBoardController = Get.find<MailboxDashBoardController>();
@@ -80,11 +72,6 @@ class AdvancedFilterController extends BaseController {
@override @override
void onReady() { void onReady() {
if (PlatformInfo.isMobile) {
Future.delayed(
const Duration(milliseconds: 500),
() => _checkContactPermission());
}
injectAutoCompleteBindings( injectAutoCompleteBindings(
_mailboxDashBoardController.sessionCurrent, _mailboxDashBoardController.sessionCurrent,
_mailboxDashBoardController.accountId.value); _mailboxDashBoardController.accountId.value);
@@ -182,60 +169,20 @@ class AdvancedFilterController extends BaseController {
_mailboxDashBoardController.searchEmail(context); _mailboxDashBoardController.searchEmail(context);
} }
void _checkContactPermission() async {
final permissionStatus = await Permission.contacts.status;
if (permissionStatus.isGranted) {
_contactSuggestionSource = ContactSuggestionSource.all;
} else if (!permissionStatus.isPermanentlyDenied) {
final requestedPermission = await Permission.contacts.request();
_contactSuggestionSource = requestedPermission == PermissionStatus.granted
? ContactSuggestionSource.all
: _contactSuggestionSource;
}
}
Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async { Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async {
log('AdvancedFilterController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource'); log('AdvancedFilterController::getAutoCompleteSuggestion(): word = $word');
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
_getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>(); _getAutoCompleteInteractor = getBinding<GetAutoCompleteInteractor>();
_getDeviceContactSuggestionsInteractor = getBinding<GetDeviceContactSuggestionsInteractor>();
if (_contactSuggestionSource == ContactSuggestionSource.all) { return await _getAutoCompleteInteractor
if (_getAllAutoCompleteInteractor != null) { ?.execute(AutoCompletePattern(
return await _getAllAutoCompleteInteractor! word: word,
.execute(AutoCompletePattern(word: word, accountId: _mailboxDashBoardController.accountId.value)) accountId: _mailboxDashBoardController.accountId.value
.then((value) => value.fold( )).then((value) => value.fold(
(failure) => <EmailAddress>[], (failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess (success) => success is GetAutoCompleteSuccess
? success.listEmailAddress ? success.listEmailAddress
: <EmailAddress>[] : <EmailAddress>[]
)); )) ?? [];
} else if (_getDeviceContactSuggestionsInteractor != null) {
return await _getDeviceContactSuggestionsInteractor!
.execute(AutoCompletePattern(word: word, accountId: _mailboxDashBoardController.accountId.value))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetDeviceContactSuggestionsSuccess
? success.listEmailAddress
: <EmailAddress>[]
));
} else {
return <EmailAddress>[];
}
} else {
if (_getAutoCompleteInteractor == null) {
return <EmailAddress>[];
} else {
return await _getAutoCompleteInteractor!
.execute(AutoCompletePattern(word: word, accountId: _mailboxDashBoardController.accountId.value))
.then((value) => value.fold(
(failure) => <EmailAddress>[],
(success) => success is GetAutoCompleteSuccess
? success.listEmailAddress
: <EmailAddress>[]
));
}
}
} }
bool get isAdvancedSearchHasApplied { bool get isAdvancedSearchHasApplied {
@@ -1,9 +1,14 @@
import 'package:core/utils/app_logger.dart';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
import 'package:tmail_ui_user/features/push_notification/presentation/config/firebase_options.dart'; import 'package:tmail_ui_user/features/push_notification/presentation/config/firebase_options.dart';
class FcmConfiguration { class FcmConfiguration {
static Future<void> initialize() async { static Future<void> initialize() async {
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); try {
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
} catch (e) {
logError('FcmConfiguration::initialize: Exception = $e');
}
} }
} }