AddressAutocompleteExtension reference
All address autocomplete extensions have to be inherited from the AddressAutocompleteExtension
class
which, in turn, inherits from the core Sana Commerce Cloud Extension
class.
Methods
FindSuggestionsAsync
Finds address suggestions for the specified part of address. This method will be called when the user enters the address. The method should return a list of suggestions based on the data from AddressAutocompleteContext.
public override Task<IReadOnlyList<AddressAutocompleteSuggestion>> FindSuggestionsAsync(AddressAutocompleteContext context, CancellationToken cancellationToken)
{
var addressSuggestions = /* retrieve suggestions from 3rd party service */;
IReadOnlyList<AddressAutocompleteSuggestion> suggestions = addressSuggestions
.Select(address => new AddressAutocompleteSuggestion
(
Id: address.Id,
FormattedAddress: address.FormattedAddress,
Type: address.Type
)).ToList();
return Task.FromResult(suggestions);
}
RetrieveContainerSuggestionsAsync
Retrieves address suggestions from container suggestion. Some services can return suggestions with the type 'Container'. Such suggestions contain a list of nested address suggestions. An extra service API call is needed to retrieve the list of address suggestions from container suggestion. This method will be called when the user selects the 'Container' suggestion. The method should return a list of suggestions based on the data from AddressAutocompleteContainerSuggestionsContext.
public override Task<IReadOnlyList<AddressAutocompleteSuggestion>> RetrieveContainerSuggestionsAsync(AddressAutocompleteContainerSuggestionsContext containerContext, CancellationToken cancellationToken)
{
var addressContainerSuggestions = /* retrieve suggestions from container */;
IReadOnlyList<AddressAutocompleteSuggestion> containerSuggestions = addressContainerSuggestions
.Select(address => new AddressAutocompleteSuggestion
(
Id: address.Id,
FormattedAddress: address.FormattedAddress,
Type: AddressAutocompleteSuggestionType.Address
)).ToList();
return Task.FromResult(containerSuggestions);
}
RetrieveAddressAsync
Retrieves full address details based on address suggestion identifier.
The method can return null
if address details cannot be retrieved by provided suggestion identifier.
It will be called when the user selects a suggestion with the type 'Address'.
public override Task<AutocompleteAddress?> RetrieveAddressAsync(AddressAutocompleteSuggestionContext suggestionContext, CancellationToken cancellationToken)
{
var address = /* retrieve address from 3rd party service */;
return Task.FromResult<AutocompleteAddress?>(new(
Address: address.Address,
Address2: address.Address2,
ZipCode: address.ZipCode,
City: address.City,
CountryId: address.CountryId,
State: address.State));
}