Skip to content
This repository has been archived by the owner on Apr 15, 2024. It is now read-only.

Commit

Permalink
Merge pull request #56 from HybridPlanner/tg/disable-modification-whe…
Browse files Browse the repository at this point in the history
…n-meeting-ongoing

feat/meeting: Make the Edit button disappear when the meeting starts
  • Loading branch information
jvondermarck authored Dec 15, 2023
2 parents 6d42501 + 3fc1390 commit 22909b1
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 21 deletions.
41 changes: 23 additions & 18 deletions src/components/meeting/MeetingCard.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Meeting } from "@/types/Meeting";
import { Meeting, MeetingStatus } from "@/types/Meeting";
import classNames from "classnames";
import { format } from "date-fns";
import { LinkIcon, Pen, Trash2 } from "lucide-react";
Expand Down Expand Up @@ -37,7 +37,7 @@ export function MeetingCard({
{format(meeting.start_date, "LLL.").toUpperCase()}
</span>
<span className="text-gray-900 font-bold text-xl px-2 py-1 leading-4 text-center">
{meeting.start_date.getDate()}
{meeting.start_date.getDate()}
</span>
</div>
</div>
Expand Down Expand Up @@ -71,23 +71,28 @@ export function MeetingCard({
</Link>
)}

<button
type="button"
className="btn hover:text-blue-500 p-2 transition rounded-full hover:bg-gray-400 hover:bg-opacity-20"
aria-label="Update meeting"
onClick={() => onEditMeeting?.(meeting)}
>
<Pen className="w-5 h-5" />
</button>
{meeting?.status !== MeetingStatus.STARTED &&
<>
<button
type="button"
className="btn hover:text-blue-500 p-2 transition rounded-full hover:bg-gray-400 hover:bg-opacity-20"
aria-label="Update meeting"
onClick={() => onEditMeeting?.(meeting)}
>
<Pen className="w-5 h-5" />
</button>
<button
type="button"
className="btn hover:text-red-500 p-2 transition rounded-full hover:bg-gray-400 hover:bg-opacity-20"
aria-label="Delete meeting"
onClick={() => onDeleteMeeting?.(meeting)}
>
<Trash2 className="w-5 h-5" />
</button>
</>
}

<button
type="button"
className="btn hover:text-red-500 p-2 transition rounded-full hover:bg-gray-400 hover:bg-opacity-20"
aria-label="Delete meeting"
onClick={() => onDeleteMeeting?.(meeting)}
>
<Trash2 className="w-5 h-5" />
</button>

</div>
</div>
)}
Expand Down
7 changes: 5 additions & 2 deletions src/hooks/useMeetingUpdateModal.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { updateMeeting, getMeeting } from "@/api/meetings";
import { MeetingUpdateModal } from "@/components/meeting/MeetingUpdateModal";
import { Meeting } from "@/types/Meeting";
import { Meeting, MeetingStatus } from "@/types/Meeting";
import { useCallback, useRef, useState } from "react";

/**
Expand Down Expand Up @@ -35,7 +35,10 @@ export default function useMeetingUpdateModal({
ref={updateMeetingModalRef}
meeting={modalMeeting}
onUpdate={async (id, data) => {
await updateMeeting(id, data);
if(modalMeeting?.status !== MeetingStatus.STARTED) {
await updateMeeting(id, data);
}

if (updateCallback) {
updateCallback();
}
Expand Down
9 changes: 8 additions & 1 deletion src/types/Meeting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export interface Meeting {
attendees: { id: number; email: string }[];
publicUrl?: string;
started: boolean;
status?: MeetingStatus;
}

interface CreateMeeting {
Expand All @@ -30,4 +31,10 @@ export type MeetingEvent =
| { type: 'bubbleCreated'; id: number; meeting: Meeting }
| { type: 'updated'; id: number; meeting: Meeting }
| { type: 'cancelled'; id: number }
| { type: 'started'; id: number; url: string };
| { type: 'started'; id: number; url: string };

export enum MeetingStatus {
SCHEDULED = 'scheduled',
STARTED = 'started',
FINISHED = 'finished',
}

0 comments on commit 22909b1

Please sign in to comment.