mirror of
https://github.com/DI0IK/homepage-plus.git
synced 2025-07-10 15:28:47 +00:00
linting and cleanup
This commit is contained in:
parent
7f041e8303
commit
f74e8b9d32
51 changed files with 464 additions and 349 deletions
|
@ -15,13 +15,13 @@ const formats = {
|
|||
};
|
||||
|
||||
export function formatApiCall(api, args) {
|
||||
const match = /\{.*?\}/g;
|
||||
const find = /\{.*?\}/g;
|
||||
const replace = (match) => {
|
||||
const key = match.replace(/\{|\}/g, "");
|
||||
return args[key];
|
||||
};
|
||||
|
||||
return formats[api].replace(match, replace);
|
||||
return formats[api].replace(find, replace);
|
||||
}
|
||||
|
||||
export function formatApiUrl(widget, endpoint) {
|
||||
|
|
|
@ -5,9 +5,9 @@ export default async function cachedFetch(url, duration) {
|
|||
|
||||
if (cached) {
|
||||
return cached;
|
||||
} else {
|
||||
const data = await fetch(url).then((res) => res.json());
|
||||
cache.put(url, data, duration * 1000 * 60);
|
||||
return data;
|
||||
}
|
||||
|
||||
const data = await fetch(url).then((res) => res.json());
|
||||
cache.put(url, data, duration * 1000 * 60);
|
||||
return data;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { createContext, useState, useEffect } from "react";
|
||||
import { createContext, useState, useEffect, useMemo } from "react";
|
||||
|
||||
let lastColor = false;
|
||||
|
||||
|
@ -16,7 +16,7 @@ const getInitialColor = () => {
|
|||
|
||||
export const ColorContext = createContext();
|
||||
|
||||
export const ColorProvider = ({ initialTheme, children }) => {
|
||||
export function ColorProvider({ initialTheme, children }) {
|
||||
const [color, setColor] = useState(getInitialColor);
|
||||
|
||||
const rawSetColor = (rawColor) => {
|
||||
|
@ -38,5 +38,7 @@ export const ColorProvider = ({ initialTheme, children }) => {
|
|||
rawSetColor(color);
|
||||
}, [color]);
|
||||
|
||||
return <ColorContext.Provider value={{ color, setColor }}>{children}</ColorContext.Provider>;
|
||||
};
|
||||
const value = useMemo(() => ({ color, setColor }), [color]);
|
||||
|
||||
return <ColorContext.Provider value={value}>{children}</ColorContext.Provider>;
|
||||
}
|
|
@ -348,7 +348,9 @@ export default function mapIcon(weatherStatusCode, timeOfDay) {
|
|||
if (mapping) {
|
||||
if (timeOfDay === "day") {
|
||||
return mapping.icon.day;
|
||||
} else if (timeOfDay === "night") {
|
||||
}
|
||||
|
||||
if (timeOfDay === "night") {
|
||||
return mapping.icon.night;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/* eslint-disable no-console */
|
||||
import { join } from "path";
|
||||
import { existsSync, copyFile, promises as fs } from "fs";
|
||||
|
||||
import yaml from "js-yaml";
|
||||
|
||||
export default function checkAndCopyConfig(config) {
|
||||
|
@ -8,7 +10,7 @@ export default function checkAndCopyConfig(config) {
|
|||
const configSkeleton = join(process.cwd(), "src", "skeleton", config);
|
||||
copyFile(configSkeleton, configYaml, (err) => {
|
||||
if (err) {
|
||||
console.log("error copying config", err);
|
||||
console.error("error copying config", err);
|
||||
throw err;
|
||||
}
|
||||
console.info("%s was copied to the config folder", config);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import yaml from "js-yaml";
|
||||
import path from "path";
|
||||
import { promises as fs } from "fs";
|
||||
|
||||
import yaml from "js-yaml";
|
||||
|
||||
import checkAndCopyConfig from "utils/config";
|
||||
|
||||
export default async function getDockerArguments(server) {
|
||||
|
@ -13,18 +15,21 @@ export default async function getDockerArguments(server) {
|
|||
if (!server) {
|
||||
if (process.platform !== "win32" && process.platform !== "darwin") {
|
||||
return { socketPath: "/var/run/docker.sock" };
|
||||
} else {
|
||||
return { host: "127.0.0.1" };
|
||||
}
|
||||
} else if (servers[server]) {
|
||||
|
||||
return { host: "127.0.0.1" };
|
||||
}
|
||||
|
||||
if (servers[server]) {
|
||||
if (servers[server].socket) {
|
||||
return { socketPath: servers[server].socket };
|
||||
} else if (servers[server].host) {
|
||||
return { host: servers[server].host, port: servers[server].port || null };
|
||||
} else {
|
||||
return servers[server];
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
|
||||
if (servers[server].host) {
|
||||
return { host: servers[server].host, port: servers[server].port || null };
|
||||
}
|
||||
|
||||
return servers[server];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
/* eslint-disable prefer-promise-reject-errors */
|
||||
import https from "https";
|
||||
import http from "http";
|
||||
|
||||
export function httpsRequest(url, params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var request = https.request(url, params, function (response) {
|
||||
var data = [];
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = https.request(url, params, (response) => {
|
||||
const data = [];
|
||||
|
||||
response.on("data", (chunk) => {
|
||||
data.push(chunk);
|
||||
|
@ -24,9 +25,9 @@ export function httpsRequest(url, params) {
|
|||
}
|
||||
|
||||
export function httpRequest(url, params) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var request = http.request(url, params, function (response) {
|
||||
var data = [];
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = http.request(url, params, (response) => {
|
||||
const data = [];
|
||||
|
||||
response.on("data", (chunk) => {
|
||||
data.push(chunk);
|
||||
|
@ -57,7 +58,6 @@ export function httpProxy(url, params = {}) {
|
|||
agent: httpsAgent,
|
||||
...params,
|
||||
});
|
||||
} else {
|
||||
return httpRequest(constructedUrl, params);
|
||||
}
|
||||
return httpRequest(constructedUrl, params);
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ const conditions = [
|
|||
night: Icons.WiNightAltShowers,
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
code: 500,
|
||||
icon: {
|
||||
|
@ -393,18 +393,17 @@ const conditions = [
|
|||
night: Icons.WiCloudy,
|
||||
},
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
export default function mapIcon(weatherStatusCode, timeOfDay) {
|
||||
const mapping = conditions.find(
|
||||
(condition) => condition.code === weatherStatusCode
|
||||
);
|
||||
const mapping = conditions.find((condition) => condition.code === weatherStatusCode);
|
||||
|
||||
if (mapping) {
|
||||
if (timeOfDay === "day") {
|
||||
return mapping.icon.day;
|
||||
} else if (timeOfDay === "night") {
|
||||
}
|
||||
|
||||
if (timeOfDay === "night") {
|
||||
return mapping.icon.night;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { getServiceWidget } from "utils/service-helpers";
|
||||
import getServiceWidget from "utils/service-helpers";
|
||||
import { formatApiCall } from "utils/api-helpers";
|
||||
import { httpProxy } from "utils/http";
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { getServiceWidget } from "utils/service-helpers";
|
||||
import getServiceWidget from "utils/service-helpers";
|
||||
import { formatApiCall } from "utils/api-helpers";
|
||||
import { httpProxy } from "utils/http";
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { getServiceWidget } from "utils/service-helpers";
|
||||
import getServiceWidget from "utils/service-helpers";
|
||||
import { formatApiCall } from "utils/api-helpers";
|
||||
|
||||
export default async function npmProxyHandler(req, res) {
|
||||
|
@ -25,7 +25,7 @@ export default async function npmProxyHandler(req, res) {
|
|||
method: "GET",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
Authorization: "Bearer " + authResponse.token,
|
||||
Authorization: `Bearer ${authResponse.token}`,
|
||||
},
|
||||
}).then((response) => response.json());
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { JSONRPCClient } from "json-rpc-2.0";
|
||||
import { getServiceWidget } from "utils/service-helpers";
|
||||
|
||||
import getServiceWidget from "utils/service-helpers";
|
||||
|
||||
export default async function nzbgetProxyHandler(req, res) {
|
||||
const { group, service, endpoint } = req.query;
|
||||
|
@ -25,9 +26,9 @@ export default async function nzbgetProxyHandler(req, res) {
|
|||
if (response.status === 200) {
|
||||
const jsonRPCResponse = await response.json();
|
||||
return client.receive(jsonRPCResponse);
|
||||
} else if (jsonRPCRequest.id !== undefined) {
|
||||
return Promise.reject(new Error(response.statusText));
|
||||
}
|
||||
|
||||
return Promise.reject(new Error(response.statusText));
|
||||
})
|
||||
);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import RuTorrent from "rutorrent-promise";
|
||||
|
||||
import { getServiceWidget } from "utils/service-helpers";
|
||||
import getServiceWidget from "utils/service-helpers";
|
||||
|
||||
export default async function rutorrentProxyHandler(req, res) {
|
||||
const { group, service } = req.query;
|
||||
|
|
|
@ -1,24 +1,21 @@
|
|||
import { promises as fs } from "fs";
|
||||
import path from "path";
|
||||
|
||||
import yaml from "js-yaml";
|
||||
|
||||
export async function getServiceWidget(group, service) {
|
||||
export default async function getServiceWidget(group, service) {
|
||||
const servicesYaml = path.join(process.cwd(), "config", "services.yaml");
|
||||
const fileContents = await fs.readFile(servicesYaml, "utf8");
|
||||
const services = yaml.load(fileContents);
|
||||
|
||||
// map easy to write YAML objects into easy to consume JS arrays
|
||||
const servicesArray = services.map((group) => {
|
||||
return {
|
||||
name: Object.keys(group)[0],
|
||||
services: group[Object.keys(group)[0]].map((entries) => {
|
||||
return {
|
||||
name: Object.keys(entries)[0],
|
||||
...entries[Object.keys(entries)[0]],
|
||||
};
|
||||
}),
|
||||
};
|
||||
});
|
||||
const servicesArray = services.map((servicesGroup) => ({
|
||||
name: Object.keys(servicesGroup)[0],
|
||||
services: servicesGroup[Object.keys(servicesGroup)[0]].map((entries) => ({
|
||||
name: Object.keys(entries)[0],
|
||||
...entries[Object.keys(entries)[0]],
|
||||
})),
|
||||
}));
|
||||
|
||||
const serviceGroup = servicesArray.find((g) => g.name === group);
|
||||
if (serviceGroup) {
|
||||
|
|
|
@ -19,7 +19,7 @@ export function formatBytes(bytes, decimals = 2) {
|
|||
|
||||
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||
|
||||
return parseFloat(bytes / Math.pow(k, i)).toFixed(dm) + " " + sizes[i];
|
||||
return `${parseFloat(bytes / k ** i).toFixed(dm)} ${sizes[i]}`;
|
||||
}
|
||||
|
||||
export function formatBits(bytes, decimals = 2) {
|
||||
|
@ -31,5 +31,5 @@ export function formatBits(bytes, decimals = 2) {
|
|||
|
||||
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||
|
||||
return parseFloat(bytes / Math.pow(k, i)).toFixed(dm) + " " + sizes[i];
|
||||
return `${parseFloat(bytes / k ** i).toFixed(dm)} ${sizes[i]}`;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { createContext, useState, useEffect } from "react";
|
||||
import { createContext, useState, useEffect, useMemo } from "react";
|
||||
|
||||
const getInitialTheme = () => {
|
||||
if (typeof window !== "undefined" && window.localStorage) {
|
||||
|
@ -18,7 +18,7 @@ const getInitialTheme = () => {
|
|||
|
||||
export const ThemeContext = createContext();
|
||||
|
||||
export const ThemeProvider = ({ initialTheme, children }) => {
|
||||
export function ThemeProvider({ initialTheme, children }) {
|
||||
const [theme, setTheme] = useState(getInitialTheme);
|
||||
|
||||
const rawSetTheme = (rawTheme) => {
|
||||
|
@ -39,5 +39,7 @@ export const ThemeProvider = ({ initialTheme, children }) => {
|
|||
rawSetTheme(theme);
|
||||
}, [theme]);
|
||||
|
||||
return <ThemeContext.Provider value={{ theme, setTheme }}>{children}</ThemeContext.Provider>;
|
||||
};
|
||||
const value = useMemo(() => ({ theme, setTheme }), [theme]);
|
||||
|
||||
return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue