guru_sdk/guru_app/lib/property/modules/account_property_extension....

82 lines
2.7 KiB
Dart

/// Created by Haoyi on 6/3/21
part of "../app_property.dart";
extension AccountPropertyExtension on AppProperty {
void setAccountSaasUser(SaasUser saasUser) {
final data = jsonEncode(saasUser);
setString(PropertyKeys.accountSaasUser, data);
}
void setAccountDevice(DeviceInfo deviceInfo) {
final data = jsonEncode(deviceInfo);
setString(PropertyKeys.accountDevice, data);
}
void setAccountProfile(AccountProfile accountProfile) {
final data = jsonEncode(accountProfile);
setString(PropertyKeys.accountProfile, data);
}
// refer updateLocalProfile
void setDirtyAccountProfile(AccountProfile accountProfile) {
final data = jsonEncode(accountProfile.copyWith(dirty: true));
setString(PropertyKeys.accountProfile, data);
}
Future<DeviceInfo?> getAccountDevice() async {
final deviceString = await getString(PropertyKeys.accountDevice, defValue: '');
if (deviceString == "") {
return null;
}
final map = jsonDecode(deviceString);
return DeviceInfo.fromJson(map);
}
Future<Account> loadAccount() async {
final accountBundle = await loadValuesByTag(PropertyTags.account).catchError((error) {
Log.v("loadValuesByTag is empty, $error");
return PropertyBundle.empty();
});
SaasUser? saasUser;
DeviceInfo? device;
AccountProfile? accountProfile;
final saasUserString = accountBundle.getString(PropertyKeys.accountSaasUser);
if (DartExt.isNotBlank(saasUserString)) {
final map = jsonDecode(saasUserString!);
saasUser = SaasUser.fromJson(map);
}
final accountDeviceString = accountBundle.getString(PropertyKeys.accountDevice);
if (DartExt.isNotBlank(accountDeviceString)) {
final map = jsonDecode(accountDeviceString!);
device = DeviceInfo.fromJson(map);
}
final accountProfileString = accountBundle.getString(PropertyKeys.accountProfile);
if (DartExt.isNotBlank(accountProfileString)) {
final map = jsonDecode(accountProfileString!);
accountProfile = AccountProfile.fromJson(map);
}
return Account.restore(saasUser: saasUser, device: device, accountProfile: accountProfile);
}
Future<int> getLatestReportDeviceTimestamp() async {
return await getInt(PropertyKeys.latestReportDeviceTimestamp, defValue: 0);
}
void setLatestReportDeviceTimestamp(int timestamp) async {
setInt(PropertyKeys.latestReportDeviceTimestamp, timestamp);
}
Future<String> getAnonymousSecretKey() async {
String? secret = await getString(PropertyKeys.anonymousSecretKey, defValue: "");
if (secret == '') {
secret = IdUtils.uuidV4();
await setString(PropertyKeys.anonymousSecretKey, secret);
}
return secret;
}
}