34 lines
838 B
TypeScript
34 lines
838 B
TypeScript
import { ComponentChildren } from "preact";
|
|
|
|
interface LoginPurposeButtonProps {
|
|
purpose: "landlord" | "tenant";
|
|
className?: string;
|
|
lockRoute?: string | null;
|
|
children: ComponentChildren;
|
|
}
|
|
|
|
export default function LoginPurposeButton(
|
|
{ purpose, className, lockRoute, children }: LoginPurposeButtonProps,
|
|
) {
|
|
const handleClick = () => {
|
|
try {
|
|
if (lockRoute) {
|
|
localStorage.setItem("lock-route", lockRoute);
|
|
localStorage.removeItem("login-purpose");
|
|
} else {
|
|
localStorage.setItem("login-purpose", purpose);
|
|
localStorage.removeItem("lock-route");
|
|
}
|
|
} catch (_error) {
|
|
// Best-effort only.
|
|
}
|
|
globalThis.location.href = "/auth/login";
|
|
};
|
|
|
|
return (
|
|
<button type="button" onClick={handleClick} class={className}>
|
|
{children}
|
|
</button>
|
|
);
|
|
}
|