selfprivacy.org.app/lib/logic/cubit/users/users_state.dart

61 lines
1.6 KiB
Dart
Raw Normal View History

2020-12-03 18:52:53 +02:00
part of 'users_cubit.dart';
class UsersState extends ServerInstallationDependendState {
const UsersState(this.users, this.isLoading);
2020-12-03 18:52:53 +02:00
final List<User> users;
final bool isLoading;
2022-09-05 07:34:47 +03:00
User get rootUser =>
users.firstWhere((final user) => user.type == UserType.root);
2022-09-05 07:34:47 +03:00
User get primaryUser =>
users.firstWhere((final user) => user.type == UserType.primary);
2022-09-05 07:34:47 +03:00
List<User> get normalUsers =>
users.where((final user) => user.type == UserType.normal).toList();
2020-12-03 18:52:53 +02:00
@override
List<Object> get props => [users, isLoading];
/// Makes a copy of existing users list, but places 'primary'
/// to the beginning and sorts the rest alphabetically
///
/// If found a 'root' user, it doesn't get copied into the result
List<User> get orderedUsers {
User? primaryUser;
final List<User> normalUsers = [];
for (final User user in users) {
if (user.type == UserType.primary) {
primaryUser = user;
continue;
}
if (user.type == UserType.root) {
continue;
}
normalUsers.add(user);
}
normalUsers.sort(
(final User a, final User b) =>
a.login.toLowerCase().compareTo(b.login.toLowerCase()),
);
return primaryUser == null ? normalUsers : [primaryUser] + normalUsers;
}
UsersState copyWith({
2022-06-05 22:36:32 +03:00
final List<User>? users,
final bool? isLoading,
}) =>
UsersState(
users ?? this.users,
isLoading ?? this.isLoading,
);
2021-01-06 19:35:57 +02:00
2022-09-05 07:34:47 +03:00
bool isLoginRegistered(final String login) =>
users.any((final User user) => user.login == login);
2021-01-06 19:35:57 +02:00
bool get isEmpty => users.isEmpty;
2020-12-03 18:52:53 +02:00
}