Source: menu.js

'use strict';

const rl = require('./readline');

const chalk = require('chalk');

const createCharacter = require('./commands/charCreate');
const getCharacter = require('./commands/charGet');
const deleteCharacter = require('./commands/charDelete');

let characterOptions =
  '1. View Characters - Get a list of all of your characters \n2. Create Character - Create a new player character\nX. Exit Application\n';

let charSelectOptions = '1. Delete Character \n2. Back to Main Menu \nX. Exit Application\n';

/**
 * Generates the first menu. It asks users if they want to look at their full character list OR make a new character OR close the application.
 * 
 * @param {*} user - user object for the logged-in user
 */
async function menu(user) {
  rl.question(chalk.hex('#4298eb')(characterOptions), async (input) => {
    switch (input.trim().toUpperCase()) {
      case '1':
        let character = await getCharacter(user);
        character ? selectMenu(user, character) : menu(user);
        break;
      case '2':
        console.log('Entered character creator. \n');
        await createCharacter(user);
        menu(user);
        break;
      case 'X':
        rl.close();
        process.exit();
        break;
      default:
        console.log('Command not recognized');
        menu(user);
    }
  });
}

/**
 * Generates the second menu. It asks users if they want to delete a character OR return to the main menu OR exit the application.
 * 
 * @param {*} user - user object for the logged in user
 * @param {*} character - character object for the individually selected character
 */
async function selectMenu(user, character){
  rl.question(chalk.hex('#4298eb')(charSelectOptions), async (input) => {
    switch(input.trim().toUpperCase()) {
      case '1':
        
        await deleteCharacter(character);
        menu(user);
        break;
      case '2':
        menu(user);
        break;
      case 'X':
        rl.close();
        process.exit();
        break;
      default:
        console.log('Command not recognized');
        selectMenu(user, character);
    }

  });
}

module.exports = {menu, selectMenu};