Merge pull request #198 from JazzFisch/fix-incorrect-widget-values
Fix issues with incorrect values in widgets
This commit is contained in:
commit
8a226ca473
1 changed files with 20 additions and 18 deletions
|
@ -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,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Reference in a new issue