"use client"; import { useState, useRef, useEffect } from "react"; import Image from "next/image"; import { HiX } from "react-icons/hi"; import { toast } from "sonner"; import { cn } from "@/lib/utils"; import { randomId } from "@/lib/nostr"; import { unixTimeNowInSeconds } from "@/lib/nostr/dates"; import { addMinutesToDate, toUnix, convertToTimezone } from "@/lib/utils/dates"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/textarea"; import { DatePicker } from "@/components/ui/date-picker"; import { TimePicker } from "@/components/ui/time-picker"; import { TimezoneSelector } from "@/components/ui/timezone"; import { Label } from "@/components/ui/label"; import SmallCalendarIcon from "@/components/EventIcons/DateIcon"; import LocationIcon from "@/components/EventIcons/LocationIcon"; import LocationSearchInput from "@/components/LocationSearch"; import Spinner from "../spinner"; import useAutosizeTextArea from "@/lib/hooks/useAutoSizeTextArea"; import { useModal } from "@/app/_providers/modal/provider"; import { useRouter } from "next/navigation"; import { createEvent } from "@/lib/actions/create"; import { useNDK } from "@/app/_providers/ndk"; import useCurrentUser from "@/lib/hooks/useCurrentUser"; import useImageUpload from "@/lib/hooks/useImageUpload"; export default function CreateCalendarEventModal() { const modal = useModal(); const now = new Date(new Date().setHours(12, 0, 0, 0)); const [isLoading, setIsLoading] = useState(false); const { ImageUploadButton, clear, imagePreview, imageUrl, status: imageStatus, } = useImageUpload("event"); const [error, setError] = useState(""); const [name, setName] = useState(""); const [description, setDescription] = useState(""); const { ndk } = useNDK(); const { currentUser } = useCurrentUser(); const router = useRouter(); async function handleSubmit() { console.log("CALLED", ndk, currentUser); if (!ndk || !currentUser) { alert("MISSING"); return; } setIsLoading(true); if (!name) { setError("Please add a title"); return; } try { const random = randomId(); const tags: string[][] = [ ["d", random], ["name", name], ["description", description], ["p", currentUser.pubkey, "", "host"], ]; if (imageUrl) { tags.push(["image", imageUrl]); } const preEvent = { content: description, pubkey: currentUser.pubkey, created_at: unixTimeNowInSeconds(), tags: tags, kind: 31924, }; const event = await createEvent(ndk, preEvent); if (event) { toast.success("Calendar Created!"); modal?.hide(); router.push(`/calendar/${event.encode()}`); } else { toast.error("An error occured"); } } catch (err) { console.log("err", err); } finally { setIsLoading(false); } } const nameRef = useRef(null); useAutosizeTextArea(nameRef.current, name); console.log(Intl.DateTimeFormat().resolvedOptions().timeZone); return (