Files
syncrow-app/lib/features/auth/model/user_model.dart
2025-01-13 13:16:29 +03:00

91 lines
2.6 KiB
Dart

import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:syncrow_app/features/auth/model/token.dart';
class UserModel {
static String userUuidKey = 'userUuid';
final String? uuid;
final String? email;
final String? firstName;
final String? lastName;
final Uint8List? profilePicture;
final String? phoneNumber;
final bool? isEmailVerified;
final String? regionName;
final String? timeZone;
final String? regionUuid;
final bool? isAgreementAccepted;
UserModel({
required this.uuid,
required this.email,
required this.firstName,
required this.lastName,
required this.profilePicture,
required this.phoneNumber,
required this.isEmailVerified,
required this.regionUuid,
required this.isAgreementAccepted,
required this.regionName,
required this.timeZone,
// required this.role,
});
factory UserModel.fromJson(Map<String, dynamic> json) {
return UserModel(
uuid: json['uuid'],
email: json['email'],
firstName: json['firstName'],
lastName: json['lastName'],
profilePicture: UserModel.decodeBase64Image(json['profilePicture']),
phoneNumber: json['phoneNumber'],
isEmailVerified: json['isEmailVerified'],
isAgreementAccepted: json['isAgreementAccepted'],
regionName: json['region']?['regionName'],
timeZone: json['timeZone']?['timeZoneOffset'],
regionUuid: json['region']?['uuid'],
);
}
factory UserModel.fromToken(Token token) {
Map<String, dynamic> tempJson = Token.decodeToken(token.accessToken);
return UserModel(
uuid: tempJson['uuid'].toString(),
email: tempJson['email'],
lastName: tempJson['lastName'],
firstName: tempJson['firstName'],
profilePicture: UserModel.decodeBase64Image(tempJson['profilePicture']),
phoneNumber: null,
isEmailVerified: null,
isAgreementAccepted: null,
regionUuid: null,
regionName: tempJson['region']?['regionName'],
timeZone: tempJson['timezone']?['timeZoneOffset'],
);
}
static Uint8List? decodeBase64Image(String? base64String) {
if (base64String != null) {
return base64.decode(base64String);
}
return null;
}
Map<String, dynamic> toJson() {
return {
'uuid': uuid,
'email': email,
'firstName': firstName,
'lastName': lastName,
'profilePicture':
profilePicture != null ? base64.encode(profilePicture!) : null,
'phoneNumber': phoneNumber,
'isEmailVerified': isEmailVerified,
'regionUuid': regionUuid,
'isAgreementAccepted': isAgreementAccepted,
'regionName': regionName,
'timeZone': timeZone,
};
}
}