import axios from '@nextcloud/axios' import { generateUrl } from '@nextcloud/router' export const subscriptions = { namespaced: true, state: { subscriptions: [], }, getters: { sortedSubscriptions: (state) => state.subscriptions.concat().sort((a, b) => { if (a.title && b.title) return a.title.localeCompare(b.title) return a.id - b.id }), }, mutations: { reset: (state) => { state.subscriptions = [] }, add: (state, subscription) => { const subscriptionId = state.subscriptions.findIndex(sub => sub.url === subscription.url) if (subscriptionId === -1) { state.subscriptions.push(subscription) } else { state.subscriptions[subscriptionId] = subscription } }, }, actions: { fetch: async (context) => { context.commit('reset') const metrics = await axios.get(generateUrl('/apps/gpoddersync/personal_settings/metrics')) for (const subscriptionId in metrics.data.subscriptions) { context.commit('add', { id: subscriptionId, url: metrics.data.subscriptions[subscriptionId].url, loading: true, }) } for (const subscription of context.state.subscriptions) { try { const podcasts = await axios.get(generateUrl('/apps/gpoddersync/personal_settings/podcast_data?url={url}', { url: subscription.url })) context.commit('add', { ...podcasts.data.data, ...subscription, ...{ loading: false } }) } catch (e) { console.error(e) } } }, }, }