/// 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 getAccountDevice() async { final deviceString = await getString(PropertyKeys.accountDevice, defValue: ''); if (deviceString == "") { return null; } final map = jsonDecode(deviceString); return DeviceInfo.fromJson(map); } Future 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 getLatestReportDeviceTimestamp() async { return await getInt(PropertyKeys.latestReportDeviceTimestamp, defValue: 0); } void setLatestReportDeviceTimestamp(int timestamp) async { setInt(PropertyKeys.latestReportDeviceTimestamp, timestamp); } Future getAnonymousSecretKey() async { String? secret = await getString(PropertyKeys.anonymousSecretKey, defValue: ""); if (secret == '') { secret = IdUtils.uuidV4(); await setString(PropertyKeys.anonymousSecretKey, secret); } return secret; } }