39 lines
871 B
TypeScript
39 lines
871 B
TypeScript
import { useLoaderData } from "@remix-run/react";
|
|
|
|
export async function loader({
|
|
context,
|
|
}: {
|
|
context: RequestContext;
|
|
}): Promise<string> {
|
|
return context.env.TURNSTILE_SITEKEY;
|
|
}
|
|
|
|
export default function () {
|
|
return (
|
|
<>
|
|
<div
|
|
className="cf-turnstile"
|
|
data-callback="returnToken"
|
|
data-error-callback="handleError"
|
|
data-sitekey={useLoaderData<typeof loader>()}
|
|
></div>
|
|
<script>
|
|
{`
|
|
function returnToken(token) {
|
|
window.flutter_inappwebview.callHandler("onToken", token);
|
|
}
|
|
|
|
function handleError(_error) {
|
|
window.flutter_inappwebview.callHandler("onToken", null);
|
|
}
|
|
`}
|
|
</script>
|
|
<script
|
|
async
|
|
defer
|
|
src="https://challenges.cloudflare.com/turnstile/v0/api.js"
|
|
></script>
|
|
</>
|
|
);
|
|
}
|