mirror of
				https://github.com/karl0ss/homepage.git
				synced 2025-11-04 00:10:57 +00:00 
			
		
		
		
	Merge pull request #198 from JazzFisch/fix-incorrect-widget-values
Fix issues with incorrect values in widgets
This commit is contained in:
		
						commit
						8a226ca473
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user