in Node/core/src/dialogs/retrieve-favorite-location-dialog.ts [17:69]
function createDialog(apiKey: string) {
return common.createBaseDialog()
.onBegin(function (session, args) {
session.dialogData.args = args;
const favoritesManager = new FavoritesManager(session.userData);
const userFavorites = favoritesManager.getFavorites();
// If the user has no favorite locations, switch to a normal location retriever dialog
if (userFavorites.length == 0) {
session.send(session.gettext(Strings.NoFavoriteLocationsFound));
session.replaceDialog('retrieve-location-dialog', session.dialogData.args);
return;
}
session.dialogData.userFavorites = userFavorites;
let locations: RawLocation[] = [];
let names: string[] = [];
for (let i = 0; i < userFavorites.length; i++) {
locations.push(userFavorites[i].location);
names.push(userFavorites[i].name);
}
session.send(new LocationCardBuilder(apiKey).createHeroCards(session, locations, true, names));
session.send(session.gettext(Strings.SelectFavoriteLocationPrompt)).sendBatch();
}).onDefault((session) => {
const text: string = session.message.text;
if (text === session.gettext(Strings.OtherComand)) {
session.replaceDialog('retrieve-location-dialog', session.dialogData.args);
}
else {
const selection = tryParseCommandSelection(session.userData, text, session.dialogData.userFavorites.length);
if ( selection.command === "select" ) {
// complete required fields
session.replaceDialog('require-fields-dialog', {
place: selection.selectedFavorite.location,
requiredFields: session.dialogData.args.requiredFields
});
}
else if (selection.command === session.gettext(Strings.DeleteCommand) ) {
session.dialogData.args.toBeDeleted = selection.selectedFavorite;
session.replaceDialog('delete-favorite-location-dialog', session.dialogData.args);
}
else if (selection.command === session.gettext(Strings.EditCommand)) {
session.dialogData.args.toBeEditted = selection.selectedFavorite;
session.replaceDialog('edit-favorite-location-dialog', session.dialogData.args);
}
else {
session.send(session.gettext(Strings.InvalidFavoriteLocationSelection, text)).sendBatch();
}
}
});
}