'use client'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; import { Button } from '@/components/ui/button'; import { cn } from '@/lib/utils'; import { format } from 'date-fns'; import { CalendarIcon } from 'lucide-react'; import { Calendar } from '@/components/ui/calendar'; import TimeSelect from './timeSelect'; import { CalendarEventExternal } from '@schedule-x/calendar'; import { Textarea } from '@/components/ui/textarea'; import { Label } from '@/components/ui/label'; import { useEffect, useState } from 'react'; import axios from 'axios'; import { DATE_FORMAT, PlatformKind, PostRequest, ScheduleRequest, UserPlatforms, } from '@/lib/types'; import { CalendarSchedule, Event } from './calendar'; import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group'; import RecentPosts from '../dashboard/recentPosts'; import PlatformIcon from '@/components/icons'; import { Input } from '@/components/ui/input'; type PostDialogProps = { newPostDialogOpen: boolean; setNewPostDialogOpen: (b: boolean) => void; date: Date; setDate: (d: Date) => void; addEvents: (e: Event) => void; }; export const today = new Date(); today.setHours(0, 0, 0, 0); export default function PostDialog({ newPostDialogOpen, setNewPostDialogOpen, date, setDate, addEvents: addEvent, }: PostDialogProps) { const [content, setContent] = useState(''); const [platforms, setPlatforms] = useState({}); const [title, setTitle] = useState(''); const [selectedPlatforms, setSelectedPlatforms] = useState>( new Set() ); useEffect(() => { axios .get('/api/platforms', { withCredentials: true, }) .then((res) => { setPlatforms(res.data.platforms); }); }, []); return ( New post Schedule posts on multiple accounts
{ if (d) { const newDate = new Date(d); newDate.setHours( date.getHours(), date.getMinutes(), 0, 0 ); setDate(newDate); } }} mode="single" disabled={(date) => date < today} />
{Object.entries(platforms).map(([name, platform]) => ( { setSelectedPlatforms((prev) => { const newSet = new Set(prev); if (newSet.has(name)) { newSet.delete(name); // Toggle off } else { newSet.add(name); // Toggle on } return newSet; }); }} >
))}
setTitle(e.target.value)} />