import type { ActionFunctionArgs, LoaderFunctionArgs } from "react-router"; import { Form, useActionData, useLoaderData } from "react-router"; import { LoginErrorType } from "@shopify/shopify-app-react-router/server"; import { login } from "../shopify.server"; function message(errors: Awaited> | undefined) { if (!errors || errors instanceof Response) return null; if (errors.shop === LoginErrorType.MissingShop) return "Enter your shop domain to log in"; if (errors.shop === LoginErrorType.InvalidShop) return "Enter a valid shop domain, like your-store.myshopify.com"; return null; } export const loader = async ({ request }: LoaderFunctionArgs) => ({ error: message(await login(request)) }); export const action = async ({ request }: ActionFunctionArgs) => ({ error: message(await login(request)) }); export default function Login() { const loaderData = useLoaderData(); const actionData = useActionData(); const error = actionData?.error ?? loaderData.error; return (

Log in to Datewise

{error &&

{error}

}
); }