repod/src/store/subscriptions.js

35 lines
983 B
JavaScript
Raw Normal View History

import { getCookie, setCookie } from '../utils/cookies.js'
2023-07-07 16:38:53 +00:00
import axios from '@nextcloud/axios'
import { defineStore } from 'pinia'
2023-07-07 16:38:53 +00:00
import { generateUrl } from '@nextcloud/router'
export const useSubscriptions = defineStore('subscriptions', {
state: () => ({
subs: [],
favorites: [],
}),
2023-07-07 16:38:53 +00:00
actions: {
2024-08-09 20:51:32 +00:00
async fetch() {
const metrics = await axios.get(
generateUrl('/apps/gpoddersync/personal_settings/metrics'),
)
const subs = [...metrics.data.subscriptions].sort(
(a, b) => b.listenedSeconds - a.listenedSeconds,
)
this.subs = subs.map((sub) => sub.url)
try {
this.favorites = JSON.parse(getCookie('repod.favorites')) || []
} catch {}
},
addFavorite(url) {
this.favorites.push(url)
setCookie('repod.favorites', JSON.stringify(this.favorites), 365)
},
removeFavorite(url) {
this.favorites = this.favorites.filter((favorite) => favorite !== url)
setCookie('repod.favorites', JSON.stringify(this.favorites), 365)
2023-07-07 16:38:53 +00:00
},
},
})