mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-07-15 01:35:23 +00:00
88 lines
2.6 KiB
Dart
88 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, // Add this line
|
|
required this.timeZone, // Add this line
|
|
});
|
|
|
|
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'], // Extract regionName
|
|
timeZone: json['timeZone']?['timeZoneOffset'], // Extract regionName
|
|
regionUuid: json['region']?['uuid'],
|
|
);
|
|
}
|
|
//uuid to json
|
|
//from token
|
|
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 {
|
|
'id': uuid,
|
|
'email': email,
|
|
'lastName': lastName,
|
|
'firstName': firstName,
|
|
'photoUrl': profilePicture,
|
|
'phoneNumber': phoneNumber,
|
|
'isEmailVerified': isEmailVerified,
|
|
'isAgreementAccepted': isAgreementAccepted,
|
|
};
|
|
}
|
|
}
|