
function setStatus(text, className ) {
    // Show loading
    const statusIndicator = document.getElementById(`status-indicator`);

    if ( !!statusIndicator ) {
        // Clear all previous status-es
        for ( let [x, k] of statusIndicator.classList.entries() ) {
            statusIndicator.classList.remove(k);
        }

        // Mark as loading
        statusIndicator.textContent = text;
        statusIndicator.classList.add(className);
    }

}

function updatePost(postName) {

    const postContentElement = document.getElementById(`post_content`);

    if ( !!postContentElement && !!postContentElement.value ) {
        const postContent = String(postContentElement.value);
        if ( !!postContent && postContent.length > 0 ) {

            setStatus(`Loading...`, `has-text-warning`);

            // Generate the form data
            let formData = new FormData();
            formData.append('name',    postName);
            formData.append('content', postContent);

            // Send out a fetch request
            fetch("/api/post", {
                method: "post",
                body: formData,
            })
            .then( result => {

                if ( result.status < 200 || result.status > 299 ) {
                    if ( result.status == 429) {
                        setStatus(`Too many requests, please wait`, `has-text-danger`);
                    } else {
                        setStatus(`Failed to Save`, `has-text-danger`);
                    }
                } else {
                    setStatus(`Saved`, `has-text-success`);
                }

                console.log(result);

            })
            .catch( error => {
                console.error(error);
                alert(error);
                setStatus(`Failed to Save`, `has-text-danger`);
            })
        }
    }

}

/**
 * @location /
 * @role Searching
 */
function goToPost() {
    // Get the post name element
    const postNameElement = document.getElementById(`postName`);

    // Check if the element exists
    if ( !!postNameElement ) {
        // Get the post name string
        const postName = String(postNameElement.value);
        // Check if the post name is valid
        if ( !!postName && postName.length > 0 && postName.length <= 256 ) {
            // Change the location
            window.location.href = `/${postName}`;
        }
    }
}
