"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { joinTripAction, cancelJoinAction } from "@/features/trip/actions"; interface JoinTripButtonProps { tripId: string; isLoggedIn: boolean; isOrganizer: boolean; isJoined: boolean; isFull: boolean; tripStatus: string; } export function JoinTripButton({ tripId, isLoggedIn, isOrganizer, isJoined, isFull, tripStatus, }: JoinTripButtonProps) { const router = useRouter(); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); if (!isLoggedIn) { return ( Login untuk Join Trip ); } if (isOrganizer) { return (
Kamu adalah organizer trip ini
); } if (tripStatus !== "OPEN" && !isJoined) { return (
Trip tidak tersedia untuk pendaftaran
); } async function handleJoin() { setLoading(true); setError(""); const result = await joinTripAction(tripId); setLoading(false); if (result.error) { setError(result.error); } else { router.refresh(); } } async function handleCancel() { setLoading(true); setError(""); const result = await cancelJoinAction(tripId); setLoading(false); if (result.error) { setError(result.error); } else { router.refresh(); } } return (
{error && (
{error}
)} {isJoined ? ( ) : ( )}
); }