File tree Expand file tree Collapse file tree
messages/enums/expandable_fields Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import 'dart:convert' ;
2+
13import 'package:stripe/messages.dart' ;
24import 'package:stripe/src/expanded.dart' ;
5+ import 'package:stripe/src/utils/expandable_fields/customer_expandable_field.dart' ;
36import 'package:stripe/src/utils/expandable_fields/discounts_expandable_field.dart' ;
47import 'package:stripe/src/utils/expandable_fields/latest_invoice_expanded_expandable_field.dart' ;
58
69class SubscriptionExpanded {
710 final Subscription subscription;
811 final List <Discount >? discounts;
912 final InvoiceExpanded ? latestInvoice;
13+ final Customer ? customer;
1014
1115 SubscriptionExpanded ({
1216 required this .subscription,
1317 this .discounts,
1418 this .latestInvoice,
19+ this .customer,
1520 });
1621
1722 factory SubscriptionExpanded .fromJson (
@@ -30,10 +35,20 @@ class SubscriptionExpanded {
3035 ).extract (json);
3136 }
3237
38+ Customer ? customer;
39+ if (expand.contains (SubscriptionExpandableField .customer)) {
40+ const customerExpander = CustomerExpandableField ();
41+ customer = customerExpander.extract (json);
42+
43+ /// A shim so that Subscription gets parsed correctly
44+ json[customerExpander.field] = customer.id;
45+ }
46+
3347 return SubscriptionExpanded (
3448 subscription: Subscription .fromJson (json),
3549 discounts: discounts,
3650 latestInvoice: latestInvoice,
51+ customer: customer,
3752 );
3853 }
3954}
Original file line number Diff line number Diff line change 11enum SubscriptionExpandableField {
22 discounts,
33 latestInvoice,
4+ customer,
45}
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ import 'dart:async';
33import 'package:stripe/messages.dart' ;
44import 'package:stripe/src/expanded.dart' ;
55import 'package:stripe/src/utils/expandable_field.dart' ;
6+ import 'package:stripe/src/utils/expandable_fields/customer_expandable_field.dart' ;
67import 'package:stripe/src/utils/expandable_fields/discounts_expandable_field.dart' ;
78import 'package:stripe/src/utils/expandable_fields/latest_invoice_expanded_expandable_field.dart' ;
89
@@ -62,6 +63,8 @@ class SubscriptionResource extends Resource<Subscription> {
6263 return LatestInvoiceExpandedExpandableField (
6364 expand: {InvoiceExpandableField .paymentIntent},
6465 );
66+ case SubscriptionExpandableField .customer:
67+ return CustomerExpandableField ();
6568 }
6669 }
6770
Original file line number Diff line number Diff line change 1+ import 'package:stripe/messages.dart' ;
2+ import 'package:stripe/src/utils/expandable_field.dart' ;
3+
4+ class CustomerExpandableField extends ExpandableField <Customer > {
5+ @override
6+ String get field => 'customer' ;
7+
8+ const CustomerExpandableField ();
9+
10+ @override
11+ Customer extract (Map <String , dynamic > json) => Customer .fromJson (json[field]);
12+ }
You can’t perform that action at this time.
0 commit comments