Skip to content

Commit

Permalink
Merge pull request #290 from comicrelief/PLUS_fallback_when_bad_response
Browse files Browse the repository at this point in the history
PLUS availability check
  • Loading branch information
Heleen-cr authored Jan 22, 2019
2 parents 3f76f0f + c9770e2 commit 56e8195
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions src/components/PostcodeLookup/PostcodeLookup.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import SelectField from '../SelectField/SelectField';
import InputField from '../InputField/InputField';
import countries from './countries.json';


class PostcodeLookup extends Component {
/**
* AddressLookup constructor
Expand All @@ -16,7 +17,6 @@ class PostcodeLookup extends Component {
this.state = {
addressDropdownList: [],
countryDropdownList: [],
addressLookupData: false,
postcodeValidationMessage: false,
showErrorMessages: false,
previousAddress: '',
Expand Down Expand Up @@ -72,8 +72,6 @@ class PostcodeLookup extends Component {
this.fieldRefs = refs;
}
};

this.addressLookup = this.addressLookup.bind(this);
this.showAddressFields = this.showAddressFields.bind(this);
}

Expand Down Expand Up @@ -161,35 +159,44 @@ class PostcodeLookup extends Component {
* @return {Promise}
*/
addressLookup() {
return fetch(`https://lookups.sls.comicrelief.com/postcode/lookup?query=${this.state.validation.postcode.value}`, {
return fetch(this.props.plusURL + this.state.validation.postcode.value, {
method: 'get',
headers: { 'Content-Type': 'application/json' },
})
.then(response => response.json())
.then((response) => {
if (response.status !== 200) {
throw Error();
}
return response.json();
})
.then((response) => {
if (response.addresses !== null && response.addresses.length >= 1) {
this.setState({
postcodeValidationMessage: false,
addressLookupData: response.addresses,
});
this.createAddressDropdownList();
this.createAddressDropdownList(response.addresses);
} else {
this.setState({
postcodeValidationMessage: response.message,
});
}
})
.catch(() => {
this.setState({
postcodeValidationMessage: 'Postcode lookup currently unavailable, please enter your address manually',
isAddressFieldsHidden: false,
});
});
}

/**
* Creates object for address select field options.
* Updates state with new address object and shows address select field
*/
createAddressDropdownList() {
createAddressDropdownList(addressData) {
const addresses = [{ label: 'Please select', value: null }];

if (this.state.addressLookupData !== undefined || this.state.addressLookupData !== null) {
this.state.addressLookupData.map(item =>
if (addressData) {
addressData.map(item =>
addresses.push({ label: typeof item.Line2 === 'undefined' ? item.Line1 : `${item.Line1}, ${item.Line2}`,
value: item }));
this.setState({
Expand Down Expand Up @@ -471,13 +478,15 @@ PostcodeLookup.defaultProps = {
showErrorMessages: false,
valuesFromParent: null,
forceManualInput: false,
plusURL: 'https://lookups.sls.comicrelief.com/postcode/lookup?query=',
};
PostcodeLookup.propTypes = {
valuesFromParent: propTypes.object,
isAddressValid: propTypes.func,
label: propTypes.string,
showErrorMessages: propTypes.bool,
forceManualInput: propTypes.bool,
plusURL: propTypes.string,
};

export default PostcodeLookup;

0 comments on commit 56e8195

Please sign in to comment.