TF-60 Add data get device contact suggestion

This commit is contained in:
dab246
2021-09-21 15:23:01 +07:00
committed by Dat H. Pham
parent 6ed3df52a2
commit bd54ac22b9
3 changed files with 46 additions and 0 deletions
@@ -0,0 +1,7 @@
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/composer/domain/model/auto_complete_pattern.dart';
abstract class ContactDataSource {
Future<List<Contact>> getContactSuggestions(AutoCompletePattern autoCompletePattern);
}
@@ -0,0 +1,22 @@
import 'package:contacts_service/contacts_service.dart' as contact_service;
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/composer/data/datasource/contact_datasource.dart';
import 'package:tmail_ui_user/features/composer/domain/model/auto_complete_pattern.dart';
class ContactDataSourceImpl extends ContactDataSource {
@override
Future<List<Contact>> getContactSuggestions(AutoCompletePattern autoCompletePattern) async {
final suggestedList = await contact_service.ContactsService
.getContactsByEmailOrName(autoCompletePattern.word ?? '');
return suggestedList.expand((contact) => _toDeviceContact(contact)).toList();
}
List<DeviceContact> _toDeviceContact(contact_service.Contact contact) {
if (contact.emails != null) {
return contact.emails!.map((email) => DeviceContact(contact.displayName ?? '', email.value ?? '')).toList();
}
return <DeviceContact>[];
}
}
@@ -0,0 +1,17 @@
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/composer/data/datasource/contact_datasource.dart';
import 'package:tmail_ui_user/features/composer/domain/model/auto_complete_pattern.dart';
import 'package:tmail_ui_user/features/composer/domain/repository/contact_repository.dart';
class ContactRepositoryImpl implements ContactRepository {
final ContactDataSource _contactDataSource;
ContactRepositoryImpl(this._contactDataSource);
@override
Future<List<Contact>> getContactSuggestions(AutoCompletePattern autoCompletePattern) {
return _contactDataSource.getContactSuggestions(autoCompletePattern);
}
}