Skip to content

Commit 17dfc80

Browse files
authored
Merge pull request #18967 from mozilla/fxa-11708-handle-empty-ip-address
fix(next): undefined tax location results in error
2 parents 7b5a7b0 + 3f99181 commit 17dfc80

4 files changed

Lines changed: 25 additions & 13 deletions

File tree

libs/payments/cart/src/lib/tax.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ export class TaxService {
2323
private customerManager: CustomerManager,
2424
private geodbManager: GeoDBManager,
2525
private subscriptionManager: SubscriptionManager,
26-
private currencyManager: CurrencyManager
27-
) {}
26+
private currencyManager: CurrencyManager,
27+
) { }
2828

2929
async getTaxAddress(ipAddress: string, uid?: string) {
3030
if (uid) {

libs/payments/ui/src/lib/actions/getTaxAddress.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@
66
import { getApp } from '../nestapp/app';
77

88
export const getTaxAddressAction = async (ipAddress: string, uid?: string) => {
9-
return getApp().getActionsService().getTaxAddress({ ipAddress, uid });
9+
const { result } = await getApp().getActionsService().getTaxAddress({ ipAddress, uid });
10+
11+
return result;
1012
};

libs/payments/ui/src/lib/nestapp/nextjs-actions.service.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export class NextJSActionsService {
9898
private eligibilityService: EligibilityService,
9999
private productConfigurationManager: ProductConfigurationManager,
100100
@Inject(StatsDService) public statsd: StatsD
101-
) {}
101+
) { }
102102

103103
@SanitizeExceptions()
104104
@NextIOValidator(GetCartStateActionArgs, GetCartStateActionResult)
@@ -240,7 +240,9 @@ export class NextJSActionsService {
240240
args.uid
241241
);
242242

243-
return result;
243+
return {
244+
result
245+
}
244246
}
245247

246248
@SanitizeExceptions()
@@ -402,13 +404,13 @@ export class NextJSActionsService {
402404
uid?: string;
403405
}): Promise<
404406
| {
405-
ok: true;
406-
taxAddress: TaxAddress;
407-
}
407+
ok: true;
408+
taxAddress: TaxAddress;
409+
}
408410
| {
409-
ok: false;
410-
error: string;
411-
}
411+
ok: false;
412+
error: string;
413+
}
412414
> {
413415
const { cartId, version, offeringId, taxAddress, uid } = args;
414416

libs/payments/ui/src/lib/nestapp/validators/GetTaxAddressResult.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,17 @@ import { IsOptional, ValidateNested } from 'class-validator';
66
import { Type } from 'class-transformer';
77
import { TaxAddress } from './common/TaxAddress';
88

9-
export class GetTaxAddressResult {
9+
// Additional nesting is required to support undefined results;
10+
class TaxAddressResult {
1011
@IsOptional()
1112
@ValidateNested()
1213
@Type(() => TaxAddress)
13-
taxAddress?: TaxAddress;
14+
result?: TaxAddress;
15+
}
16+
17+
export class GetTaxAddressResult {
18+
@IsOptional()
19+
@ValidateNested()
20+
@Type(() => TaxAddressResult)
21+
taxAddress?: TaxAddressResult
1422
}

0 commit comments

Comments
 (0)