- From: Domenic Denicola <notifications@github.com>
- Date: Tue, 05 Jun 2018 15:27:05 -0700
- To: w3c/payment-request <payment-request@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/payment-request/pull/712/review/126175638@github.com>
domenic approved this pull request.
Mostly LGTM, although I agree with others who are concerned about the redundancy. Will leave it to you to make the call though.
> @@ -2719,6 +2761,152 @@ <h2>
</dd>
</dl>
</section>
+ <section data-dfn-for="AddressErrorFields" data-link-for=
+ "AddressErrorFields">
+ <h2>
+ <dfn>AddressErrorFields</dfn> dictionary
+ </h2>
+ <pre class="idl">
+ dictionary AddressErrorFields {
+ DOMString addressLineError;
I tend to agree this is redundant. I think you have chosen a code style with a combination of object literal shorthand, destructuring, and redundant variable declarations that makes it extra confusing. But I don't think that's a good reason to verbose-ify the API, personally. I would instead suggest writing your code in a more conventional way, such as
```js
function validateAddress(address){
return {
postalCode: !isValidPostalCode(address.postalCode) ? "Invalid zip code" : undefined
};
}
function collectErrors(response) {
return {
shippingAddress: validateAddress(response.shippingAddress)
};
}
```
(basically, don't declare variables you're only going to use once.
> + DOMString countryError;
+ DOMString dependentLocalityError;
+ DOMString languageCodeError;
+ DOMString organizationError;
+ DOMString phoneError;
+ DOMString postalCodeError;
+ DOMString recipientError;
+ DOMString regionError;
+ DOMString regionCodeError;
+ DOMString sortingCodeError;
+ };
+ </pre>
+ <p>
+ The members of the <a>AddressErrorFields</a> dictionary represent
+ validation errors with specific parts of a <a>physical address</a>.
+ Each dictionary member has a dual function: firstly, it denotes that
I'd say "firstly, its presence"
> + end user.
+ </p>
+ <pre class="example">
+ request.onshippingaddresschange = ev => {
+ ev.updateWith(validateAddress(request.shippingAddress));
+ };
+ function validateAddress(shippingAddress) {
+ const error = "Can't ship to this address.";
+ const shippingAddressErrors = {
+ cityError: "FarmVille is not a real place.",
+ postalCodeError: "Unknown postal code for your country.",
+ };
+ // Empty shippingOptions implies that we can't ship
+ // to this address.
+ const shippingOptions = [];
+ return { error, shippingAddressErrors, shippingOptions };
Empty shippingOptions should not be necessary, since not-present gets converted to empty in the processing model, I am pretty sure.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/payment-request/pull/712#pullrequestreview-126175638
Received on Tuesday, 5 June 2018 22:27:48 UTC