function createDialog()

in Node/core/lib/dialogs/retrieve-favorite-location-dialog.js [15:61]


function createDialog(apiKey) {
    return common.createBaseDialog()
        .onBegin(function (session, args) {
        session.dialogData.args = args;
        var favoritesManager = new favorites_manager_1.FavoritesManager(session.userData);
        var userFavorites = favoritesManager.getFavorites();
        if (userFavorites.length == 0) {
            session.send(session.gettext(consts_1.Strings.NoFavoriteLocationsFound));
            session.replaceDialog('retrieve-location-dialog', session.dialogData.args);
            return;
        }
        session.dialogData.userFavorites = userFavorites;
        var locations = [];
        var names = [];
        for (var i = 0; i < userFavorites.length; i++) {
            locations.push(userFavorites[i].location);
            names.push(userFavorites[i].name);
        }
        session.send(new location_card_builder_1.LocationCardBuilder(apiKey).createHeroCards(session, locations, true, names));
        session.send(session.gettext(consts_1.Strings.SelectFavoriteLocationPrompt)).sendBatch();
    }).onDefault(function (session) {
        var text = session.message.text;
        if (text === session.gettext(consts_1.Strings.OtherComand)) {
            session.replaceDialog('retrieve-location-dialog', session.dialogData.args);
        }
        else {
            var selection = tryParseCommandSelection(session.userData, text, session.dialogData.userFavorites.length);
            if (selection.command === "select") {
                session.replaceDialog('require-fields-dialog', {
                    place: selection.selectedFavorite.location,
                    requiredFields: session.dialogData.args.requiredFields
                });
            }
            else if (selection.command === session.gettext(consts_1.Strings.DeleteCommand)) {
                session.dialogData.args.toBeDeleted = selection.selectedFavorite;
                session.replaceDialog('delete-favorite-location-dialog', session.dialogData.args);
            }
            else if (selection.command === session.gettext(consts_1.Strings.EditCommand)) {
                session.dialogData.args.toBeEditted = selection.selectedFavorite;
                session.replaceDialog('edit-favorite-location-dialog', session.dialogData.args);
            }
            else {
                session.send(session.gettext(consts_1.Strings.InvalidFavoriteLocationSelection, text)).sendBatch();
            }
        }
    });
}