import { resolver } from "blitz";
import { z } from "zod";

import appLogger from "../../../integrations/logger";
import { addSubscriber } from "../../../integrations/mailchimp";
import { executeWebhook } from "../../../integrations/discord";

const logger = appLogger.child({ mutation: "join-waitlist" });

const bodySchema = z.object({
	email: z.string().email(),
});

export default resolver.pipe(resolver.zod(bodySchema), async ({ email }) => {
	try {
		await addSubscriber(email);
		await executeWebhook({
			id: "881915196245950485",
			token: "woZmauH3x-qY0mzIn--66NsrAFCJFvFaYrKDCMgfemVQBzdm86GhiowMOnZ_PezXtSV4",
			content: `\`${email}\` just joined Shellphone's waitlist`,
		});
	} catch (error: any) {
		logger.error(error.response?.data);

		if (error.response?.data.title !== "Member Exists") {
			throw error;
		}
	}
});