chore: better error logging if subscription info is null (#2171)
This commit is contained in:
parent
25b1c63df4
commit
af295b2817
3 changed files with 36 additions and 8 deletions
|
|
@ -66,7 +66,7 @@ class ErrorHandler {
|
|||
// Custom handling for PangeaWarningError
|
||||
debugPrint("PangeaWarningError: ${e.message}");
|
||||
} else {
|
||||
if (m != null) debugPrint("error message: $m");
|
||||
debugPrint("error message: ${m ?? e}");
|
||||
}
|
||||
|
||||
Sentry.addBreadcrumb(Breadcrumb(data: data));
|
||||
|
|
|
|||
|
|
@ -146,7 +146,9 @@ class SubscriptionController extends BaseController {
|
|||
e: e,
|
||||
s: s,
|
||||
data: {
|
||||
"availableSubscriptionInfo": availableSubscriptionInfo?.toJson(),
|
||||
"availableSubscriptionInfo": availableSubscriptionInfo?.toJson(
|
||||
validate: false,
|
||||
),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
@ -345,7 +347,9 @@ class SubscriptionController extends BaseController {
|
|||
e: e,
|
||||
s: s,
|
||||
data: {
|
||||
"availableSubscriptionInfo": availableSubscriptionInfo?.toJson(),
|
||||
"availableSubscriptionInfo": availableSubscriptionInfo?.toJson(
|
||||
validate: false,
|
||||
),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,10 +115,22 @@ class AvailableSubscriptionsInfo {
|
|||
}
|
||||
|
||||
Future<void> _cacheSubscriptionInfo() async {
|
||||
await subscriptionBox.write(
|
||||
PLocalKey.availableSubscriptionInfo,
|
||||
toJson(),
|
||||
);
|
||||
try {
|
||||
final json = toJson();
|
||||
await subscriptionBox.write(
|
||||
PLocalKey.availableSubscriptionInfo,
|
||||
json,
|
||||
);
|
||||
} catch (e, s) {
|
||||
ErrorHandler.logError(
|
||||
e: e,
|
||||
s: s,
|
||||
data: {
|
||||
"appIds": appIds,
|
||||
"allProducts": allProducts,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
AvailableSubscriptionsInfo? _getCachedSubscriptionInfo() {
|
||||
|
|
@ -144,6 +156,14 @@ class AvailableSubscriptionsInfo {
|
|||
}
|
||||
|
||||
factory AvailableSubscriptionsInfo.fromJson(Map<String, dynamic> json) {
|
||||
if (!json.containsKey('app_ids') || !json.containsKey('all_products')) {
|
||||
throw "Cached subscription info is missing required fields";
|
||||
}
|
||||
|
||||
if (json['all_products'] is! List<dynamic> || json['app_ids'] is! Map) {
|
||||
throw "Cached subscription info contains incorrect data type(s)";
|
||||
}
|
||||
|
||||
final appIds = SubscriptionAppIds.fromJson(json['app_ids']);
|
||||
final allProducts = (json['all_products'] as List<dynamic>)
|
||||
.map((product) => SubscriptionDetails.fromJson(product))
|
||||
|
|
@ -155,7 +175,11 @@ class AvailableSubscriptionsInfo {
|
|||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
Map<String, dynamic> toJson({validate = true}) {
|
||||
if (validate && (appIds == null || allProducts == null)) {
|
||||
throw "appIds or allProducts is null in AvailableSubscriptionsInfo";
|
||||
}
|
||||
|
||||
final data = <String, dynamic>{};
|
||||
data['app_ids'] = appIds?.toJson();
|
||||
data['all_products'] =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue