summaryrefslogtreecommitdiffstats
path: root/src/main.js
diff options
context:
space:
mode:
authorHK2FB <tom.schmidt@helsana.ch>2022-05-15 13:16:56 +0200
committerSean Molenaar <sean@seanmolenaar.eu>2022-05-22 16:07:30 +0200
commitb036d309c27132e4f10df952e9335afdb3edfeb5 (patch)
treee888f1fa178f2fe36baefcfb2ccc080ef27645ce /src/main.js
parent50c8960f8d36ab6012f62034f815561078380dc0 (diff)
Vue Rewrite
Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
Diffstat (limited to 'src/main.js')
-rw-r--r--src/main.js126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 000000000..51aec5617
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,126 @@
+import Vue from 'vue'
+import App from './App'
+import VueRouter from 'vue-router'
+import Explore from './components/Explore'
+import {generateUrl} from "@nextcloud/router";
+import Vuex from 'vuex'
+import axios from "@nextcloud/axios";
+
+Vue.prototype.t = t
+Vue.prototype.n = n
+Vue.prototype.OC = OC
+Vue.prototype.OCA = OCA
+
+Vue.use(Vuex)
+Vue.use(VueRouter)
+
+import { Tooltip } from '@nextcloud/vue'
+
+Vue.directive('tooltip', Tooltip)
+
+const feedUrl = generateUrl("/apps/news/feeds")
+const folderUrl = generateUrl("/apps/news/folders")
+
+const routes = [
+ {
+ name: 'explore',
+ path: '#explore',
+ component: Explore
+ },
+]
+
+const router = new VueRouter({
+ mode: 'history',
+ base: generateUrl('apps/news'),
+ routes
+});
+
+const store = new Vuex.Store({
+ state: {
+ folders: [],
+ feeds: []
+ },
+ mutations: {
+ addFolders(state, folders) {
+ folders.forEach(it => {
+ it.feedCount = 0
+ state.folders.push(it)
+ })
+ },
+ addFeeds(state, feeds) {
+ feeds.forEach(it => {
+ state.feeds.push(it)
+ const folder = state.folders.find(folder => folder.id === it.folderId)
+ folder.feeds.push(it)
+ folder.feedCount += it.unreadCount
+ })
+ }
+ },
+ actions: {
+ addFolder({commit}, {folder}) {
+ axios.post(folderUrl, {folderName: folder.name}).then(
+ response => commit('addFolders', response.data.folders)
+ );
+ },
+ deleteFolder({commit}, {folder}) {
+ /**
+ this.getByFolderId(folderId).forEach(function (feed) {
+ promises.push(self.reversiblyDelete(feed.id, false, true));
+ });
+
+ this.updateUnreadCache();
+ */
+ axios.delete(folderUrl + '/' + folder.id).then()
+ },
+ loadFolder({commit}) {
+ console.log('loading folders')
+ axios.get(folderUrl).then(
+ response => {
+ commit('addFolders', response.data.folders);
+ axios.get(feedUrl).then(
+ response => commit('addFeeds', response.data.feeds)
+ )
+ }
+ )
+ },
+ addFeed({commit}, {feedReq}) {
+ console.log(feedReq)
+ let url = feedReq.url.trim();
+ if (!url.startsWith('http')) {
+ url = 'https://' + url;
+ }
+
+ /**
+ if (title !== undefined) {
+ title = title.trim();
+ }
+ */
+
+ let feed = {
+ url: url,
+ folderId: feedReq.folder.id || 0,
+ title: null,
+ unreadCount: 0
+ };
+
+ // this.add(feed);
+ // this.updateFolderCache();
+
+ axios.post(feedUrl, {
+ url: feed.url,
+ parentFolderId: feed.folderId,
+ title: null,
+ user: null,
+ password: null,
+ fullDiscover: feed.autoDiscover
+ }).then();
+ }
+ }
+});
+
+export default new Vue({
+ router,
+ store,
+ el: '#content',
+ render: h => h(App),
+})