summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <213943+nickvergessen@users.noreply.github.com>2020-03-27 08:31:57 +0100
committerGitHub <noreply@github.com>2020-03-27 08:31:57 +0100
commit9b7846dd766b00ab5f2d81353a9a3e955e83cab2 (patch)
tree36ab0274c9018c1900b0f7b1dc9678d915c77615
parentc0526d387854b937b23b60981b728ed26eb89104 (diff)
parente5c9b76362dac154ca5039321edc5439577a1349 (diff)
Merge pull request #3161 from nextcloud/techdebt/noid/combine-admin-settings
Combine the admin settings into one JS file so we watch less resources
-rw-r--r--appinfo/info.xml9
-rw-r--r--lib/Settings/Admin/AdminSettings.php127
-rw-r--r--lib/Settings/Admin/AllowedGroups.php70
-rw-r--r--lib/Settings/Admin/Commands.php81
-rw-r--r--lib/Settings/Admin/GeneralSettings.php76
-rw-r--r--lib/Settings/Admin/SignalingServer.php73
-rw-r--r--lib/Settings/Admin/StunServer.php79
-rw-r--r--lib/Settings/Admin/TurnServer.php70
-rw-r--r--src/CommandsSettings.js36
-rw-r--r--src/GeneralSettings.js36
-rw-r--r--src/SignalingServerSettings.js36
-rw-r--r--src/StunServerSettings.js36
-rw-r--r--src/TurnServerSettings.js36
-rw-r--r--src/components/AdminSettings/AllowedGroups.vue (renamed from src/views/AdminSettings/AllowedGroups.vue)0
-rw-r--r--src/components/AdminSettings/Commands.vue (renamed from src/views/AdminSettings/Commands.vue)0
-rw-r--r--src/components/AdminSettings/GeneralSettings.vue (renamed from src/views/AdminSettings/GeneralSettings.vue)0
-rw-r--r--src/components/AdminSettings/SignalingServers.vue (renamed from src/views/AdminSettings/SignalingServers.vue)0
-rw-r--r--src/components/AdminSettings/StunServers.vue (renamed from src/views/AdminSettings/StunServers.vue)0
-rw-r--r--src/components/AdminSettings/TurnServers.vue (renamed from src/views/AdminSettings/TurnServers.vue)0
-rw-r--r--src/mainAdminSettings.js (renamed from src/AllowedGroupsSettings.js)7
-rw-r--r--src/views/AdminSettings.vue54
-rw-r--r--templates/settings/admin-settings.php58
-rw-r--r--templates/settings/admin/allowed-groups.php13
-rw-r--r--templates/settings/admin/commands.php14
-rw-r--r--templates/settings/admin/general-settings.php10
-rw-r--r--templates/settings/admin/signaling-server.php20
-rw-r--r--templates/settings/admin/stun-server.php14
-rw-r--r--templates/settings/admin/turn-server.php14
-rw-r--r--tests/php/Settings/Admin/AdminSettingsTest.php157
-rw-r--r--tests/php/Settings/Admin/StunServerTest.php85
-rw-r--r--tests/php/Settings/Admin/TurnServerTest.php70
-rw-r--r--webpack.common.js7
32 files changed, 402 insertions, 886 deletions
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 96c5f6de1..58690804e 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -16,7 +16,7 @@ And in the works for the [coming versions](https://github.com/nextcloud/spreed/m
]]></description>
- <version>9.0.0-dev.1</version>
+ <version>9.0.0-dev.2</version>
<licence>agpl</licence>
<author>Daniel Calviño Sánchez</author>
@@ -85,12 +85,7 @@ And in the works for the [coming versions](https://github.com/nextcloud/spreed/m
</commands>
<settings>
- <admin>OCA\Talk\Settings\Admin\GeneralSettings</admin>
- <admin>OCA\Talk\Settings\Admin\AllowedGroups</admin>
- <admin>OCA\Talk\Settings\Admin\Commands</admin>
- <admin>OCA\Talk\Settings\Admin\SignalingServer</admin>
- <admin>OCA\Talk\Settings\Admin\StunServer</admin>
- <admin>OCA\Talk\Settings\Admin\TurnServer</admin>
+ <admin>OCA\Talk\Settings\Admin\AdminSettings</admin>
<admin-section>OCA\Talk\Settings\Admin\Section</admin-section>
</settings>
diff --git a/lib/Settings/Admin/AdminSettings.php b/lib/Settings/Admin/AdminSettings.php
new file mode 100644
index 000000000..36d0fd098
--- /dev/null
+++ b/lib/Settings/Admin/AdminSettings.php
@@ -0,0 +1,127 @@
+<?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\Settings\Admin;
+
+
+use OCA\Talk\Config;
+use OCA\Talk\Model\Command;
+use OCA\Talk\Participant;
+use OCA\Talk\Room;
+use OCA\Talk\Service\CommandService;
+use OCP\AppFramework\Http\TemplateResponse;
+use OCP\IConfig;
+use OCP\IInitialStateService;
+use OCP\Settings\ISettings;
+
+class AdminSettings implements ISettings {
+
+ /** @var Config */
+ private $talkConfig;
+ /** @var IConfig */
+ private $serverConfig;
+ /** @var CommandService */
+ private $commandService;
+ /** @var IInitialStateService */
+ private $initialStateService;
+
+ public function __construct(Config $talkConfig,
+ IConfig $serverConfig,
+ CommandService $commandService,
+ IInitialStateService $initialStateService) {
+ $this->talkConfig = $talkConfig;
+ $this->serverConfig = $serverConfig;
+ $this->commandService = $commandService;
+ $this->initialStateService = $initialStateService;
+ }
+
+ /**
+ * @return TemplateResponse
+ */
+ public function getForm(): TemplateResponse {
+ $this->initGeneralSettings();
+ $this->initAllowedGroups();
+ $this->initCommands();
+ $this->initStunServers();
+ $this->initTurnServers();
+ $this->initSignalingServers();
+
+ return new TemplateResponse('spreed', 'settings/admin-settings', [], '');
+ }
+
+ protected function initGeneralSettings(): void {
+ $this->initialStateService->provideInitialState('talk', 'start_calls', (int) $this->serverConfig->getAppValue('spreed', 'start_calls', Room::START_CALL_EVERYONE));
+ $this->initialStateService->provideInitialState('talk', 'default_group_notification', (int) $this->serverConfig->getAppValue('spreed', 'default_group_notification', Participant::NOTIFY_MENTION));
+ $this->initialStateService->provideInitialState('talk', 'conversations_files', (int) $this->serverConfig->getAppValue('spreed', 'conversations_files', '1'));
+ $this->initialStateService->provideInitialState('talk', 'conversations_files_public_shares', (int) $this->serverConfig->getAppValue('spreed', 'conversations_files_public_shares', '1'));
+ }
+
+ protected function initAllowedGroups(): void {
+ $this->initialStateService->provideInitialState('talk', 'allowed_groups', $this->talkConfig->getAllowedGroupIds());
+ }
+
+ protected function initCommands(): void {
+ $commands = $this->commandService->findAll();
+
+ $result = array_map(function(Command $command) {
+ return $command->asArray();
+ }, $commands);
+
+ $this->initialStateService->provideInitialState('talk', 'commands', $result);
+ }
+
+ protected function initStunServers(): void {
+ $this->initialStateService->provideInitialState('talk', 'stun_servers', $this->talkConfig->getStunServers());
+ $this->initialStateService->provideInitialState('talk', 'has_internet_connection', $this->serverConfig->getSystemValueBool('has_internet_connection', true));
+ }
+
+ protected function initTurnServers(): void {
+ $this->initialStateService->provideInitialState('talk', 'turn_servers', $this->talkConfig->getTurnServers());
+ }
+
+ protected function initSignalingServers(): void {
+ $this->initialStateService->provideInitialState('talk', 'signaling_servers', [
+ 'servers' => $this->talkConfig->getSignalingServers(),
+ 'secret' => $this->talkConfig->getSignalingSecret(),
+ 'hideWarning' => $this->talkConfig->getHideSignalingWarning(),
+ ]);
+ }
+
+ /**
+ * @return string the section ID, e.g. 'sharing'
+ */
+ public function getSection(): string {
+ return 'talk';
+ }
+
+ /**
+ * @return int whether the form should be rather on the top or bottom of
+ * the admin section. The forms are arranged in ascending order of the
+ * priority values. It is required to return a value between 0 and 100.
+ *
+ * E.g.: 70
+ */
+ public function getPriority(): int {
+ return 0;
+ }
+
+}
diff --git a/lib/Settings/Admin/AllowedGroups.php b/lib/Settings/Admin/AllowedGroups.php
deleted file mode 100644
index b969bfe18..000000000
--- a/lib/Settings/Admin/AllowedGroups.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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\Settings\Admin;
-
-
-use OCA\Talk\Config;
-use OCP\AppFramework\Http\TemplateResponse;
-use OCP\IInitialStateService;
-use OCP\Settings\ISettings;
-
-class AllowedGroups implements ISettings {
-
- /** @var Config */
- private $config;
- /** @var IInitialStateService */
- private $initialStateService;
-
- public function __construct(Config $config,
- IInitialStateService $initialStateService) {
- $this->config = $config;
- $this->initialStateService = $initialStateService;
- }
-
- /**
- * @return TemplateResponse
- */
- public function getForm(): TemplateResponse {
- $this->initialStateService->provideInitialState('talk', 'allowed_groups', $this->config->getAllowedGroupIds());
- return new TemplateResponse('spreed', 'settings/admin/allowed-groups', [], '');
- }
-
- /**
- * @return string the section ID, e.g. 'sharing'
- */
- public function getSection(): string {
- return 'talk';
- }
-
- /**
- * @return int whether the form should be rather on the top or bottom of
- * the admin section. The forms are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
- *
- * E.g.: 70
- */
- public function getPriority(): int {
- return 10;
- }
-
-}
diff --git a/lib/Settings/Admin/Commands.php b/lib/Settings/Admin/Commands.php
deleted file mode 100644
index af1edda27..000000000
--- a/lib/Settings/Admin/Commands.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?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\Settings\Admin;
-
-
-use OCA\Talk\Config;
-use OCA\Talk\Model\Command;
-use OCA\Talk\Service\CommandService;
-use OCP\AppFramework\Http\TemplateResponse;
-use OCP\IInitialStateService;
-use OCP\Settings\ISettings;
-
-class Commands implements ISettings {
-
- /** @var CommandService */
- private $commandService;
- /** @var IInitialStateService */
- private $initialStateService;
-
- public function __construct(CommandService $commandService,
- IInitialStateService $initialStateService) {
- $this->commandService = $commandService;
- $this->initialStateService = $initialStateService;
- }
-
-
- /**
- * @return TemplateResponse
- */
- public function getForm(): TemplateResponse {
-
- $commands = $this->commandService->findAll();
-
- $result = array_map(function(Command $command) {
- return $command->asArray();
- }, $commands);
-
- $this->initialStateService->provideInitialState('talk', 'commands', $result);
-
- return new TemplateResponse('spreed', 'settings/admin/commands', [], '');
- }
-
- /**
- * @return string the section ID, e.g. 'sharing'
- */
- public function getSection(): string {
- return 'talk';
- }
-
- /**
- * @return int whether the form should be rather on the top or bottom of
- * the admin section. The forms are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
- *
- * E.g.: 70
- */
- public function getPriority(): int {
- return 60;
- }
-
-}
diff --git a/lib/Settings/Admin/GeneralSettings.php b/lib/Settings/Admin/GeneralSettings.php
deleted file mode 100644
index aea1b602d..000000000
--- a/lib/Settings/Admin/GeneralSettings.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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\Settings\Admin;
-
-
-use OCA\Talk\Config;
-use OCA\Talk\Participant;
-use OCA\Talk\Room;
-use OCP\AppFramework\Http\TemplateResponse;
-use OCP\IConfig;
-use OCP\IInitialStateService;
-use OCP\Settings\ISettings;
-
-class GeneralSettings implements ISettings {
-
- /** @var IConfig */
- private $config;
- /** @var IInitialStateService */
- private $initialStateService;
-
- public function __construct(IConfig $config,
- IInitialStateService $initialStateService) {
- $this->config = $config;
- $this->initialStateService = $initialStateService;
- }
-
- /**
- * @return TemplateResponse
- */
- public function getForm(): TemplateResponse {
- $this->initialStateService->provideInitialState('talk', 'start_calls', (int) $this->config->getAppValue('spreed', 'start_calls', Room::START_CALL_EVERYONE));
- $this->initialStateService->provideInitialState('talk', 'default_group_notification', (int) $this->config->getAppValue('spreed', 'default_group_notification', Participant::NOTIFY_MENTION));
- $this->initialStateService->provideInitialState('talk', 'conversations_files', (int) $this->config->getAppValue('spreed', 'conversations_files', '1'));
- $this->initialStateService->provideInitialState('talk', 'conversations_files_public_shares', (int) $this->config->getAppValue('spreed', 'conversations_files_public_shares', '1'));
- return new TemplateResponse('spreed', 'settings/admin/general-settings', [], '');
- }
-
- /**
- * @return string the section ID, e.g. 'sharing'
- */
- public function getSection(): string {
- return 'talk';
- }
-
- /**
- * @return int whether the form should be rather on the top or bottom of
- * the admin section. The forms are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
- *
- * E.g.: 70
- */
- public function getPriority(): int {
- return 0;
- }
-
-}
diff --git a/lib/Settings/Admin/SignalingServer.php b/lib/Settings/Admin/SignalingServer.php
deleted file mode 100644
index 35bc9867f..000000000
--- a/lib/Settings/Admin/SignalingServer.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-declare(strict_types=1);
-/**
- * @author Joachim Bauch <mail@joachim-bauch.de>
- *
- * @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\Settings\Admin;
-
-
-use OCA\Talk\Config;
-use OCP\AppFramework\Http\TemplateResponse;
-use OCP\IInitialStateService;
-use OCP\Settings\ISettings;
-
-class SignalingServer implements ISettings {
-
- /** @var Config */
- private $config;
- /** @var IInitialStateService */
- private $initialStateService;
-
- public function __construct(Config $config,
- IInitialStateService $initialStateService) {
- $this->config = $config;
- $this->initialStateService = $initialStateService;
- }
-
- /**
- * @return TemplateResponse
- */
- public function getForm(): TemplateResponse {
- $this->initialStateService->provideInitialState('talk', 'signaling_servers', [
- 'servers' => $this->config->getSignalingServers(),
- 'secret' => $this->config->getSignalingSecret(),
- 'hideWarning' => $this->config->getHideSignalingWarning(),
- ]);
- return new TemplateResponse('spreed', 'settings/admin/signaling-server', [], '');
- }
- /**
- * @return string the section ID, e.g. 'sharing'
- */
- public function getSection(): string {
- return 'talk';
- }
-
- /**
- * @return int whether the form should be rather on the top or bottom of
- * the admin section. The forms are arranged in ascending order of the
- * priority values. It is required to retur