mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	* Update mobile dependencies * Added image picker * Added mechanism to upload profile image * Added image type to send to web * Added styling for circle avatar * Fixxed issue with sharp cannot resize image properly * Finished displaying and uploading user profile * Added user profile to web
		
			
				
	
	
		
			136 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'dart:convert';
 | |
| 
 | |
| import 'package:immich_mobile/shared/models/device_info.model.dart';
 | |
| 
 | |
| class AuthenticationState {
 | |
|   final String deviceId;
 | |
|   final String deviceType;
 | |
|   final String userId;
 | |
|   final String userEmail;
 | |
|   final bool isAuthenticated;
 | |
|   final String firstName;
 | |
|   final String lastName;
 | |
|   final bool isAdmin;
 | |
|   final bool isFirstLogin;
 | |
|   final String profileImagePath;
 | |
|   final DeviceInfoRemote deviceInfo;
 | |
| 
 | |
|   AuthenticationState({
 | |
|     required this.deviceId,
 | |
|     required this.deviceType,
 | |
|     required this.userId,
 | |
|     required this.userEmail,
 | |
|     required this.isAuthenticated,
 | |
|     required this.firstName,
 | |
|     required this.lastName,
 | |
|     required this.isAdmin,
 | |
|     required this.isFirstLogin,
 | |
|     required this.profileImagePath,
 | |
|     required this.deviceInfo,
 | |
|   });
 | |
| 
 | |
|   AuthenticationState copyWith({
 | |
|     String? deviceId,
 | |
|     String? deviceType,
 | |
|     String? userId,
 | |
|     String? userEmail,
 | |
|     bool? isAuthenticated,
 | |
|     String? firstName,
 | |
|     String? lastName,
 | |
|     bool? isAdmin,
 | |
|     bool? isFirstLoggedIn,
 | |
|     String? profileImagePath,
 | |
|     DeviceInfoRemote? deviceInfo,
 | |
|   }) {
 | |
|     return AuthenticationState(
 | |
|       deviceId: deviceId ?? this.deviceId,
 | |
|       deviceType: deviceType ?? this.deviceType,
 | |
|       userId: userId ?? this.userId,
 | |
|       userEmail: userEmail ?? this.userEmail,
 | |
|       isAuthenticated: isAuthenticated ?? this.isAuthenticated,
 | |
|       firstName: firstName ?? this.firstName,
 | |
|       lastName: lastName ?? this.lastName,
 | |
|       isAdmin: isAdmin ?? this.isAdmin,
 | |
|       isFirstLogin: isFirstLoggedIn ?? isFirstLogin,
 | |
|       profileImagePath: profileImagePath ?? this.profileImagePath,
 | |
|       deviceInfo: deviceInfo ?? this.deviceInfo,
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   String toString() {
 | |
|     return 'AuthenticationState(deviceId: $deviceId, deviceType: $deviceType, userId: $userId, userEmail: $userEmail, isAuthenticated: $isAuthenticated, firstName: $firstName, lastName: $lastName, isAdmin: $isAdmin, isFirstLoggedIn: $isFirstLogin, profileImagePath: $profileImagePath, deviceInfo: $deviceInfo)';
 | |
|   }
 | |
| 
 | |
|   Map<String, dynamic> toMap() {
 | |
|     final result = <String, dynamic>{};
 | |
| 
 | |
|     result.addAll({'deviceId': deviceId});
 | |
|     result.addAll({'deviceType': deviceType});
 | |
|     result.addAll({'userId': userId});
 | |
|     result.addAll({'userEmail': userEmail});
 | |
|     result.addAll({'isAuthenticated': isAuthenticated});
 | |
|     result.addAll({'firstName': firstName});
 | |
|     result.addAll({'lastName': lastName});
 | |
|     result.addAll({'isAdmin': isAdmin});
 | |
|     result.addAll({'isFirstLogin': isFirstLogin});
 | |
|     result.addAll({'profileImagePath': profileImagePath});
 | |
|     result.addAll({'deviceInfo': deviceInfo.toMap()});
 | |
| 
 | |
|     return result;
 | |
|   }
 | |
| 
 | |
|   factory AuthenticationState.fromMap(Map<String, dynamic> map) {
 | |
|     return AuthenticationState(
 | |
|       deviceId: map['deviceId'] ?? '',
 | |
|       deviceType: map['deviceType'] ?? '',
 | |
|       userId: map['userId'] ?? '',
 | |
|       userEmail: map['userEmail'] ?? '',
 | |
|       isAuthenticated: map['isAuthenticated'] ?? false,
 | |
|       firstName: map['firstName'] ?? '',
 | |
|       lastName: map['lastName'] ?? '',
 | |
|       isAdmin: map['isAdmin'] ?? false,
 | |
|       isFirstLogin: map['isFirstLogin'] ?? false,
 | |
|       profileImagePath: map['profileImagePath'] ?? '',
 | |
|       deviceInfo: DeviceInfoRemote.fromMap(map['deviceInfo']),
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   String toJson() => json.encode(toMap());
 | |
| 
 | |
|   factory AuthenticationState.fromJson(String source) => AuthenticationState.fromMap(json.decode(source));
 | |
| 
 | |
|   @override
 | |
|   bool operator ==(Object other) {
 | |
|     if (identical(this, other)) return true;
 | |
| 
 | |
|     return other is AuthenticationState &&
 | |
|         other.deviceId == deviceId &&
 | |
|         other.deviceType == deviceType &&
 | |
|         other.userId == userId &&
 | |
|         other.userEmail == userEmail &&
 | |
|         other.isAuthenticated == isAuthenticated &&
 | |
|         other.firstName == firstName &&
 | |
|         other.lastName == lastName &&
 | |
|         other.isAdmin == isAdmin &&
 | |
|         other.isFirstLogin == isFirstLogin &&
 | |
|         other.profileImagePath == profileImagePath &&
 | |
|         other.deviceInfo == deviceInfo;
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   int get hashCode {
 | |
|     return deviceId.hashCode ^
 | |
|         deviceType.hashCode ^
 | |
|         userId.hashCode ^
 | |
|         userEmail.hashCode ^
 | |
|         isAuthenticated.hashCode ^
 | |
|         firstName.hashCode ^
 | |
|         lastName.hashCode ^
 | |
|         isAdmin.hashCode ^
 | |
|         isFirstLogin.hashCode ^
 | |
|         profileImagePath.hashCode ^
 | |
|         deviceInfo.hashCode;
 | |
|   }
 | |
| }
 |