diff --git a/appinfo/info.xml b/appinfo/info.xml
index 0c3dd72..6a8902c 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -25,4 +25,12 @@
radio.page.index
+
+
+ OCA\Radio\Activity\Setting
+
+
+ OCA\Radio\Activity\Provider
+
+
diff --git a/appinfo/routes.php b/appinfo/routes.php
index 27d8690..2ee2191 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -27,12 +27,17 @@ return [
'radio_api' => ['url' => '/api/0.1/radio']
],
'routes' => [
+ // Web page templates
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
['name' => 'page#index', 'url' => '/top', 'verb' => 'GET', 'postfix' => 'top'],
['name' => 'page#index', 'url' => '/recent', 'verb' => 'GET', 'postfix' => 'recent'],
['name' => 'page#index', 'url' => '/new', 'verb' => 'GET', 'postfix' => 'new'],
['name' => 'page#index', 'url' => '/favorites', 'verb' => 'GET', 'postfix' => 'favorites'],
['name' => 'page#index', 'url' => '/categories', 'verb' => 'GET', 'postfix' => 'categories'],
+ // Settings
+ ['name' => 'settings#set_menu_state', 'url' => '/settings/menuState', 'verb' => 'POST'],
+ ['name' => 'settings#get_menu_state', 'url' => '/settings/menuState', 'verb' => 'GET'],
+ // Api
['name' => 'radio_api#preflighted_cors', 'url' => '/api/0.1/{path}',
'verb' => 'OPTIONS', 'requirements' => ['path' => '.+']]
]
diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php
index 4f9a252..57075e0 100644
--- a/lib/AppInfo/Application.php
+++ b/lib/AppInfo/Application.php
@@ -8,6 +8,7 @@ use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
+use OCP\IRequest;
class Application extends App implements IBootstrap {
@@ -18,6 +19,11 @@ class Application extends App implements IBootstrap {
}
public function register(IRegistrationContext $context): void {
+
+ $context->registerService('request', static function ($c) {
+ return $c->get(IRequest::class);
+ });
+
}
public function boot(IBootContext $context): void {
diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php
index d852879..036c597 100644
--- a/lib/Controller/SettingsController.php
+++ b/lib/Controller/SettingsController.php
@@ -70,101 +70,33 @@ class SettingsController extends ApiController {
}
/**
- * get player volume config value
+ * set menu state
*
+ * @param string $menuState
* @return JSONResponse
*
* @NoAdminRequired
*/
- public function getVolume(): JSONResponse {
- return $this->getSetting('volume', 'volume', 0.5);
- }
-
- /**
- * set player volume config value
- *
- * @param string $sorting
- * @return JSONResponse
- *
- * @NoAdminRequired
- */
- public function setSorting($sorting = ""): JSONResponse {
- $legalArguments = ['title', 'added', 'clickcount', 'lastmodified', 'index'];
- if (!in_array($sorting, $legalArguments)) {
+ public function setMenuState($menuState = ""): JSONResponse {
+ $legalArguments = ['TOP', 'RECENT', 'NEW', 'FAVORITES', 'CATEGORIES'];
+ if (!in_array($menuState, $legalArguments)) {
return new JSONResponse(['status' => 'error'], Http::STATUS_BAD_REQUEST);
}
return $this->setSetting(
- 'sorting',
- $sorting
+ 'menuState',
+ $menuState
);
}
/**
- * get view mode option config value
+ * get menu state
*
* @return JSONResponse
*
* @NoAdminRequired
*/
- public function getViewMode(): JSONResponse {
- return $this->getSetting('viewMode', 'viewMode', 'grid');
+ public function getMenuState(): JSONResponse {
+ return $this->getSetting('menuState', 'menuState', 'TOP');
}
- /**
- * set sorting option config value
- *
- * @param string $viewMode
- * @return JSONResponse
- *
- * @NoAdminRequired
- */
- public function setViewMode($viewMode = ""): JSONResponse {
- $legalArguments = ['grid', 'list'];
- if (!in_array($viewMode, $legalArguments)) {
- return new JSONResponse(['status' => 'error'], Http::STATUS_BAD_REQUEST);
- }
- return $this->setSetting(
- 'viewMode',
- $viewMode
- );
- }
-
- /**
- * get per-user bookmarks limit
- *
- * @return JSONResponse
- *
- * @NoAdminRequired
- */
- public function getLimit(): JSONResponse {
- $limit = (int)$this->config->getAppValue('bookmarks', 'performance.maxBookmarksperAccount', 0);
- return new JSONResponse(['limit' => $limit], Http::STATUS_OK);
- }
-
- /**
- * get user-defined archive path
- *
- * @return JSONResponse
- *
- * @NoAdminRequired
- */
- public function getArchivePath(): JSONResponse {
- return $this->getSetting(
- 'archive.filePath',
- 'archivePath',
- $this->l->t('Bookmarks')
- );
- }
-
- /**
- * set user-defined archive path
- *
- * @param string $archivePath
- * @return JSONResponse
- *
- * @NoAdminRequired
- */
- public function setArchivePath(string $archivePath): JSONResponse {
- return $this->setSetting('archive.filePath', $archivePath);
- }
}
diff --git a/src/components/Main.vue b/src/components/Main.vue
index 55876bd..a6c8e2d 100644
--- a/src/components/Main.vue
+++ b/src/components/Main.vue
@@ -76,12 +76,14 @@ export default {
mounted() {
this.loadStations()
this.scroll()
+ this.$store.dispatch('getMenuState')
},
methods: {
async onRoute() {
this.offset = 0
this.tableData = []
const route = this.$route
+ this.$store.dispatch('setMenuState', route.name)
switch (route.name) {
case 'TOP':
this.loadStations()
diff --git a/src/store.js b/src/store.js
index 31e914a..b206d84 100644
--- a/src/store.js
+++ b/src/store.js
@@ -1,5 +1,9 @@
import Vue from 'vue'
import Vuex from 'vuex'
+
+import axios from '@nextcloud/axios'
+import { generateUrl } from '@nextcloud/router'
+
Vue.use(Vuex)
export default new Vuex.Store({
@@ -46,6 +50,21 @@ export default new Vuex.Store({
setTitle(state, title) {
state.player.title = title
},
+ setMenuState(state, menuState) {
+ axios.post(generateUrl('/apps/radio/settings/menuState'), {
+ menuState,
+ })
+ },
+ getMenuState(state, menuState) {
+ axios
+ .get(generateUrl('/apps/radio/settings/menuState'))
+ .then(async response => {
+ const {
+ data: { menuState: value },
+ } = response
+ console.log(value)
+ })
+ },
},
actions: {
isPlaying(context, playerState) {
@@ -66,5 +85,11 @@ export default new Vuex.Store({
setTitle(context, title) {
context.commit('setTitle', title)
},
+ setMenuState(context, menuState) {
+ context.commit('setMenuState', menuState)
+ },
+ getMenuState(context) {
+ context.commit('getMenuState')
+ },
},
})