From 7cb5b87311590609a6754d970aefe842a4d8a252 Mon Sep 17 00:00:00 2001 From: transcaffeine Date: Thu, 8 Aug 2024 23:16:22 +0200 Subject: [PATCH] fix: set per-user instead of globally --- lib/Controller/SettingsController.php | 11 +++++++---- lib/Settings/AppSettings.php | 20 ++++++++++---------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php index 82e0699..82e49b4 100644 --- a/lib/Controller/SettingsController.php +++ b/lib/Controller/SettingsController.php @@ -16,20 +16,23 @@ use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\Attribute\NoCSRFRequired; class SettingsController extends Controller { - public function __construct($appName, IRequest $request, private AppSettings $appSettings) { + + private $userId; + + public function __construct($appName, IRequest $request, private AppSettings $appSettings, $userId) { parent::__construct($appName, $request); } #[NoAdminRequired] #[NoCSRFRequired] public function get(): JSONResponse { - return $this->makeJSONResponse(fn () => $this->appSettings->getAll()); + return $this->makeJSONResponse(fn () => $this->appSettings->getAll($this->userId)); } #[NoAdminRequired] public function set(string $folderVariant, string $buttonVariant): JSONResponse { - $this->appSettings->set($folderVariant, $buttonVariant); - return $this->makeJSONResponse(fn () => $this->appSettings->getAll()); + $this->appSettings->set($this->userId, $folderVariant, $buttonVariant); + return $this->makeJSONResponse(fn () => $this->appSettings->getAll($this->userId)); } protected function makeJSONResponse(Closure $closure): JSONResponse { diff --git a/lib/Settings/AppSettings.php b/lib/Settings/AppSettings.php index ceb9a47..31b7829 100644 --- a/lib/Settings/AppSettings.php +++ b/lib/Settings/AppSettings.php @@ -12,23 +12,23 @@ class AppSettings { public function __construct(private IConfig $config) { } - public function getStringSetting(string $key, string $default = ''): string { - return $this->config->getAppValue(AppConstants::APP_ID, $key) ?: $default; + public function getStringSetting($userId, string $key, string $default = ''): string { + return $this->config->getUserValue(AppConstants::APP_ID, $userId, $key) ?: $default; } - public function setStringSetting(string $key, string $value): void { - $this->config->setAppValue(AppConstants::APP_ID, $key, $value); + public function setStringSetting($userId, string $key, string $value): void { + $this->config->setUserValue(AppConstants::APP_ID, $userId, $key, $value); } - public function getAll(): array { + public function getAll($userId): array { return [ - AppSettings::FOLDER_VARIANT => $this->getStringSetting(AppSettings::FOLDER_VARIANT, 'pride'), - AppSettings::BUTTON_VARIANT => $this->getStringSetting(AppSettings::BUTTON_VARIANT, 'trans'), + AppSettings::FOLDER_VARIANT => $this->getStringSetting($userId, AppSettings::FOLDER_VARIANT, 'pride'), + AppSettings::BUTTON_VARIANT => $this->getStringSetting($userId, AppSettings::BUTTON_VARIANT, 'trans'), ]; } - public function set($folder, $button): void { - $this->setStringSetting(AppSettings::FOLDER_VARIANT, $folder); - $this->setStringSetting(AppSettings::BUTTON_VARIANT, $button); + public function set($userId, $folder, $button): void { + $this->setStringSetting($userId, AppSettings::FOLDER_VARIANT, $folder); + $this->setStringSetting($userId, AppSettings::BUTTON_VARIANT, $button); } }