* feat: add Video Options dropdown with meeting session details - Add Video Options dropdown to BookingListItem for Daily video bookings - Move recording actions from TableActions to new dropdown - Add meeting session details feature with participant info, join times, duration - Create new tRPC endpoint for fetching Daily.co meeting information - Add getMeetingInformation method to VideoApiAdapter - Create MeetingSessionDetailsDialog component following ViewRecordingsDialog pattern - Add translation strings for new UI elements - Update VideoApiAdapter TypeScript interface Co-Authored-By: udit@cal.com <udit222001@gmail.com> * fix: bugs and types * Update packages/app-store/dailyvideo/lib/VideoApiAdapter.ts Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update packages/app-store/dailyvideo/lib/VideoApiAdapter.ts Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
import type {
|
|
TSubmitBatchProcessorJobRes,
|
|
batchProcessorBody,
|
|
TGetTranscriptAccessLink,
|
|
} from "@calcom/app-store/dailyvideo/zod";
|
|
import type { GetRecordingsResponseSchema, GetAccessLinkResponseSchema } from "@calcom/prisma/zod-utils";
|
|
|
|
import type { EventBusyDate } from "./Calendar";
|
|
import type { CredentialPayload } from "./Credential";
|
|
|
|
export interface VideoCallData {
|
|
type: string;
|
|
id: string;
|
|
password: string;
|
|
url: string;
|
|
}
|
|
|
|
// VideoApiAdapter is defined by the Video App. The App currently can choose to not define it. So, consider in type that VideoApiAdapter can be undefined.
|
|
export type VideoApiAdapter =
|
|
| {
|
|
createMeeting(event: CalendarEvent): Promise<VideoCallData>;
|
|
|
|
updateMeeting(bookingRef: PartialReference, event: CalendarEvent): Promise<VideoCallData>;
|
|
|
|
deleteMeeting(uid: string): Promise<unknown>;
|
|
|
|
getAvailability(dateFrom?: string, dateTo?: string): Promise<EventBusyDate[]>;
|
|
|
|
getRecordings?(roomName: string): Promise<GetRecordingsResponseSchema>;
|
|
|
|
getRecordingDownloadLink?(recordingId: string): Promise<GetAccessLinkResponseSchema>;
|
|
|
|
createInstantCalVideoRoom?(endTime: string): Promise<VideoCallData>;
|
|
|
|
getAllTranscriptsAccessLinkFromRoomName?(roomName: string): Promise<Array<string>>;
|
|
|
|
getAllTranscriptsAccessLinkFromMeetingId?(meetingId: string): Promise<Array<string>>;
|
|
|
|
submitBatchProcessorJob?(body: batchProcessorBody): Promise<TSubmitBatchProcessorJobRes>;
|
|
|
|
getTranscriptsAccessLinkFromRecordingId?(
|
|
recordingId: string
|
|
): Promise<TGetTranscriptAccessLink["transcription"] | { message: string }>;
|
|
|
|
checkIfRoomNameMatchesInRecording?(roomName: string, recordingId: string): Promise<boolean>;
|
|
|
|
getMeetingInformation?(roomName: string): Promise<any>;
|
|
}
|
|
| undefined;
|
|
|
|
export type VideoApiAdapterFactory = (credential: CredentialPayload) => VideoApiAdapter;
|