summaryrefslogtreecommitdiffstats
path: root/src/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.js')
-rw-r--r--src/main.js132
1 files changed, 132 insertions, 0 deletions
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 000000000..ae9478a02
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,132 @@
+
+import Vue from 'vue'
+import App from './App.vue'
+import VueRouter from 'vue-router'
+import Explore from './components/Explore.vue'
+import { generateUrl } from '@nextcloud/router'
+import Vuex, { Store } from 'vuex'
+import axios from '@nextcloud/axios'
+
+import { Tooltip } from '@nextcloud/vue'
+
+Vue.prototype.t = t
+Vue.prototype.n = n
+Vue.prototype.OC = OC
+Vue.prototype.OCA = OCA
+
+Vue.use(Vuex)
+Vue.use(VueRouter)
+
+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 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,
+ )
+ if (folder) {
+ 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 }) {
+ axios.get(folderUrl).then((response) => {
+ commit('addFolders', response.data.folders)
+ axios
+ .get(feedUrl)
+ .then((response) =>
+ commit('addFeeds', response.data.feeds),
+ )
+ })
+ },
+ addFeed({ commit }, { feedReq }) {
+ let url = feedReq.url.trim()
+ if (!url.startsWith('http')) {
+ url = 'https://' + url
+ }
+
+ /**
+ if (title !== undefined) {
+ title = title.trim();
+ }
+ */
+
+ const feed = {
+ 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),
+})