import {
	TableType,
} from "qrc:/js/lib/generated/enum";
import {
	getSettingOrDefault,
} from "qrc:/js/lib/settings_table";
import {
	createUpdatedSharedData,
} from "qrc:/js/lib/shared_data";

import {
	run as runTableMigration,
} from "./table_migration";

export function populateSharedData(): void {
	let obj = wsi4.sharedData.read();
	{
		const mode = getSettingOrDefault("sheetNestingMode");
		if (mode !== "clientDecision") {
			const enabled = mode === "mixed";
			obj = createUpdatedSharedData("sheetMergingEnabled", enabled, obj);
		}
	}
	wsi4.sharedData.write(obj);
}

/**
 * Populate tables if started for the first time
 */
export function populateInternalTables() : void {
	const tableTypes = Object.freeze(Array.from(TableType));
	if (tableTypes.some(tableType => wsi4.tables.isInternalTable(tableType))) {
		return;
	}
	Array.from(TableType)
		.filter(tableType => !wsi4.tables.isExternalTable(tableType))
		.forEach(tableType => wsi4.tables.setInternalTable(wsi4.tables.getDefault(tableType)));
}

export function migrateInternalTables() : void {
	runTableMigration();
}
