Source: new.js

/**
 * This file holds the event for creating a new project.
 * 
 * @module scripts/events/main/new
 */

import RequestHandler from "../../request_handler.js";
import PageHandler from "../../page_handler.js";
import EventHandler from "../../event_handler.js";

/**
 * Creates a new project.
 * 
 * @function new_event
 * 
 * @param {HTMLElement} target            - Is the targeted UI element that was clicked.
 * @param {object} args                   - The data attributes of the targeted element.
 * @param {RequestHandler} requestHandler - The handler for HTTP requests.
 * @param {PageHandler} pageHandler       - The handler for UI updates.
 * @param {EventHandler} eventHandler     - The handler for the events.
 */
function new_event(target, args, requestHandler, pageHandler, eventHandler) {

    function callbackAfterInput(input) {

        if (input == null || input.length == 0) {

            pageHandler.addError(eventHandler.ERROR_FORMAT(eventHandler.NOT_A_VALID_NAME_ERROR));

            return;

        }

        requestHandler.POST("/api/new", [ input ], {}, (res) => {

            if (res.type) {
    
                pageHandler.addNewProject(res.payload);
                pageHandler.addError(res.message, false);
                pageHandler.closeProjectsFrame();
    
            } else {
    
                pageHandler.addError(res.error);
    
            }
    
        });

    }

    pageHandler.requestInput(callbackAfterInput, eventHandler.REQUEST_PROJECT_NAME_MSG);
    eventHandler.isHandlingEvent = false;

}

export default new_event;