import { View, Text, Pressable } from "react-native"; import { Feather, Ionicons } from "@expo/vector-icons"; import { ProposedEventChange, formatDate, formatTime } from "@calchat/shared"; import { rrulestr } from "rrule"; import { useThemeStore } from "../stores/ThemeStore"; import { EventCardBase } from "./EventCardBase"; type ProposedEventCardProps = { proposedChange: ProposedEventChange; onConfirm: (proposal: ProposedEventChange) => void; onReject: () => void; onEdit?: (proposal: ProposedEventChange) => void; }; const ActionButtons = ({ isDisabled, respondedAction, showEdit, onConfirm, onReject, onEdit, }: { isDisabled: boolean; respondedAction?: "confirm" | "reject"; showEdit: boolean; onConfirm: () => void; onReject: () => void; onEdit?: () => void; }) => { const { theme } = useThemeStore(); return ( Annehmen Ablehnen {showEdit && onEdit && ( )} ); }; export const ProposedEventCard = ({ proposedChange, onConfirm, onReject, onEdit, }: ProposedEventCardProps) => { const { theme } = useThemeStore(); const event = proposedChange.event; const isDisabled = !!proposedChange.respondedAction; // For delete/single action, the occurrenceDate becomes a new exception const newExceptionDate = proposedChange.action === "delete" && proposedChange.deleteMode === "single" && proposedChange.occurrenceDate; // For update actions, check if a new UNTIL date is being set const newUntilDate = proposedChange.action === "update" && event?.recurrenceRule && rrulestr(event.recurrenceRule).options.until; if (!event) { return null; } return ( {/* Show new exception date for delete/single actions */} {newExceptionDate && ( Neue Ausnahme:{" "} {formatDate(new Date(proposedChange.occurrenceDate!))} )} {/* Show new UNTIL date for update actions */} {newUntilDate && ( Neues Ende: {formatDate(newUntilDate)} )} {/* Show conflicting events warning */} {proposedChange.conflictingEvents && proposedChange.conflictingEvents.length > 0 && ( {proposedChange.conflictingEvents.map((conflict, index) => ( Konflikt: {conflict.title} ({formatTime(conflict.startTime)}{" "} - {formatTime(conflict.endTime)}) ))} )} onConfirm(proposedChange)} onReject={onReject} onEdit={onEdit ? () => onEdit(proposedChange) : undefined} /> ); };