TF-60 Add data get device contact suggestion
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user