import $ from "jquery";

import * as channel from "./channel";
import {page_params} from "./page_params";
import * as upload_widget from "./upload_widget";

export function build_realm_icon_widget(upload_function) {
    const get_file_input = function () {
        return $("#realm-icon-upload-widget .image_file_input").expectOne();
    };

    if (!page_params.is_admin) {
        return undefined;
    }
    if (page_params.realm_icon_source === "G") {
        $("#realm-icon-upload-widget .image-delete-button").hide();
    } else {
        $("#realm-icon-upload-widget .image-delete-button").show();
    }
    $("#realm-icon-upload-widget .image-delete-button").on("click", (e) => {
        e.preventDefault();
        e.stopPropagation();
        channel.del({
            url: "/json/realm/icon",
        });
    });

    return upload_widget.build_direct_upload_widget(
        get_file_input,
        $("#realm-icon-upload-widget .image_file_input_error").expectOne(),
        $("#realm-icon-upload-widget .image_upload_button").expectOne(),
        upload_function,
        page_params.max_icon_file_size_mib,
    );
}

export function rerender() {
    $("#realm-icon-upload-widget .image-block").attr("src", page_params.realm_icon_url);
    if (page_params.realm_icon_source === "U") {
        $("#realm-icon-upload-widget .image-delete-button").show();
    } else {
        $("#realm-icon-upload-widget .image-delete-button").hide();
        // Need to clear input because of a small edge case
        // where you try to upload the same image you just deleted.
        const $file_input = $("#realm-icon-upload-widget .image_file_input");
        $file_input.val("");
    }
}
