import { useFetcher } from "react-router"; import { Switch } from "~/components/ui/switch"; import { Label } from "~/components/ui/label"; type Props = { discordPingEnabled: boolean; hasDiscordLinked: boolean; draftEmailNotificationsEnabled: boolean; success?: boolean; error?: string; onNavigateToAccount: () => void; }; export function NotificationsSection({ discordPingEnabled, hasDiscordLinked, draftEmailNotificationsEnabled, success, error, onNavigateToAccount }: Props) { const discordFetcher = useFetcher(); const emailFetcher = useFetcher(); const optimisticDiscordEnabled = discordFetcher.state !== "idle" ? discordFetcher.formData?.get("discordPingEnabled") === "true" : discordPingEnabled; const optimisticEmailEnabled = emailFetcher.state !== "idle" ? emailFetcher.formData?.get("draftEmailNotificationsEnabled") === "true" : draftEmailNotificationsEnabled; const handleDiscordToggle = (checked: boolean) => { discordFetcher.submit( { intent: "update-discord-ping", discordPingEnabled: String(checked) }, { method: "post" } ); }; const handleEmailToggle = (checked: boolean) => { emailFetcher.submit( { intent: "update-email-draft-notifications", draftEmailNotificationsEnabled: String(checked) }, { method: "post" } ); }; return (

Notifications

Manage how you receive league notifications.

Draft Pick Emails

Receive an email when it's your turn to pick in a draft. If you have back-to-back picks, you'll get a single email letting you know.

{emailFetcher.state === "idle" && emailFetcher.data && (emailFetcher.data as { intent?: string; success?: boolean }).intent === "update-email-draft-notifications" && (emailFetcher.data as { success?: boolean }).success && (

Email notification preference saved.

)}

Discord Pings

{!hasDiscordLinked ? (

Link your Discord account in{" "} {" "} to enable Discord pings for league notifications.

) : ( <>

When enabled, you'll be @mentioned in league Discord notifications and your Discord display name will appear in place of your brackt username.

{success && (

Notification preference saved.

)} {error && (

{error}

)} )}
); }