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

Fix issues with incorrect values in widgets
pull/211/head v0.3.55
Ben Phelps 2 years ago committed by GitHub
commit 8a226ca473
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -6,22 +6,24 @@ 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) { function asJson(data) {
if (data?.length > 0) { if (data?.length > 0) {
const json = JSON.parse(data.toString()); const json = JSON.parse(data.toString());
if (json instanceof Array) { return json;
return json.map(map);
}
} }
return data; return data;
} }
function asJson(data) { function jsonArrayTransform(data, transform) {
if (data?.length > 0) { const json = asJson(data);
const json = JSON.parse(data.toString()); if (json instanceof Array) {
return json; return transform(json);
} }
return data; return json;
}
function jsonArrayFilter(data, filter) {
return jsonArrayTransform(data, items => items.filter(filter));
} }
const serviceProxyHandlers = { const serviceProxyHandlers = {
@ -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,
}), }),
}, },
}, },

Loading…
Cancel
Save