config = $config; $this->userId = $userId; $this->l = $l; } private function getSetting(string $key, string $name, $default): JSONResponse { try { $userValue = $this->config->getUserValue( $this->userId, $this->appName, $key, $default ); } catch (Exception $e) { Util::writeLog('radio', $e->getMessage(), Util::ERROR); return new JSONResponse([], Http::STATUS_INTERNAL_SERVER_ERROR); } return new JSONResponse([$name => $userValue], Http::STATUS_OK); } private function setSetting($key, $value): JSONResponse { try { $this->config->setUserValue( $this->userId, $this->appName, $key, $value ); } catch (Exception $e) { return new JSONResponse(['status' => 'error'], Http::STATUS_INTERNAL_SERVER_ERROR); } return new JSONResponse(['status' => 'success'], Http::STATUS_OK); } /** * set menu state * * @param string $menuState * @return JSONResponse * * @NoAdminRequired */ public function setMenuState($menuState = ""): JSONResponse { if ($menuState == 'SEARCH') { return new JSONResponse(['status' => 'success'], Http::STATUS_OK); }; $legalArguments = ['TOP', 'RECENT', 'NEW', 'FAVORITES', 'CATEGORIES']; if (!in_array($menuState, $legalArguments)) { return new JSONResponse(['status' => 'error'], Http::STATUS_BAD_REQUEST); } return $this->setSetting( 'menuState', $menuState ); } /** * get menu state * * @return JSONResponse * * @NoAdminRequired */ public function getMenuState(): JSONResponse { return $this->getSetting('menuState', 'menuState', 'TOP'); } /** * set player volume * * @param string $playerVolume * @return JSONResponse * * @NoAdminRequired */ public function setVolumeState($volumeState = "0.5"): JSONResponse { return $this->setSetting( 'volumeState', $volumeState ); } /** * get player volume * * @return JSONResponse * * @NoAdminRequired */ public function getVolumeState(): JSONResponse { return $this->getSetting('volumeState', 'volumeState', 0.5); } }