diff --git a/apps/hackathon/src/app/dashboard/page.tsx b/apps/hackathon/src/app/dashboard/page.tsx index 27a597e..ffe5f2d 100644 --- a/apps/hackathon/src/app/dashboard/page.tsx +++ b/apps/hackathon/src/app/dashboard/page.tsx @@ -11,6 +11,9 @@ import { Button } from '@imphnen-frontend-service/ui/atoms'; import { Icon } from '@iconify/react'; import ProfilePage from '../profile/page'; +// Team features deadline: 2025-11-30 23:59:00 WIB (UTC+7) +const TEAM_FEATURES_DEADLINE = new Date('2025-11-30T16:59:00Z'); + type Invitation = { id: string; team: { @@ -34,6 +37,9 @@ type Invitation = { const DashboardPage: FC = (): ReactElement => { const { session } = useAuthStore(); const [showProfileModal, setShowProfileModal] = useState(false); + + // Check if team features are closed + const isTeamFeaturesClosed = new Date() >= TEAM_FEATURES_DEADLINE; // Lock background scroll when profile modal is open useEffect(() => { if (showProfileModal) { @@ -93,6 +99,14 @@ const DashboardPage: FC = (): ReactElement => {

Team Invitations ({invitations.length})

+ {isTeamFeaturesClosed && ( +
+

+ + Team features are closed. You can no longer accept invitations. +

+
+ )}
{invitations.map((invitation) => (
{ {invitation.inviter?.fullname ?? 'Unknown User'}

-
- - -
+ {!isTeamFeaturesClosed && ( +
+ + +
+ )}
))} diff --git a/apps/hackathon/src/app/teams/[teamId]/page.tsx b/apps/hackathon/src/app/teams/[teamId]/page.tsx index 6360379..7dfeec7 100644 --- a/apps/hackathon/src/app/teams/[teamId]/page.tsx +++ b/apps/hackathon/src/app/teams/[teamId]/page.tsx @@ -17,6 +17,9 @@ import { Icon } from '@iconify/react'; const MAX_TEAM_MEMBERS = 5; +// Team features deadline: 2025-11-30 23:59:00 WIB (UTC+7) +const TEAM_FEATURES_DEADLINE = new Date('2025-11-30T16:59:00Z'); + // Image component with loading state const ImageWithLoader: FC<{ src: string; @@ -52,6 +55,9 @@ const TeamDashboardPage: FC = (): ReactElement => { const { teamId } = useParams<{ teamId: string }>(); const navigate = useNavigate(); const { session } = useAuthStore(); + + // Check if team features are closed + const isTeamFeaturesClosed = new Date() >= TEAM_FEATURES_DEADLINE; const [showInviteModal, setShowInviteModal] = useState(false); const [showJoinRequestsModal, setShowJoinRequestsModal] = useState(false); const [showLeaveModal, setShowLeaveModal] = useState(false); @@ -369,8 +375,8 @@ const TeamDashboardPage: FC = (): ReactElement => { Team Management
- {/* Hide invite/join management after submission */} - {!team.has_submission && ( + {/* Hide invite/join management after submission or deadline */} + {!team.has_submission && !isTeamFeaturesClosed && ( <> )} - {!team.has_submission && ( + {!team.has_submission && !isTeamFeaturesClosed && ( )} - {!team.has_submission && ( + {!team.has_submission && !isTeamFeaturesClosed && ( + + +
+ + + ); + } + return (
{/* Header */}