mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
Compare commits
2 Commits
feat/conse
...
daily-reco
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf377c7d41 | ||
|
|
e5ab76de88 |
@@ -91,6 +91,10 @@ class MeetingTokenProperties(BaseModel):
|
|||||||
start_cloud_recording: bool = Field(
|
start_cloud_recording: bool = Field(
|
||||||
default=False, description="Automatically start cloud recording on join"
|
default=False, description="Automatically start cloud recording on join"
|
||||||
)
|
)
|
||||||
|
start_cloud_recording_opts: dict | None = Field(
|
||||||
|
default=None,
|
||||||
|
description="Options for startRecording when start_cloud_recording is true (e.g., maxDuration)",
|
||||||
|
)
|
||||||
enable_recording_ui: bool = Field(
|
enable_recording_ui: bool = Field(
|
||||||
default=True, description="Show recording controls in UI"
|
default=True, description="Show recording controls in UI"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -181,11 +181,17 @@ class DailyClient(VideoPlatformClient):
|
|||||||
enable_recording_ui: bool,
|
enable_recording_ui: bool,
|
||||||
user_id: NonEmptyString | None = None,
|
user_id: NonEmptyString | None = None,
|
||||||
is_owner: bool = False,
|
is_owner: bool = False,
|
||||||
|
max_recording_duration_seconds: int | None = None,
|
||||||
) -> NonEmptyString:
|
) -> NonEmptyString:
|
||||||
|
start_cloud_recording_opts = None
|
||||||
|
if start_cloud_recording and max_recording_duration_seconds:
|
||||||
|
start_cloud_recording_opts = {"maxDuration": max_recording_duration_seconds}
|
||||||
|
|
||||||
properties = MeetingTokenProperties(
|
properties = MeetingTokenProperties(
|
||||||
room_name=room_name,
|
room_name=room_name,
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
start_cloud_recording=start_cloud_recording,
|
start_cloud_recording=start_cloud_recording,
|
||||||
|
start_cloud_recording_opts=start_cloud_recording_opts,
|
||||||
enable_recording_ui=enable_recording_ui,
|
enable_recording_ui=enable_recording_ui,
|
||||||
is_owner=is_owner,
|
is_owner=is_owner,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -567,12 +567,19 @@ async def rooms_join_meeting(
|
|||||||
|
|
||||||
if meeting.platform == "daily" and user_id is not None:
|
if meeting.platform == "daily" and user_id is not None:
|
||||||
client = create_platform_client(meeting.platform)
|
client = create_platform_client(meeting.platform)
|
||||||
|
end_date = meeting.end_date
|
||||||
|
if end_date.tzinfo is None:
|
||||||
|
end_date = end_date.replace(tzinfo=timezone.utc)
|
||||||
|
remaining_seconds = min(
|
||||||
|
3 * 60 * 60, int((end_date - current_time).total_seconds())
|
||||||
|
)
|
||||||
token = await client.create_meeting_token(
|
token = await client.create_meeting_token(
|
||||||
meeting.room_name,
|
meeting.room_name,
|
||||||
start_cloud_recording=meeting.recording_type == "cloud",
|
start_cloud_recording=meeting.recording_type == "cloud",
|
||||||
enable_recording_ui=meeting.recording_type == "local",
|
enable_recording_ui=meeting.recording_type == "local",
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
is_owner=user_id == room.user_id,
|
is_owner=user_id == room.user_id,
|
||||||
|
max_recording_duration_seconds=remaining_seconds,
|
||||||
)
|
)
|
||||||
meeting = meeting.model_copy()
|
meeting = meeting.model_copy()
|
||||||
meeting.room_url = add_query_param(meeting.room_url, "t", token)
|
meeting.room_url = add_query_param(meeting.room_url, "t", token)
|
||||||
|
|||||||
Reference in New Issue
Block a user