Merge pull request #198 from JazzFisch/fix-incorrect-widget-values

Fix issues with incorrect values in widgets
This commit is contained in:
Ben Phelps 2022-09-17 19:21:26 +03:00 committed by GitHub
commit 8a226ca473
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6,16 +6,6 @@ import npmProxyHandler from "utils/proxies/npm";
import transmissionProxyHandler from "utils/proxies/transmission"; import transmissionProxyHandler from "utils/proxies/transmission";
import qbittorrentProxyHandler from "utils/proxies/qbittorrent"; import qbittorrentProxyHandler from "utils/proxies/qbittorrent";
function jsonArrayMapper(data, map) {
if (data?.length > 0) {
const json = JSON.parse(data.toString());
if (json instanceof Array) {
return json.map(map);
}
}
return data;
}
function asJson(data) { function asJson(data) {
if (data?.length > 0) { if (data?.length > 0) {
const json = JSON.parse(data.toString()); const json = JSON.parse(data.toString());
@ -24,6 +14,18 @@ function asJson(data) {
return data; return data;
} }
function jsonArrayTransform(data, transform) {
const json = asJson(data);
if (json instanceof Array) {
return transform(json);
}
return json;
}
function jsonArrayFilter(data, filter) {
return jsonArrayTransform(data, items => items.filter(filter));
}
const serviceProxyHandlers = { const serviceProxyHandlers = {
// uses query param auth // uses query param auth
emby: genericProxyHandler, emby: genericProxyHandler,
@ -33,16 +35,16 @@ const serviceProxyHandlers = {
proxy: genericProxyHandler, proxy: genericProxyHandler,
maps: { maps: {
movie: (data) => ({ movie: (data) => ({
wanted: jsonArrayMapper(data, (item) => item.isAvailable === false).length, wanted: jsonArrayFilter(data, (item) => item.isAvailable === false).length,
have: jsonArrayMapper(data, (item) => item.isAvailable === true).length, have: jsonArrayFilter(data, (item) => item.isAvailable === true).length
}), })
}, },
}, },
sonarr: { sonarr: {
proxy: genericProxyHandler, proxy: genericProxyHandler,
maps: { maps: {
series: (data) => ({ series: (data) => ({
total: asJson(data.toString()).length, total: asJson(data).length,
}), }),
}, },
}, },
@ -50,7 +52,7 @@ const serviceProxyHandlers = {
proxy: genericProxyHandler, proxy: genericProxyHandler,
maps: { maps: {
album: (data) => ({ album: (data) => ({
have: jsonArrayMapper(data, (item) => item.statistics.percentOfTracks === 100).length, have: jsonArrayFilter(data, (item) => item.statistics.percentOfTracks === 100).length,
}), }),
}, },
}, },
@ -58,7 +60,7 @@ const serviceProxyHandlers = {
proxy: genericProxyHandler, proxy: genericProxyHandler,
maps: { maps: {
book: (data) => ({ book: (data) => ({
have: jsonArrayMapper(data, (item) => item.statistics.bookFileCount > 0).length, have: jsonArrayFilter(data, (item) => item.statistics.bookFileCount > 0).length,
}), }),
}, },
}, },
@ -66,10 +68,10 @@ const serviceProxyHandlers = {
proxy: genericProxyHandler, proxy: genericProxyHandler,
maps: { maps: {
movies: (data) => ({ movies: (data) => ({
total: asJson(data.toString()).total, total: asJson(data).total,
}), }),
episodes: (data) => ({ episodes: (data) => ({
total: asJson(data.toString()).total, total: asJson(data).total,
}), }),
}, },
}, },