Browse Source

Add capability to toggle recording

Signed-off-by: Vitor Mattos <vitor@php.rio>
pull/8445/head
Vitor Mattos 3 years ago
parent
commit
2642ca857b
No known key found for this signature in database GPG Key ID: B7AB4B76A7CA7318
  1. 1
      docs/capabilities.md
  2. 4
      lib/Capabilities.php
  3. 4
      lib/Config.php
  4. 31
      tests/php/CapabilitiesTest.php

1
docs/capabilities.md

@ -110,3 +110,4 @@ title: Capabilities
* `breakout-rooms-v1` - Whether breakout-rooms API v1 is available
* `config => call => breakout-rooms` - Whether breakout rooms are enabled on this instance
* `avatar` - Avatar of conversation
* `recording-v1` - Call recording. Only available if app setting `call_recording` is equal to `yes`.

4
lib/Capabilities.php

@ -146,6 +146,10 @@ class Capabilities implements IPublicCapability {
$capabilities['features'][] = 'reactions';
}
if ($this->talkConfig->isBreakoutRoomsEnabled()) {
$capabilities['features'][] = 'recording-v1';
}
if ($user instanceof IUser) {
$capabilities['config']['attachments']['folder'] = $this->talkConfig->getAttachmentFolder($user->getUID());
$capabilities['config']['chat']['read-privacy'] = $this->talkConfig->getUserReadPrivacy($user->getUID());

4
lib/Config.php

@ -136,6 +136,10 @@ class Config {
return $this->canEnableSIP[$user->getUID()];
}
public function isBreakoutRoomsEnabled(): bool {
return $this->config->getAppValue('spreed', 'call_recording', 'yes') === 'yes';
}
public function isDisabledForUser(IUser $user): bool {
$allowedGroups = $this->getAllowedTalkGroupIds();
if (empty($allowedGroups)) {

31
tests/php/CapabilitiesTest.php

@ -344,4 +344,35 @@ class CapabilitiesTest extends TestCase {
$data = $capabilities->getCapabilities();
$this->assertEquals('this-is-the-key', $data['spreed']['config']['signaling']['hello-v2-token-key']);
}
/**
* @dataProvider dataTestCapabilityRecording
*/
public function testCapabilityRecording($enabled, $expected): void {
$capabilities = new Capabilities(
$this->serverConfig,
$this->talkConfig,
$this->commentsManager,
$this->userSession,
$this->appManager
);
$this->talkConfig->expects($this->once())
->method('isBreakoutRoomsEnabled')
->willReturn($enabled === 'yes');
$data = $capabilities->getCapabilities();
if ($expected === true) {
$this->assertContains('recording-v1', $data['spreed']['features']);
} else {
$this->assertNotContains('recording-v1', $data['spreed']['features']);
}
}
public function dataTestCapabilityRecording(): array {
return [
['yes', true],
['no', false],
];
}
}
Loading…
Cancel
Save