mobile bluesky app made with flutter
lazurite.stormlightlabs.org/
mobile
bluesky
flutter
1part of 'auth_bloc.dart';
2
3enum AuthStatus { unauthenticated, authenticating, authenticated, authError }
4
5const _authStateNoValue = Object();
6
7class AuthState extends Equatable {
8 const AuthState._({required this.status, this.tokens, this.errorMessage});
9
10 const AuthState.unauthenticated() : this._(status: AuthStatus.unauthenticated);
11
12 const AuthState.authenticating() : this._(status: AuthStatus.authenticating);
13
14 const AuthState.authenticated(AuthTokens tokens) : this._(status: AuthStatus.authenticated, tokens: tokens);
15
16 const AuthState.authError(String message) : this._(status: AuthStatus.authError, errorMessage: message);
17 final AuthStatus status;
18 final AuthTokens? tokens;
19 final String? errorMessage;
20
21 bool get isAuthenticated => status == AuthStatus.authenticated;
22 bool get isLoading => status == AuthStatus.authenticating;
23 bool get hasError => status == AuthStatus.authError;
24
25 AuthState copyWith({
26 AuthStatus? status,
27 Object? tokens = _authStateNoValue,
28 Object? errorMessage = _authStateNoValue,
29 }) => AuthState._(
30 status: status ?? this.status,
31 tokens: identical(tokens, _authStateNoValue) ? this.tokens : tokens as AuthTokens?,
32 errorMessage: identical(errorMessage, _authStateNoValue) ? this.errorMessage : errorMessage as String?,
33 );
34
35 @override
36 List<Object?> get props => [status, tokens, errorMessage];
37}