import { $ } from "./jquery.js";
import { TD } from "./td.js";
import { crashDebug } from "./utils.js";

const callbacks = [];

/**
 * @param {function} callback
 */
function executeCallback(callback) {
	try {
		callback();
	} catch (e) {
		crashDebug("Caught error in function " + callback.name);
		console.error(e);
	}
}

/**
 * @returns {boolean}
 */
export function isAppReady() {
	return TD.ready;
}

/**
 * @param {function} callback
 */
export function onAppReady(callback) {
	if (isAppReady()) {
		executeCallback(callback);
	}
	else {
		callbacks.push(callback);
	}
}

$(document).one("TD.ready", function() {
	callbacks.forEach(executeCallback);
	callbacks.length = 0;
});