TF-34 Add model UserProfile for fix bug mock data user
This commit is contained in:
@@ -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];
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
@@ -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,
|
||||
];
|
||||
}
|
||||
@@ -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,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user