Files
b0esche_cloud/b0esche_cloud/lib/models/user.dart

81 lines
1.9 KiB
Dart

import 'package:equatable/equatable.dart';
class User extends Equatable {
final String id;
final String username;
final String email;
final String? displayName;
final String? avatarUrl;
final DateTime createdAt;
final DateTime? lastLoginAt;
const User({
required this.id,
required this.username,
required this.email,
this.displayName,
this.avatarUrl,
required this.createdAt,
this.lastLoginAt,
});
@override
List<Object?> get props => [
id,
username,
email,
displayName,
avatarUrl,
createdAt,
lastLoginAt,
];
User copyWith({
String? id,
String? username,
String? email,
String? displayName,
String? avatarUrl,
DateTime? createdAt,
DateTime? lastLoginAt,
}) {
return User(
id: id ?? this.id,
username: username ?? this.username,
email: email ?? this.email,
displayName: displayName ?? this.displayName,
avatarUrl: avatarUrl ?? this.avatarUrl,
createdAt: createdAt ?? this.createdAt,
lastLoginAt: lastLoginAt ?? this.lastLoginAt,
);
}
factory User.fromJson(Map<String, dynamic> json) {
return User(
id: json['id'] as String,
username: json['username'] as String,
email: json['email'] as String,
displayName: json['displayName'] as String?,
avatarUrl: json['avatarUrl'] as String?,
createdAt: DateTime.parse(
json['createdAt'] as String? ?? DateTime.now().toIso8601String(),
),
lastLoginAt: json['lastLoginAt'] != null
? DateTime.parse(json['lastLoginAt'] as String)
: null,
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'username': username,
'email': email,
'displayName': displayName,
'avatarUrl': avatarUrl,
'createdAt': createdAt.toIso8601String(),
'lastLoginAt': lastLoginAt?.toIso8601String(),
};
}
}