/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */


function uploadList() {
    if (packages.length == 0) {
        app.dialog.alert("Your list doesn't have anything to send.", "Empty List");
        return;
    }
    app.dialog.preloader("Uploading...");
    var uploadlistdialogopen = true;
    $.ajax({
        url: SETTINGS.sharelistapi,
        dataType: 'json',
        method: 'post',
        data: {
            packages: JSON.stringify(packages)
        },
        timeout: 15 * 1000,
        success: function (resp) {
            if (uploadlistdialogopen) {
                app.dialog.close();
                uploadlistdialogopen = false;
            }
            if (resp.status == "OK") {
                JsBarcode("#listidbarcode", resp.uuid, {
                    format: "code128",
                    ean128: false,
                    width: 2,
                    height: 40
                });
                $("#listidbarcodeli").css("display", "");
                appendActivityLog("Shared List", countPackages() + " items sent", "", "fas fa-file-upload");
            } else {
                app.dialog.alert(resp.message, "Error");
            }
        },
        error: function (jqXHR, status, errorThrown) {
            if (uploadlistdialogopen) {
                app.dialog.close();
                uploadlistdialogopen = false;
            }
            app.dialog.alert("There was a network or server issue while uploading the list.  Please try again.", "Error");
        }
    });
}

function downloadItemList(code) {
    if (typeof code == "undefined") {
        code = $("#getlistidbox").val();
    }
    if (code.match(/^[a-f0-9]{10}$/i)) {
        app.dialog.preloader("Downloading...");
        var downloadlistdialogopen = true;
        $.ajax({
            url: SETTINGS.sharelistapi,
            dataType: 'json',
            method: 'get',
            data: {
                uuid: code
            },
            timeout: 15 * 1000,
            success: function (resp) {
                if (downloadlistdialogopen) {
                    app.dialog.close();
                    downloadlistdialogopen = false;
                }
                if (resp.status == "OK") {
                    var skipped = importPackageList(resp.packages);
                    if (skipped > 0) {
                        app.dialog.alert("List imported and merged with the existing one. " + skipped + " items already existed locally and were skipped. Verify their delivery status manually.", "Import Complete");
                    } else {
                    app.dialog.alert("List imported and merged with the existing one.", "Import Complete");
                }
                } else {
                    app.dialog.alert(resp.message, "Error");
                }
            },
            error: function (jqXHR, status, errorThrown) {
                if (downloadlistdialogopen) {
                    app.dialog.close();
                    downloadlistdialogopen = false;
                }
                app.dialog.alert("There was a network or server issue while downloading the list.  Please try again.", "Error");
            }
        });
    } else {
        app.dialog.alert("That's not a valid list ID.", "Error");
    }
}

function scanListIDBarcode() {
    scanBarcode(function (code) {
        playSound("scan");
        downloadItemList(code);
    }, function (error) {
        app.dialog.alert(error, "Error");
    });
}