mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	* refactor: user entity * chore: rebase fixes * refactor: remove int user Id * refactor: migrate store userId from int to string * refactor: rename uid to id * feat: drift * pr feedback * refactor: move common overrides to mixin --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:immich_mobile/domain/models/user.model.dart';
 | 
						|
import 'package:immich_mobile/domain/models/user_metadata.model.dart';
 | 
						|
import 'package:openapi/api.dart';
 | 
						|
 | 
						|
// TODO: Move to repository once all classes are refactored
 | 
						|
abstract final class UserConverter {
 | 
						|
  /// Base user dto used where the complete user object is not required
 | 
						|
  static UserDto fromSimpleUserDto(UserResponseDto dto) => UserDto(
 | 
						|
        id: dto.id,
 | 
						|
        email: dto.email,
 | 
						|
        name: dto.name,
 | 
						|
        isAdmin: false,
 | 
						|
        updatedAt: DateTime.now(),
 | 
						|
        profileImagePath: dto.profileImagePath,
 | 
						|
        avatarColor: dto.avatarColor.toAvatarColor(),
 | 
						|
      );
 | 
						|
 | 
						|
  static UserDto fromAdminDto(
 | 
						|
    UserAdminResponseDto adminDto, [
 | 
						|
    UserPreferencesResponseDto? preferenceDto,
 | 
						|
  ]) =>
 | 
						|
      UserDto(
 | 
						|
        id: adminDto.id,
 | 
						|
        email: adminDto.email,
 | 
						|
        name: adminDto.name,
 | 
						|
        isAdmin: adminDto.isAdmin,
 | 
						|
        updatedAt: adminDto.updatedAt,
 | 
						|
        profileImagePath: adminDto.profileImagePath,
 | 
						|
        avatarColor: adminDto.avatarColor.toAvatarColor(),
 | 
						|
        memoryEnabled: preferenceDto?.memories.enabled ?? true,
 | 
						|
        inTimeline: false,
 | 
						|
        isPartnerSharedBy: false,
 | 
						|
        isPartnerSharedWith: false,
 | 
						|
        quotaUsageInBytes: adminDto.quotaUsageInBytes ?? 0,
 | 
						|
        quotaSizeInBytes: adminDto.quotaSizeInBytes ?? 0,
 | 
						|
      );
 | 
						|
 | 
						|
  static UserDto fromPartnerDto(PartnerResponseDto dto) => UserDto(
 | 
						|
        id: dto.id,
 | 
						|
        email: dto.email,
 | 
						|
        name: dto.name,
 | 
						|
        isAdmin: false,
 | 
						|
        updatedAt: DateTime.now(),
 | 
						|
        profileImagePath: dto.profileImagePath,
 | 
						|
        avatarColor: dto.avatarColor.toAvatarColor(),
 | 
						|
        memoryEnabled: false,
 | 
						|
        inTimeline: dto.inTimeline ?? false,
 | 
						|
        isPartnerSharedBy: false,
 | 
						|
        isPartnerSharedWith: false,
 | 
						|
        quotaUsageInBytes: 0,
 | 
						|
        quotaSizeInBytes: 0,
 | 
						|
      );
 | 
						|
}
 | 
						|
 | 
						|
extension on UserAvatarColor {
 | 
						|
  AvatarColor toAvatarColor() => switch (this) {
 | 
						|
        UserAvatarColor.red => AvatarColor.red,
 | 
						|
        UserAvatarColor.green => AvatarColor.green,
 | 
						|
        UserAvatarColor.blue => AvatarColor.blue,
 | 
						|
        UserAvatarColor.purple => AvatarColor.purple,
 | 
						|
        UserAvatarColor.orange => AvatarColor.orange,
 | 
						|
        UserAvatarColor.pink => AvatarColor.pink,
 | 
						|
        UserAvatarColor.amber => AvatarColor.amber,
 | 
						|
        UserAvatarColor.yellow => AvatarColor.yellow,
 | 
						|
        UserAvatarColor.gray => AvatarColor.gray,
 | 
						|
        UserAvatarColor.primary || _ => AvatarColor.primary,
 | 
						|
      };
 | 
						|
}
 |