TF-34 Add model UserProfile for fix bug mock data user

This commit is contained in:
dab246
2021-08-25 13:08:56 +07:00
committed by Dat H. Pham
parent 9b79609854
commit b50cec44c2
7 changed files with 136 additions and 23 deletions
+5
View File
@@ -0,0 +1,5 @@
enum AccountType {
oauth,
email
}
@@ -0,0 +1,15 @@
import 'package:equatable/equatable.dart';
import 'package:model/account/account_type.dart';
import 'package:model/email/presentation_email_address.dart';
class PresentationAccount with EquatableMixin {
final List<PresentationEmailAddress> emails;
final int preferredEmailIndex;
final AccountType type;
PresentationAccount(this.emails, this.preferredEmailIndex, this.type);
@override
List<Object?> get props => [emails];
}
@@ -0,0 +1,11 @@
import 'package:equatable/equatable.dart';
class PresentationEmailAddress with EquatableMixin {
final String email;
PresentationEmailAddress(this.email);
@override
List<Object?> get props => [email];
}
+5 -1
View File
@@ -3,10 +3,13 @@ library model;
// Account
export 'account/user_name.dart';
export 'account/password.dart';
export 'account/account_type.dart';
export 'account/presentation_account.dart';
// User
export 'user/user_id.dart';
export 'user/user.dart';
export 'user/user_profile.dart';
export 'user/avatar_id.dart';
// Mailbox
export 'mailbox/presentation_mailbox.dart';
@@ -16,6 +19,7 @@ export 'mailbox/expand_mode.dart';
// Email
export 'email/presentation_email.dart';
export 'email/email_content.dart';
export 'email/presentation_email_address.dart';
// Extensions
export 'extensions/email_address_extension.dart';
+15
View File
@@ -0,0 +1,15 @@
import 'package:equatable/equatable.dart';
class AvatarId with EquatableMixin {
final String id;
AvatarId(this.id);
factory AvatarId.initial() {
return AvatarId('');
}
@override
List<Object?> get props => [id];
}
-22
View File
@@ -1,22 +0,0 @@
import 'package:equatable/equatable.dart';
import 'package:model/user/user_id.dart';
class User with EquatableMixin {
final UserId userId;
final String firstName;
final String lastName;
User(
this.userId,
this.firstName,
this.lastName,
);
@override
List<Object> get props => [
userId,
firstName,
lastName,
];
}
+85
View File
@@ -0,0 +1,85 @@
import 'package:equatable/equatable.dart';
import 'package:model/account/account_type.dart';
import 'package:model/account/presentation_account.dart';
import 'package:model/user/avatar_id.dart';
import 'package:model/user/user_id.dart';
class UserProfile with EquatableMixin {
final UserId id;
final String firstName;
final String lastName;
final String jobTitle;
final String service;
final String buildingLocation;
final String officeLocation;
final String mainPhone;
final String description;
final AvatarId currentAvatar;
final List<AvatarId> avatars;
final List<PresentationAccount> accounts;
UserProfile(
this.id,
this.firstName,
this.lastName,
this.jobTitle,
this.service,
this.buildingLocation,
this.officeLocation,
this.mainPhone,
this.description,
this.currentAvatar,
this.avatars,
this.accounts,
);
String? getEmailAddress() {
try {
final accountEmail = accounts.firstWhere((account) => account.type == AccountType.email);
if (accountEmail.emails.isNotEmpty) {
final preferredEmailIndex = accountEmail.preferredEmailIndex < 0 ? 0 : accountEmail.preferredEmailIndex;
return accountEmail.emails[preferredEmailIndex].email;
}
return '';
} catch(e) {
return '';
}
}
String getFullName() => '$firstName $lastName';
String getNameDisplay() {
if (getFullName().trim().isEmpty) {
return getEmailAddress() != null ? getEmailAddress()! : '';
}
return getFullName();
}
bool isUserEmpty() => getFullName().trim().isEmpty || getEmailAddress() == null || getEmailAddress()!.isEmpty;
String getAvatarText() {
if (getFullName().trim().isNotEmpty) {
return getFullName().substring(0, 1).toUpperCase();
} else if (getEmailAddress() != null && getEmailAddress()!.isNotEmpty) {
return getEmailAddress()![0].toUpperCase();
}
return '';
}
@override
List<Object> get props => [
id,
firstName,
lastName,
jobTitle,
service,
buildingLocation,
officeLocation,
mainPhone,
description,
currentAvatar,
avatars,
accounts,
];
}