aman-kassa-flutter/lib/redux/state/user_state.dart

100 lines
2.6 KiB
Dart

import 'package:aman_kassa_flutter/core/models/money.dart';
import 'package:aman_kassa_flutter/core/models/smena.dart';
import 'package:aman_kassa_flutter/core/models/user.dart';
import 'package:meta/meta.dart';
@immutable
class UserState {
final bool? isError;
final bool? isLoading;
final bool? isAuthenticated;
final String? authenticateType;
final String? login;
final String? password;
final LoginFormMessage? loginFormMessage;
final User? user;
final Smena? smena;
final Money? money;
UserState(
{this.isError,
this.isLoading,
this.isAuthenticated,
this.authenticateType,
this.login,
this.password,
this.user,
this.loginFormMessage,
this.smena,
this.money,
});
factory UserState.initial(UserState? payload) => UserState(
isLoading: false,
isError: false,
isAuthenticated: false,
loginFormMessage: LoginFormMessage(),
smena: Smena(),
user: payload?.user ?? User(),
authenticateType: payload?.authenticateType ?? null,
login: payload?.login ?? null,
password: payload?.password ?? null,
money: Money(loading: false),
);
UserState copyWith({
@required bool? isError,
@required bool? isLoading,
@required User? user,
@required bool? isAuthenticated,
@required LoginFormMessage? loginFormMessage,
@required Smena? smena,
@required String? authenticateType,
@required String? login,
@required String? password,
@required Money? money,
}) {
return UserState(
isError: isError ?? this.isError,
isLoading: isLoading ?? this.isLoading,
isAuthenticated: isAuthenticated ?? this.isAuthenticated,
user: user ?? this.user,
loginFormMessage: loginFormMessage ?? this.loginFormMessage,
smena: smena ?? this.smena,
authenticateType: authenticateType ?? this.authenticateType,
login: login ?? this.login,
password: password ?? this.password,
money: money ?? this.money,
);
}
static UserState? fromJson(dynamic json) {
return json != null
? UserState(
user: User.fromJson(json['user']),
authenticateType: json['authenticateType'],
login: json['login'],
password: json['password'],
)
: null;
}
dynamic toJson() {
return {
"user": user != null ? user!.toJson() : null,
"authenticateType": authenticateType,
"login": login,
"password": password,
};
}
}
class LoginFormMessage {
final String? email;
final String? password;
final String? message;
LoginFormMessage({this.email, this.password, this.message});
}