diff --git a/public/js/subscription-manager.js b/public/js/subscription-manager.js index 5dcd775..089d68c 100644 --- a/public/js/subscription-manager.js +++ b/public/js/subscription-manager.js @@ -13,77 +13,86 @@ const component = () => { if (!data.success) throw new Error(data.error); this.plugins = data.plugins; - const pid = localStorage.getItem('plugin'); - if (pid && this.plugins.map((p) => p.id).includes(pid)) - this.pid = pid; - else if (this.plugins.length > 0) this.pid = this.plugins[0].id; + let pid = localStorage.getItem("plugin"); + if (!pid || !this.plugins.find((p) => p.id === pid)) { + pid = this.plugins[0].id; + } - this.list(pid); - }) - .catch((e) => { - alert('danger', `Failed to list the available plugins. Error: ${e}`); - }); - }, - pluginChanged() { - localStorage.setItem('plugin', this.pid); - this.list(this.pid); - }, - list(pid) { - if (!pid) return; - fetch( - `${base_url}api/admin/plugin/subscriptions?${new URLSearchParams({ - plugin: pid, - })}`, - { - method: 'GET', - }, - ) - .then((response) => response.json()) - .then((data) => { - if (!data.success) throw new Error(data.error); - this.subscriptions = data.subscriptions; - }) - .catch((e) => { - alert('danger', `Failed to list subscriptions. Error: ${e}`); - }); - }, - renderStrCell(str) { - const maxLength = 40; - if (str.length > maxLength) - return `${str.substring( - 0, - maxLength, - )}...
${str}
`; - return `${str}`; - }, - renderDateCell(timestamp) { - return `${moment - .duration(moment.unix(timestamp).diff(moment())) - .humanize(true)}`; - }, - selected(event, modal) { - const id = event.currentTarget.getAttribute('sid'); - this.subscription = this.subscriptions.find((s) => s.id === id); - UIkit.modal(modal).show(); - }, - renderFilterRow(ft) { - const key = ft.key; - let type = ft.type; - switch (type) { - case 'number-min': - type = 'number (minimum value)'; - break; - case 'number-max': - type = 'number (maximum value)'; - break; - case 'date-min': - type = 'minimum date'; - break; - case 'date-max': - type = 'maximum date'; - break; - } - let value = ft.value; + this.pid = pid; + this.list(pid); + }) + .catch((e) => { + alert( + "danger", + `Failed to list the available plugins. Error: ${e}` + ); + }); + }, + pluginChanged() { + localStorage.setItem("plugin", this.pid); + this.list(this.pid); + }, + list(pid) { + if (!pid) return; + fetch( + `${base_url}api/admin/plugin/subscriptions?${new URLSearchParams( + { + plugin: pid, + } + )}`, + { + method: "GET", + } + ) + .then((response) => response.json()) + .then((data) => { + if (!data.success) throw new Error(data.error); + this.subscriptions = data.subscriptions; + }) + .catch((e) => { + alert( + "danger", + `Failed to list subscriptions. Error: ${e}` + ); + }); + }, + renderStrCell(str) { + const maxLength = 40; + if (str.length > maxLength) + return `${str.substring( + 0, + maxLength + )}...
${str}
`; + return `${str}`; + }, + renderDateCell(timestamp) { + return `${moment + .duration(moment.unix(timestamp).diff(moment())) + .humanize(true)}`; + }, + selected(event, modal) { + const id = event.currentTarget.getAttribute("sid"); + this.subscription = this.subscriptions.find((s) => s.id === id); + UIkit.modal(modal).show(); + }, + renderFilterRow(ft) { + const key = ft.key; + let type = ft.type; + switch (type) { + case "number-min": + type = "number (minimum value)"; + break; + case "number-max": + type = "number (maximum value)"; + break; + case "date-min": + type = "minimum date"; + break; + case "date-max": + type = "maximum date"; + break; + } + let value = ft.value; if (ft.type.startsWith('number') && isNaN(value)) value = ''; else if (ft.type.startsWith('date') && value)