import {
	throwClientErrorWithoutModelName,
	createPassGenerator,
} from "../shared";
import type { ALBEvent, ALBResult } from "aws-lambda";
import type { PKPass } from "passkit-generator";

/**
 * Lambda for localize example
 */

export async function localize(event: ALBEvent) {
	try {
		throwClientErrorWithoutModelName(event);
	} catch (err) {
		return err;
	}

	const { modelName, ...passOptions } = event.queryStringParameters;

	const passGenerator = createPassGenerator(modelName, passOptions);

	const pass = (await passGenerator.next()).value as PKPass;

	/**
	 * Italian and German already has an .lproj which gets included
	 * but it doesn't have translations
	 */
	pass.localize("it", {
		EVENT: "Evento",
		LOCATION: "Dove",
	});

	pass.localize("de", {
		EVENT: "Ereignis",
		LOCATION: "Ort",
	});

	// ...while Norwegian doesn't, so it gets created
	pass.localize("nn", {
		EVENT: "Begivenhet",
		LOCATION: "plassering",
	});

	console.log("Added languages", Object.keys(pass.languages).join(", "));

	return (await passGenerator.next(pass as PKPass)).value as ALBResult;
}
