<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
import { safeParseJson } from '@shared/lib/parsing';
import { z } from 'zod';

// These override user/ai counterparts in get-profile
export const urlParamsShape = z.object({
	title: z
		.string()
		.optional()
		.default('')
		.catch(() => ''),
	description: z
		.string()
		.optional()
		.default('')
		.catch(() => ''),
	type: z
		.string()
		.optional()
		.catch(() => ''),
	objective: z
		.string()
		.optional()
		.catch(() => ''),
	category: z
		.string()
		.optional()
		.catch(() => ''),
	structure: z
		.string()
		.optional()
		.catch(() => ''),
	tone: z
		.array(z.string())
		.optional()
		.catch(() => []),
	products: z
		.union([z.string(), z.literal(false)])
		.optional()
		.catch(() => false),
	appointments: z
		.boolean()
		.optional()
		.catch(() => false),
	events: z
		.boolean()
		.optional()
		.catch(() => false),
	donations: z
		.boolean()
		.optional()
		.catch(() => false),
	multilingual: z
		.boolean()
		.optional()
		.catch(() => false),
	contact: z
		.boolean()
		.optional()
		.catch(() => false),
	address: z
		.union([z.boolean(), z.string()])
		.optional()
		.catch(() => false),
	blog: z
		.boolean()
		.optional()
		.catch(() => false),
	'landing-page': z
		.string()
		.optional()
		.catch(() => ''),
	'cta-link': z
		.union([z.boolean(), z.string()])
		.optional()
		.catch(() => false),
	'build-id': z
		.string()
		.optional()
		.catch(() => ''),
	go: z
		.boolean()
		.optional()
		.catch(() => false),
});

export const urlParams = urlParamsShape.parse(
	safeParseJson(window.extLaunchData.urlParams) || {},
);
// remove them from the url to avoid confusion later
const url = new URL(window.location.href);
Object.keys(urlParams).forEach((key) => {
	url.searchParams.delete(key);
});
window.history.replaceState({}, '', url.toString());

export const overrideWithUrlParams = (urlParams) => {
	const {
		'landing-page': landingPage,
		'cta-link': landingPageCTALink,
		...rest
	} = urlParams;
	const mapped = {
		...rest,
		landingPage: landingPage === 'clickthrough' || undefined,
		landingPageCTALink,
	};

	return Object.fromEntries(
		Object.entries(mapped).filter(([, v]) => v !== undefined && v !== ''),
	);
};
