Browse Source
feat(events): Emitted typed events for room modifications
feat(events): Emitted typed events for room modifications
Signed-off-by: Joas Schilling <coding@schilljs.com>pull/10731/head
No known key found for this signature in database
GPG Key ID: 74434EFE0D2E2205
11 changed files with 385 additions and 7 deletions
-
42lib/Events/ACallEndedForEveryoneEvent.php
-
51lib/Events/ALobbyModifiedEvent.php
-
76lib/Events/ARoomModifiedEvent.php
-
27lib/Events/BeforeCallEndedForEveryoneEvent.php
-
27lib/Events/BeforeLobbyModifiedEvent.php
-
2lib/Events/BeforeRoomModifiedEvent.php
-
57lib/Events/CallEndedForEveryoneEvent.php
-
27lib/Events/LobbyModifiedEvent.php
-
2lib/Events/RoomModifiedEvent.php
-
6lib/Service/ParticipantService.php
-
75lib/Service/RoomService.php
@ -0,0 +1,42 @@ |
|||
<?php |
|||
|
|||
declare(strict_types=1); |
|||
/** |
|||
* @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
*/ |
|||
|
|||
namespace OCA\Talk\Events; |
|||
|
|||
use OCA\Talk\Participant; |
|||
use OCA\Talk\Room; |
|||
|
|||
abstract class ACallEndedForEveryoneEvent extends ARoomModifiedEvent { |
|||
public function __construct( |
|||
Room $room, |
|||
?Participant $actor = null, |
|||
) { |
|||
parent::__construct( |
|||
$room, |
|||
self::PROPERTY_IN_CALL, |
|||
Participant::FLAG_DISCONNECTED, |
|||
null, |
|||
$actor |
|||
); |
|||
} |
|||
} |
@ -0,0 +1,51 @@ |
|||
<?php |
|||
|
|||
declare(strict_types=1); |
|||
/** |
|||
* @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
*/ |
|||
|
|||
namespace OCA\Talk\Events; |
|||
|
|||
use OCA\Talk\Room; |
|||
|
|||
abstract class ALobbyModifiedEvent extends ARoomModifiedEvent { |
|||
public function __construct( |
|||
Room $room, |
|||
string|int $newValue, |
|||
string|int|null $oldValue, |
|||
protected ?\DateTime $lobbyTimer, |
|||
protected bool $timerReached, |
|||
) { |
|||
parent::__construct( |
|||
$room, |
|||
self::PROPERTY_LOBBY, |
|||
$newValue, |
|||
$oldValue, |
|||
); |
|||
} |
|||
|
|||
public function getLobbyTimer(): ?\DateTime { |
|||
return $this->lobbyTimer; |
|||
} |
|||
|
|||
public function isTimerReached(): bool { |
|||
return $this->timerReached; |
|||
} |
|||
} |
@ -0,0 +1,76 @@ |
|||
<?php |
|||
|
|||
declare(strict_types=1); |
|||
/** |
|||
* @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
*/ |
|||
|
|||
namespace OCA\Talk\Events; |
|||
|
|||
use OCA\Talk\Participant; |
|||
use OCA\Talk\Room; |
|||
|
|||
abstract class ARoomModifiedEvent extends RoomEvent { |
|||
public const PROPERTY_AVATAR = 'avatar'; |
|||
public const PROPERTY_BREAKOUT_ROOM_MODE = 'breakoutRoomMode'; |
|||
public const PROPERTY_BREAKOUT_ROOM_STATUS = 'breakoutRoomStatus'; |
|||
public const PROPERTY_CALL_PERMISSIONS = 'callPermissions'; |
|||
public const PROPERTY_CALL_RECORDING = 'callRecording'; |
|||
public const PROPERTY_DEFAULT_PERMISSIONS = 'defaultPermissions'; |
|||
public const PROPERTY_DESCRIPTION = 'description'; |
|||
public const PROPERTY_IN_CALL = 'inCall'; |
|||
public const PROPERTY_LISTABLE = 'listable'; |
|||
public const PROPERTY_LOBBY = 'lobby'; |
|||
public const PROPERTY_MESSAGE_EXPIRATION = 'messageExpiration'; |
|||
public const PROPERTY_NAME = 'name'; |
|||
public const PROPERTY_PASSWORD = 'password'; |
|||
public const PROPERTY_READ_ONLY = 'readOnly'; |
|||
public const PROPERTY_RECORDING_CONSENT = 'recordingConsent'; |
|||
public const PROPERTY_SIP_ENABLED = 'sipEnabled'; |
|||
public const PROPERTY_TYPE = 'type'; |
|||
|
|||
/** |
|||
* @param self::PROPERTY_* $property |
|||
*/ |
|||
public function __construct( |
|||
Room $room, |
|||
protected string $property, |
|||
protected string|int $newValue, |
|||
protected string|int|null $oldValue = null, |
|||
protected ?Participant $actor = null, |
|||
) { |
|||
parent::__construct($room); |
|||
} |
|||
|
|||
public function getProperty(): string { |
|||
return $this->property; |
|||
} |
|||
|
|||
public function getNewValue(): string|int { |
|||
return $this->newValue; |
|||
} |
|||
|
|||
public function getOldValue(): string|int|null { |
|||
return $this->oldValue; |
|||
} |
|||
|
|||
public function getActor(): ?Participant { |
|||
return $this->actor; |
|||
} |
|||
} |
@ -0,0 +1,27 @@ |
|||
<?php |
|||
|
|||
declare(strict_types=1); |
|||
/** |
|||
* @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
*/ |
|||
|
|||
namespace OCA\Talk\Events; |
|||
|
|||
class BeforeCallEndedForEveryoneEvent extends ACallEndedForEveryoneEvent { |
|||
} |
@ -0,0 +1,27 @@ |
|||
<?php |
|||
|
|||
declare(strict_types=1); |
|||
/** |
|||
* @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
*/ |
|||
|
|||
namespace OCA\Talk\Events; |
|||
|
|||
class BeforeLobbyModifiedEvent extends ALobbyModifiedEvent { |
|||
} |
@ -0,0 +1,57 @@ |
|||
<?php |
|||
|
|||
declare(strict_types=1); |
|||
/** |
|||
* @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
*/ |
|||
|
|||
namespace OCA\Talk\Events; |
|||
|
|||
use OCA\Talk\Participant; |
|||
use OCA\Talk\Room; |
|||
|
|||
class CallEndedForEveryoneEvent extends ACallEndedForEveryoneEvent { |
|||
public function __construct( |
|||
Room $room, |
|||
?Participant $actor = null, |
|||
/** @var string[] */ |
|||
protected array $sessionIds = [], |
|||
/** @var string[] */ |
|||
protected array $userIds = [], |
|||
) { |
|||
parent::__construct( |
|||
$room, |
|||
$actor |
|||
); |
|||
} |
|||
|
|||
/** |
|||
* @return string[] |
|||
*/ |
|||
public function getSessionIds(): array { |
|||
return $this->sessionIds; |
|||
} |
|||
|
|||
/** |
|||
* @return string[] |
|||
*/ |
|||
public function getUserIds(): array { |
|||
return $this->userIds; |
|||
} |
|||
} |
@ -0,0 +1,27 @@ |
|||
<?php |
|||
|
|||
declare(strict_types=1); |
|||
/** |
|||
* @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
*/ |
|||
|
|||
namespace OCA\Talk\Events; |
|||
|
|||
class LobbyModifiedEvent extends ALobbyModifiedEvent { |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue