Limit audio rooms to Twitter Spaces features and fix live toolbar UX.
Deploy Ladill Meet / deploy (push) Successful in 1m3s
Deploy Ladill Meet / deploy (push) Successful in 1m3s
Block breakouts, chat, Q&A, and other meeting-only tools in spaces, hide video controls for audio-only rooms, and stabilize mobile nav and toolbar layout. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1214,6 +1214,98 @@ class MeetWebTest extends TestCase
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_space_host_cannot_create_breakouts(): void
|
||||
{
|
||||
$room = Room::create([
|
||||
'owner_ref' => $this->user->public_id,
|
||||
'organization_id' => $this->organization->id,
|
||||
'host_user_ref' => $this->user->public_id,
|
||||
'title' => 'Leadership space',
|
||||
'type' => 'space',
|
||||
'status' => 'live',
|
||||
'scheduled_at' => now()->addHour(),
|
||||
'timezone' => 'UTC',
|
||||
'settings' => array_merge(config('meet.default_settings'), [
|
||||
'audio_only' => true,
|
||||
]),
|
||||
]);
|
||||
|
||||
$session = Session::create([
|
||||
'owner_ref' => $this->user->public_id,
|
||||
'room_id' => $room->id,
|
||||
'media_room_name' => 'meet-'.$room->uuid,
|
||||
'status' => 'live',
|
||||
'session_mode' => 'live',
|
||||
'started_at' => now(),
|
||||
]);
|
||||
|
||||
$host = \App\Models\Participant::create([
|
||||
'owner_ref' => $this->user->public_id,
|
||||
'session_id' => $session->id,
|
||||
'user_ref' => $this->user->public_id,
|
||||
'display_name' => 'Host',
|
||||
'role' => 'host',
|
||||
'status' => 'joined',
|
||||
'joined_at' => now(),
|
||||
]);
|
||||
|
||||
$this->actingAs($this->user)
|
||||
->withSession(["meet.participant.{$session->uuid}" => $host->uuid])
|
||||
->postJson('/room/'.$session->uuid.'/breakouts', ['count' => 2])
|
||||
->assertStatus(422);
|
||||
}
|
||||
|
||||
public function test_space_live_room_view_omits_meeting_only_features(): void
|
||||
{
|
||||
config([
|
||||
'meet.media.livekit.api_key' => 'APIxxxxxxxxxxxxxxxx',
|
||||
'meet.media.livekit.api_secret' => 'secretsecretsecretsecretsecret12',
|
||||
]);
|
||||
|
||||
$room = Room::create([
|
||||
'owner_ref' => $this->user->public_id,
|
||||
'organization_id' => $this->organization->id,
|
||||
'host_user_ref' => $this->user->public_id,
|
||||
'title' => 'Leadership space',
|
||||
'type' => 'space',
|
||||
'status' => 'live',
|
||||
'scheduled_at' => now()->addHour(),
|
||||
'timezone' => 'UTC',
|
||||
'settings' => array_merge(config('meet.default_settings'), [
|
||||
'audio_only' => true,
|
||||
]),
|
||||
]);
|
||||
|
||||
$session = Session::create([
|
||||
'owner_ref' => $this->user->public_id,
|
||||
'room_id' => $room->id,
|
||||
'media_room_name' => 'meet-'.$room->uuid,
|
||||
'status' => 'live',
|
||||
'session_mode' => 'live',
|
||||
'started_at' => now(),
|
||||
]);
|
||||
|
||||
$host = \App\Models\Participant::create([
|
||||
'owner_ref' => $this->user->public_id,
|
||||
'session_id' => $session->id,
|
||||
'user_ref' => $this->user->public_id,
|
||||
'display_name' => 'Host',
|
||||
'role' => 'host',
|
||||
'status' => 'joined',
|
||||
'joined_at' => now(),
|
||||
]);
|
||||
|
||||
$response = $this->actingAs($this->user)
|
||||
->withSession(["meet.participant.{$session->uuid}" => $host->uuid])
|
||||
->get('/room/'.$session->uuid);
|
||||
|
||||
$response->assertOk();
|
||||
$response->assertSee('data-is-space="1"', false);
|
||||
$response->assertDontSee('Start breakouts', false);
|
||||
$response->assertDontSee('Share files', false);
|
||||
$response->assertDontSee('View the room lineup from Events', false);
|
||||
}
|
||||
|
||||
public function test_breakouts_exclude_host_and_enable_meeting_mode_for_attendees(): void
|
||||
{
|
||||
config([
|
||||
|
||||
Reference in New Issue
Block a user