fix: redirect Join Now button to local meeting page

- Change handleJoinDirect to use onMeetingSelect instead of opening external URL
- Join Now button now navigates to /{roomName}/{meetingId} instead of whereby.com
- Maintains proper routing within the application
This commit is contained in:
2025-09-10 17:32:39 -06:00
parent 1557af1ac9
commit 8cdae8b99b

View File

@@ -106,9 +106,9 @@ export default function MeetingSelection({
}; };
const handleJoinUpcoming = async (meeting: Meeting) => { const handleJoinUpcoming = async (meeting: Meeting) => {
// Join the upcoming meeting directly // Join the upcoming meeting and navigate to local meeting page
try { try {
await joinMeetingMutation.mutateAsync({ const joinedMeeting = await joinMeetingMutation.mutateAsync({
params: { params: {
path: { path: {
room_name: roomName, room_name: roomName,
@@ -116,15 +116,15 @@ export default function MeetingSelection({
}, },
}, },
}); });
handleJoinDirect(meeting.room_url); onMeetingSelect(joinedMeeting);
} catch (err) { } catch (err) {
console.error("Failed to join upcoming meeting:", err); console.error("Failed to join upcoming meeting:", err);
} }
}; };
const handleJoinDirect = (roomUrl: string) => { const handleJoinDirect = (meeting: Meeting) => {
// Go directly to the meeting URL (Whereby/etc) // Navigate to local meeting page instead of external URL
window.open(roomUrl, "_blank"); onMeetingSelect(meeting);
}; };
const handleEndMeeting = async (meetingId: string) => { const handleEndMeeting = async (meetingId: string) => {
@@ -168,7 +168,7 @@ export default function MeetingSelection({
} }
// Generate display name for room // Generate display name for room
const displayName = room?.display_name || room?.name || roomName; const displayName = room?.name || roomName;
const roomTitle = const roomTitle =
displayName.endsWith("'s") || displayName.endsWith("s") displayName.endsWith("'s") || displayName.endsWith("s")
? `${displayName} Room` ? `${displayName} Room`
@@ -182,7 +182,7 @@ export default function MeetingSelection({
<Flex flexDir="column" minH="100vh"> <Flex flexDir="column" minH="100vh">
<MinimalHeader <MinimalHeader
roomName={roomName} roomName={roomName}
displayName={room?.display_name || room?.name} displayName={room?.name}
showLeaveButton={true} showLeaveButton={true}
onLeave={handleLeaveMeeting} onLeave={handleLeaveMeeting}
/> />
@@ -295,9 +295,9 @@ export default function MeetingSelection({
fontSize="lg" fontSize="lg"
px={8} px={8}
py={6} py={6}
onClick={() => handleJoinDirect(meeting.room_url)} onClick={() => handleJoinDirect(meeting)}
leftIcon={<Icon as={FaUsers} boxSize="20px" />}
> >
<Icon as={FaUsers} boxSize="20px" me={2} />
Join Now Join Now
</Button> </Button>
{isOwner && ( {isOwner && (
@@ -306,9 +306,9 @@ export default function MeetingSelection({
colorScheme="red" colorScheme="red"
size="md" size="md"
onClick={() => handleEndMeeting(meeting.id)} onClick={() => handleEndMeeting(meeting.id)}
isLoading={deactivateMeetingMutation.isPending} loading={deactivateMeetingMutation.isPending}
leftIcon={<Icon as={LuX} />}
> >
<Icon as={LuX} me={2} />
End Meeting End Meeting
</Button> </Button>
)} )}