From 62188ffdc752382fa8fbd7c56c22ceb8063e7e44 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 09:09:11 +0300 Subject: [PATCH 01/47] cleanup --- src/components/services/dropdown.jsx | 24 ++++++++------ src/components/services/item.jsx | 16 +--------- src/components/services/widget.jsx | 4 +-- .../widgets/service/coinmarketcap.jsx | 32 ++++++++++++++----- src/components/services/widgets/widget.jsx | 2 +- 5 files changed, 42 insertions(+), 36 deletions(-) diff --git a/src/components/services/dropdown.jsx b/src/components/services/dropdown.jsx index c7aad96e..4bc25a8f 100644 --- a/src/components/services/dropdown.jsx +++ b/src/components/services/dropdown.jsx @@ -1,14 +1,15 @@ import { Fragment } from "react"; import { Menu, Transition } from "@headlessui/react"; import { BiCog } from "react-icons/bi"; +import classNames from "classnames"; -export default function Dropdown({ options, state }) { +export default function Dropdown({ options, value, setValue }) { return (
- - {state.value.label} -
@@ -21,18 +22,21 @@ export default function Dropdown({ options, state }) { leaveFrom="transform opacity-100 scale-100" leaveTo="transform opacity-0 scale-95" > - +
- {options.map((i) => ( - + {options.map((option) => ( + ))} diff --git a/src/components/services/item.jsx b/src/components/services/item.jsx index 1c447597..06cc1629 100644 --- a/src/components/services/item.jsx +++ b/src/components/services/item.jsx @@ -33,19 +33,6 @@ export default function Item({ service }) { } }; - const cmcValues = [ - { label: t("coinmarketcap.1hour"), value: "1h" }, - { label: t("coinmarketcap.1day"), value: "24h" }, - { label: t("coinmarketcap.7days"), value: "7d" }, - { label: t("coinmarketcap.30days"), value: "30d" }, - ]; - - const [cmcV, cmcSet] = useState(cmcValues[0]); - - const states = { - coinmarketcap: { value: cmcV, set: cmcSet }, - }; - const hasLink = service.href && service.href !== "#"; return ( @@ -100,7 +87,6 @@ export default function Item({ service }) { )} - {service?.widget?.type === "coinmarketcap" && }
@@ -109,7 +95,7 @@ export default function Item({ service }) { - {service.widget && } + {service.widget && } diff --git a/src/components/services/widget.jsx b/src/components/services/widget.jsx index 415b24f3..df124324 100644 --- a/src/components/services/widget.jsx +++ b/src/components/services/widget.jsx @@ -48,13 +48,13 @@ const widgetMappings = { prowlarr: Prowlarr, }; -export default function Widget({ service, state }) { +export default function Widget({ service }) { const { t } = useTranslation("common"); const ServiceWidget = widgetMappings[service.widget.type]; if (ServiceWidget) { - return ; + return ; } return ( diff --git a/src/components/services/widgets/service/coinmarketcap.jsx b/src/components/services/widgets/service/coinmarketcap.jsx index 5262eb02..8fc30f52 100644 --- a/src/components/services/widgets/service/coinmarketcap.jsx +++ b/src/components/services/widgets/service/coinmarketcap.jsx @@ -1,14 +1,26 @@ import useSWR from "swr"; +import { useState } from "react"; import { useTranslation } from "react-i18next"; import Widget from "../widget"; import Block from "../block"; +import Dropdown from "components/services/dropdown"; import { formatApiUrl } from "utils/api-helpers"; +import classNames from "classnames"; -export default function CoinMarketCap({ service, state }) { +export default function CoinMarketCap({ service }) { const { t } = useTranslation(); + const dateRangeOptions = [ + { label: t("coinmarketcap.1hour"), value: "1h" }, + { label: t("coinmarketcap.1day"), value: "24h" }, + { label: t("coinmarketcap.7days"), value: "7d" }, + { label: t("coinmarketcap.30days"), value: "30d" }, + ]; + + const [dateRange, setDateRange] = useState(dateRangeOptions[0].value); + const config = service.widget; const currencyCode = config.currency ?? "USD"; const { symbols } = config; @@ -29,7 +41,7 @@ export default function CoinMarketCap({ service, state }) { return ; } - if (!statsData) { + if (!statsData || !dateRange) { return ( @@ -41,29 +53,33 @@ export default function CoinMarketCap({ service, state }) { return ( +
+ +
+
- {symbols.map((key) => ( + {symbols.map((symbol) => (
-
{data[key].name}
+
{data[symbol].name}
{t("common.number", { - value: data[key].quote[currencyCode].price, + value: data[symbol].quote[currencyCode].price, style: "currency", currency: currencyCode, })}
0 + data[symbol].quote[currencyCode][`percent_change_${dateRange}`] > 0 ? "text-emerald-300" : "text-rose-300" }`} > - {data[key].quote[currencyCode][`percent_change_${state.value.value}`].toFixed(2)}% + {data[symbol].quote[currencyCode][`percent_change_${dateRange}`].toFixed(2)}%
diff --git a/src/components/services/widgets/widget.jsx b/src/components/services/widgets/widget.jsx index 98e4683e..12202c05 100644 --- a/src/components/services/widgets/widget.jsx +++ b/src/components/services/widgets/widget.jsx @@ -7,5 +7,5 @@ export default function Widget({ error = false, children }) { ); } - return
{children}
; + return
{children}
; } From 6c5bfa466f7ce84b9b0bbedc20ffe2fe278c6ad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81ngel=20Fern=C3=A1ndez=20S=C3=A1nchez?= Date: Tue, 13 Sep 2022 16:22:40 +0000 Subject: [PATCH 02/47] Translated using Weblate (Spanish) Currently translated at 100.0% (89 of 89 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index d61bda0e..83804720 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -11,7 +11,7 @@ "total": "Total", "free": "Libre", "used": "Usado", - "load": "Load" + "load": "Carga" }, "docker": { "rx": "Recibido", @@ -34,8 +34,8 @@ }, "rutorrent": { "active": "Activo", - "upload": "Subir", - "download": "Descargar" + "upload": "Subida", + "download": "Descarga" }, "sonarr": { "wanted": "Más deseado", @@ -69,7 +69,7 @@ }, "speedtest": { "upload": "Subir", - "download": "Descargar", + "download": "Descarga", "ping": "Ping" }, "portainer": { @@ -117,16 +117,16 @@ "messages": "Mensajes" }, "prowlarr": { - "enableIndexers": "Indexers", - "numberOfGrabs": "Grabs", - "numberOfQueries": "Queries", - "numberOfFailGrabs": "Fail Grabs", - "numberOfFailQueries": "Fail Queries" + "enableIndexers": "Indexadores", + "numberOfGrabs": "Capturas", + "numberOfQueries": "Consultas", + "numberOfFailGrabs": "Capturas Fallidas", + "numberOfFailQueries": "Consultas Fallidas" }, "transmission": { - "download": "Download", - "upload": "Upload", - "leech": "Leech", - "seed": "Seed" + "download": "Descarga", + "upload": "Subida", + "leech": "Egoístas (Leech)", + "seed": "Semillas" } } From 4d2004c8c99a8d9d6947c46bb773b7e4402239a8 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Tue, 13 Sep 2022 05:14:54 +0000 Subject: [PATCH 03/47] Translated using Weblate (French) Currently translated at 100.0% (89 of 89 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 924d88a6..4e33ae5b 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -135,8 +135,8 @@ "numberOfFailQueries": "Demande échouée" }, "transmission": { - "download": "Download", - "upload": "Upload", + "download": "Réception", + "upload": "Envoi", "leech": "Leech", "seed": "Seed" } From acd421c61717bf7110a6314332d894b4cc97b5d5 Mon Sep 17 00:00:00 2001 From: Francisco Coelho Date: Tue, 13 Sep 2022 22:00:43 +0000 Subject: [PATCH 04/47] Translated using Weblate (Portuguese) Currently translated at 98.8% (88 of 89 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 52 +++++++++++++++++------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 4dafc19f..249f8b87 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -1,6 +1,6 @@ { "widget": { - "missing_type": "Tipo de widget ausente: {{type}}", + "missing_type": "Widget ausente: {{type}}", "api_error": "Erro da API", "status": "Status" }, @@ -10,7 +10,7 @@ "resources": { "total": "Total", "free": "Livre", - "used": "Usada", + "used": "Usado", "load": "Load" }, "docker": { @@ -18,22 +18,22 @@ "tx": "Tx", "mem": "Mem", "cpu": "CPU", - "offline": "Desligada" + "offline": "Desligado" }, "emby": { "playing": "A reproduzir", "transcoding": "Transcodificação", - "bitrate": "Taxa de bits", - "no_active": "No Active Streams" + "bitrate": "Bitrate", + "no_active": "Sem streams ativas" }, "tautulli": { "playing": "Reproduzindo", "transcoding": "Transcodificação", "bitrate": "Taxa de bits", - "no_active": "No Active Streams" + "no_active": "Sem streams ativas" }, "rutorrent": { - "active": "Ativa", + "active": "Ativo", "upload": "Envio", "download": "ReceçãoDownload" }, @@ -44,13 +44,13 @@ }, "radarr": { "wanted": "Desejado", - "queued": "Enfileiradas", + "queued": "Fila", "movies": "Filmes" }, "readarr": { "wanted": "Wanted", - "queued": "Queued", - "books": "Books" + "queued": "Em fila", + "books": "Livros" }, "ombi": { "pending": "Pendente", @@ -65,7 +65,7 @@ "pihole": { "queries": "Consultas", "blocked": "Bloqueado", - "gravity": "Gravidade" + "gravity": "Gravity" }, "speedtest": { "upload": "Envio", @@ -73,18 +73,18 @@ "ping": "Ping" }, "portainer": { - "running": "Corrida", - "stopped": "Parou", + "running": "A correr", + "stopped": "Parado", "total": "Total" }, "traefik": { - "routers": "Roteadores", + "routers": "Routers", "services": "Serviços", "middleware": "Middleware" }, "npm": { - "enabled": "Habilitada", - "disabled": "Desabilitada", + "enabled": "Ativo", + "disabled": "Desabilitado", "total": "Total" }, "common": { @@ -105,22 +105,22 @@ "wait": "Por favor aguarde" }, "overseerr": { - "pending": "Pending", - "approved": "Approved", - "available": "Available" + "pending": "Pendente", + "approved": "Aprovado", + "available": "Disponível" }, "sabnzbd": { "rate": "Rate", - "queue": "Queue", - "timeleft": "Time Left" + "queue": "Fila", + "timeleft": "Tempo restante" }, "nzbget": { "rate": "Rate", - "remaining": "Remaining", + "remaining": "Restante", "downloaded": "Downloaded" }, "coinmarketcap": { - "configure": "Configure one or more crypto currencies to track" + "configure": "Configurar uma ou mais moedas" }, "gotify": { "apps": "Aplicações", @@ -131,12 +131,12 @@ "enableIndexers": "Indexers", "numberOfGrabs": "Grabs", "numberOfQueries": "Queries", - "numberOfFailGrabs": "Fail Grabs", - "numberOfFailQueries": "Fail Queries" + "numberOfFailGrabs": "Falhados", + "numberOfFailQueries": "Pesquisas falhadas" }, "transmission": { "download": "Download", - "upload": "Upload", + "upload": "Envio", "leech": "Leech", "seed": "Seed" } From 94c093ea573aed53e76e05e1b0afd86c43fbf7f1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:00 +0000 Subject: [PATCH 05/47] Translated using Weblate (German) Currently translated at 68.8% (64 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index bbb5ff66..74d79bb8 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -109,7 +109,11 @@ "downloaded": "Downloaded" }, "coinmarketcap": { - "configure": "Configure one or more crypto currencies to track" + "configure": "Configure one or more crypto currencies to track", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" }, "gotify": { "apps": "Applications", From 4d1ad16ea260a49c8585ae6416b9149d98d9fae8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:00 +0000 Subject: [PATCH 06/47] Translated using Weblate (Spanish) Currently translated at 95.6% (89 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 83804720..c184907e 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -109,7 +109,11 @@ "downloaded": "Descargado" }, "coinmarketcap": { - "configure": "Configurar una o varias criptomonedas para su seguimiento" + "configure": "Configurar una o varias criptomonedas para su seguimiento", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" }, "gotify": { "apps": "Aplicaciones", From a6c52df4cb1c1ec48fbf34c3895d8173f7ce7f16 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:01 +0000 Subject: [PATCH 07/47] Translated using Weblate (French) Currently translated at 95.6% (89 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 4e33ae5b..f7d77f88 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -120,7 +120,11 @@ "rate": "Évaluer" }, "coinmarketcap": { - "configure": "Configurer une ou plusieurs crypto-monnaies à suivre" + "configure": "Configurer une ou plusieurs crypto-monnaies à suivre", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" }, "gotify": { "apps": "Applications", From c2a036c52665f1790c4778c4bd16de1bda97d5c4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:01 +0000 Subject: [PATCH 08/47] Translated using Weblate (Portuguese) Currently translated at 94.6% (88 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 249f8b87..be261b44 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -120,7 +120,11 @@ "downloaded": "Downloaded" }, "coinmarketcap": { - "configure": "Configurar uma ou mais moedas" + "configure": "Configurar uma ou mais moedas", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" }, "gotify": { "apps": "Aplicações", From 710f979f94a2424c867fee02ddd6b1b5c0d1b66d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:01 +0000 Subject: [PATCH 09/47] Translated using Weblate (Russian) Currently translated at 13.9% (13 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 0f4ae8af..c8d95672 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -109,7 +109,11 @@ "downloaded": "Downloaded" }, "coinmarketcap": { - "configure": "Configure one or more crypto currencies to track" + "configure": "Configure one or more crypto currencies to track", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" }, "gotify": { "apps": "Applications", From 6d55e74ae49dda8ec6a7fc93f279fe03681b19d6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:01 +0000 Subject: [PATCH 10/47] Translated using Weblate (Chinese (Simplified)) Currently translated at 86.0% (80 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index b324f35b..723776aa 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -109,7 +109,11 @@ "downloaded": "下载" }, "coinmarketcap": { - "configure": "配置一个或多个需要追踪的加密" + "configure": "配置一个或多个需要追踪的加密", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" }, "gotify": { "apps": "应用", From 75214c345a432cdca2c572f930e145e0ae8aa541 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:02 +0000 Subject: [PATCH 11/47] Translated using Weblate (Italian) Currently translated at 74.1% (69 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 585aae1e..62658ca9 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -109,7 +109,11 @@ "downloaded": "Downloaded" }, "coinmarketcap": { - "configure": "Configure one or more crypto currencies to track" + "configure": "Configure one or more crypto currencies to track", + "1day": "1 Day", + "7days": "7 Days", + "1hour": "1 Hour", + "30days": "30 Days" }, "gotify": { "apps": "Applications", From 5d85e3c0e2e16f7f56f13cef8e647e46c8515188 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:00 +0000 Subject: [PATCH 12/47] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 84.9% (79 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 141378e8..33894cdf 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -109,7 +109,11 @@ "remaining": "Gjenstående" }, "coinmarketcap": { - "configure": "Sett opp én eller flere kryptovalutaer å holde øye med" + "configure": "Sett opp én eller flere kryptovalutaer å holde øye med", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" }, "gotify": { "apps": "Programmer", From b7f490544a86d40aa1de53c5662bf1f27ea3fb17 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:02 +0000 Subject: [PATCH 13/47] Translated using Weblate (Vietnamese) Currently translated at 35.4% (33 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index ab6122f7..1d15ff9d 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -109,7 +109,11 @@ "downloaded": "Downloaded" }, "coinmarketcap": { - "configure": "Configure one or more crypto currencies to track" + "configure": "Configure one or more crypto currencies to track", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" }, "gotify": { "apps": "Applications", From 193b58d0fc1e9aac5a1223f1cb6156920aa59779 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:02 +0000 Subject: [PATCH 14/47] Translated using Weblate (Dutch) Currently translated at 66.6% (62 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index d2975cd2..0259d05c 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -109,7 +109,11 @@ "downloaded": "Downloaded" }, "coinmarketcap": { - "configure": "Configure one or more crypto currencies to track" + "configure": "Configure one or more crypto currencies to track", + "1hour": "1 Hour", + "7days": "7 Days", + "1day": "1 Day", + "30days": "30 Days" }, "gotify": { "apps": "Applications", From f9f816845fab71b5c327001a72e49a0d09137eb7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 06:10:02 +0000 Subject: [PATCH 15/47] Translated using Weblate (Chinese (Traditional)) Currently translated at 9.6% (9 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 63df5369..e0f03e29 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -114,7 +114,11 @@ "total": "Total" }, "coinmarketcap": { - "configure": "Configure one or more crypto currencies to track" + "configure": "Configure one or more crypto currencies to track", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" }, "prowlarr": { "enableIndexers": "Indexers", From b40dad3d3e0f0870641d840c81770374d3d8e7b4 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 09:11:44 +0300 Subject: [PATCH 16/47] remove unused package --- package.json | 1 - pnpm-lock.yaml | 6 ------ 2 files changed, 7 deletions(-) diff --git a/package.json b/package.json index ae8ce0e3..f416ef66 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "@headlessui/react": "^1.7.0", "@tailwindcss/forms": "^0.5.3", "classnames": "^2.3.1", - "currency-symbol-map": "^5.1.0", "dockerode": "^3.3.4", "i18next": "^21.9.1", "i18next-browser-languagedetector": "^6.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aed4b537..32becdd4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,6 @@ specifiers: '@tailwindcss/forms': ^0.5.3 autoprefixer: ^10.4.9 classnames: ^2.3.1 - currency-symbol-map: ^5.1.0 dockerode: ^3.3.4 eslint: ^8.23.1 eslint-config-airbnb: ^19.0.4 @@ -42,7 +41,6 @@ dependencies: '@headlessui/react': 1.7.0_biqbaboplfbrettd7655fr4n2y '@tailwindcss/forms': 0.5.3_tailwindcss@3.1.8 classnames: 2.3.1 - currency-symbol-map: 5.1.0 dockerode: 3.3.4 i18next: 21.9.1 i18next-browser-languagedetector: 6.1.5 @@ -706,10 +704,6 @@ packages: engines: {node: '>=4'} hasBin: true - /currency-symbol-map/5.1.0: - resolution: {integrity: sha512-LO/lzYRw134LMDVnLyAf1dHE5tyO6axEFkR3TXjQIOmMkAM9YL6QsiUwuXzZAmFnuDJcs4hayOgyIYtViXFrLw==} - dev: false - /damerau-levenshtein/1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true From 7f91fe59e21fe93107fbf753c96074ae042d78aa Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 09:11:55 +0300 Subject: [PATCH 17/47] allow setting base and favicon --- src/pages/index.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 2a33872b..2a1901b5 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -46,6 +46,8 @@ export default function Home({ settings }) { {settings.title || "Homepage"} + {settings.base && } + {settings.favicon && }
From 79e5ff2feaa0d52cfabe3341d38739d9d1d2b995 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 09:23:21 +0300 Subject: [PATCH 18/47] fix linting --- src/components/services/item.jsx | 5 ----- src/components/services/widgets/service/coinmarketcap.jsx | 2 +- src/components/widgets/resources/resources.jsx | 1 - 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/components/services/item.jsx b/src/components/services/item.jsx index 06cc1629..2d50276e 100644 --- a/src/components/services/item.jsx +++ b/src/components/services/item.jsx @@ -1,12 +1,9 @@ import Image from "next/future/image"; import { Disclosure } from "@headlessui/react"; -import { useState } from "react"; -import { useTranslation } from "react-i18next"; import Status from "./status"; import Widget from "./widget"; import Docker from "./widgets/service/docker"; -import Dropdown from "./dropdown"; function resolveIcon(icon) { if (icon.startsWith("http")) { @@ -25,8 +22,6 @@ function resolveIcon(icon) { } export default function Item({ service }) { - const { t } = useTranslation(); - const handleOnClick = () => { if (service.href && service.href !== "#") { window.open(service.href, "_blank").focus(); diff --git a/src/components/services/widgets/service/coinmarketcap.jsx b/src/components/services/widgets/service/coinmarketcap.jsx index 8fc30f52..a34e6e92 100644 --- a/src/components/services/widgets/service/coinmarketcap.jsx +++ b/src/components/services/widgets/service/coinmarketcap.jsx @@ -1,13 +1,13 @@ import useSWR from "swr"; import { useState } from "react"; import { useTranslation } from "react-i18next"; +import classNames from "classnames"; import Widget from "../widget"; import Block from "../block"; import Dropdown from "components/services/dropdown"; import { formatApiUrl } from "utils/api-helpers"; -import classNames from "classnames"; export default function CoinMarketCap({ service }) { const { t } = useTranslation(); diff --git a/src/components/widgets/resources/resources.jsx b/src/components/widgets/resources/resources.jsx index 72933a02..a1bf7dfc 100644 --- a/src/components/widgets/resources/resources.jsx +++ b/src/components/widgets/resources/resources.jsx @@ -3,7 +3,6 @@ import Cpu from "./cpu"; import Memory from "./memory"; export default function Resources({ options }) { - console.log(options); const { expanded } = options; return (
From 5acaa31a1f33bdc643576601929cffec27cb04b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Benn=C3=A0ssar=20Carretero?= Date: Wed, 14 Sep 2022 09:14:45 +0200 Subject: [PATCH 19/47] Added translation using Weblate (Catalan) --- public/locales/ca/common.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 public/locales/ca/common.json diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/public/locales/ca/common.json @@ -0,0 +1 @@ +{} From 70592c243803c6b87eed97372092705c9296113d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 07:14:46 +0000 Subject: [PATCH 20/47] Translated using Weblate (Catalan) Currently translated at 100.0% (0 of 0 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 137 +++++++++++++++++++++++++++++++++- 1 file changed, 136 insertions(+), 1 deletion(-) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 0967ef42..94936d40 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -1 +1,136 @@ -{} +{ + "widget": { + "missing_type": "Missing Widget Type: {{type}}", + "api_error": "API Error", + "status": "Status" + }, + "weather": { + "allow": "Click to allow", + "updating": "Updating", + "wait": "Please wait", + "current": "Current Location" + }, + "search": { + "placeholder": "Search…" + }, + "transmission": { + "seed": "Seed", + "download": "Download", + "upload": "Upload", + "leech": "Leech" + }, + "sonarr": { + "wanted": "Wanted", + "queued": "Queued", + "series": "Series" + }, + "speedtest": { + "ping": "Ping", + "upload": "Upload", + "download": "Download" + }, + "resources": { + "total": "Total", + "free": "Free", + "used": "Used", + "load": "Load" + }, + "docker": { + "rx": "RX", + "tx": "TX", + "mem": "MEM", + "cpu": "CPU", + "offline": "Offline" + }, + "emby": { + "playing": "Playing", + "transcoding": "Transcoding", + "bitrate": "Bitrate", + "no_active": "No Active Streams" + }, + "tautulli": { + "playing": "Playing", + "transcoding": "Transcoding", + "bitrate": "Bitrate", + "no_active": "No Active Streams" + }, + "nzbget": { + "rate": "Rate", + "remaining": "Remaining", + "downloaded": "Downloaded" + }, + "sabnzbd": { + "rate": "Rate", + "queue": "Queue", + "timeleft": "Time Left" + }, + "rutorrent": { + "active": "Active", + "upload": "Upload", + "download": "Download" + }, + "radarr": { + "wanted": "Wanted", + "queued": "Queued", + "movies": "Movies" + }, + "readarr": { + "wanted": "Wanted", + "queued": "Queued", + "books": "Books" + }, + "ombi": { + "pending": "Pending", + "approved": "Approved", + "available": "Available" + }, + "jellyseerr": { + "pending": "Pending", + "approved": "Approved", + "available": "Available" + }, + "overseerr": { + "pending": "Pending", + "approved": "Approved", + "available": "Available" + }, + "pihole": { + "queries": "Queries", + "blocked": "Blocked", + "gravity": "Gravity" + }, + "portainer": { + "running": "Running", + "stopped": "Stopped", + "total": "Total" + }, + "traefik": { + "routers": "Routers", + "services": "Services", + "middleware": "Middleware" + }, + "npm": { + "total": "Total", + "enabled": "Enabled", + "disabled": "Disabled" + }, + "coinmarketcap": { + "configure": "Configure one or more crypto currencies to track", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" + }, + "gotify": { + "apps": "Applications", + "clients": "Clients", + "messages": "Messages" + }, + "prowlarr": { + "enableIndexers": "Indexers", + "numberOfGrabs": "Grabs", + "numberOfQueries": "Queries", + "numberOfFailGrabs": "Fail Grabs", + "numberOfFailQueries": "Fail Queries" + } +} From 06de8dd5329f417a2aba24f8eb07a874fafbce46 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 14:43:51 +0300 Subject: [PATCH 21/47] update contributions --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f3c8829a..fd45423c 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ - Automatic service discovery (via labels) * Service Integration - Sonarr, Radarr, Readarr, Prowlarr, Emby, Jellyfin, Tautulli (Plex) - - Ombi, Overseerr, Jellyseerr, NZBGet, SABnzbd, ruTorrent + - Ombi, Overseerr, Jellyseerr, NZBGet, SABnzbd, ruTorrent, Transmission - Portainer, Traefik, Speedtest Tracker, PiHole, Nginx Proxy Manager, Gotify * Information Providers - Coin Market Cap @@ -127,7 +127,7 @@ Huge thanks to the all the contributors who have helped make this project what i * [ilusi0n](https://github.com/benphelps/homepage/commits?author=ilusi0n) - Jellyseerr Integration * [ItsJustMeChris](https://github.com/benphelps/homepage/commits?author=ItsJustMeChris) - Coin Market Cap Widget * [jackblk](https://github.com/benphelps/homepage/commits?author=jackblk) - Vietnamese Translation - * [JazzFisch](https://github.com/benphelps/homepage/commits?author=JazzFisch) - Readarr, SABnzbd Integrations + * [JazzFisch](https://github.com/benphelps/homepage/commits?author=JazzFisch) - Readarr, SABnzbd & Transmission Integrations * [modem7](https://github.com/benphelps/homepage/commits?author=modem7) - Impvoed Docker Image * [nicedc](https://github.com/benphelps/homepage/commits?author=nicedc) - Chinese Translation * [Nonoss117](https://github.com/benphelps/homepage/commits?author=Nonoss117) - French Translation From d876454638738a9320a8f11cc6b66699bef6450b Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 15:04:40 +0300 Subject: [PATCH 22/47] experimental docker user support --- Dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b1193813..ba6079e9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ COPY --link package.json pnpm-lock.yaml* ./ RUN < Date: Wed, 14 Sep 2022 16:04:00 +0300 Subject: [PATCH 23/47] use linuxserver.io base image --- Dockerfile | 14 +++++--------- package.json | 3 ++- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index ba6079e9..27f9aaa0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # syntax = docker/dockerfile:latest # Install dependencies only when needed -FROM node:current-alpine AS deps +FROM ghcr.io/linuxserver/baseimage-alpine:3.15 AS deps WORKDIR /app @@ -9,9 +9,9 @@ COPY --link package.json pnpm-lock.yaml* ./ RUN < config/settings.yaml npm run build EOF @@ -42,11 +42,6 @@ LABEL org.opencontainers.image.source='https://github.com/benphelps/homepage' LABEL org.opencontainers.image.licenses='Apache-2.0' ENV NODE_ENV production -ENV PUID 0 -ENV PGID 0 -ENV TZ Europe/London - -USER $PUID:$PGID WORKDIR /app # Copy files from context (this allows the files to copy before the builder stage is done). @@ -63,4 +58,5 @@ EXPOSE $PORT HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \ CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://localhost:$PORT/api/healthcheck || exit 1 +USER $PUID:$PGID CMD ["node", "server.js"] diff --git a/package.json b/package.json index f416ef66..6acc6a4e 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "next lint", + "telemetry": "next telemetry disable" }, "dependencies": { "@headlessui/react": "^1.7.0", From 5a284bff26295bd89f2044f7871b44a1d2b91428 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 16:08:32 +0300 Subject: [PATCH 24/47] Update docker-publish.yml --- .github/workflows/docker-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index caeabab2..a95c6be5 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -96,7 +96,7 @@ jobs: labels: ${{ steps.meta.outputs.labels }} # https://github.com/docker/setup-qemu-action#about # platforms: linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 - platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7 + platforms: linux/amd64,linux/arm64,linux/arm/v7 # linux/arm/v6 cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max From d4b05b2612623035b54ede040d85bd55e753e480 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 19:04:19 +0300 Subject: [PATCH 25/47] experiment with entrypoint for backwards compat --- Dockerfile | 5 +++-- docker-entrypoint.sh | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100755 docker-entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 27f9aaa0..ab7e1272 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,6 +44,8 @@ LABEL org.opencontainers.image.licenses='Apache-2.0' ENV NODE_ENV production WORKDIR /app +ADD docker-entrypoint.sh docker-entrypoint.sh + # Copy files from context (this allows the files to copy before the builder stage is done). COPY --link package.json next.config.js ./ COPY --link /public ./public @@ -58,5 +60,4 @@ EXPOSE $PORT HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \ CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://localhost:$PORT/api/healthcheck || exit 1 -USER $PUID:$PGID -CMD ["node", "server.js"] +ENTRYPOINT ["/app/docker-entrypoint.sh"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 00000000..5603d7e5 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +# This is in attempt to preserve the original behavior of the Dockerfile, +# while also supporting the lscr.io /config directory +[ ! -d "/app/config" ] && ln -s /config /app/config + +node server.js From 81af23ecb5fc1a518ff1f51f9170110915cb71e5 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 19:19:02 +0300 Subject: [PATCH 26/47] revert to previous Dockerfile --- Dockerfile | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index ab7e1272..b1193813 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # syntax = docker/dockerfile:latest # Install dependencies only when needed -FROM ghcr.io/linuxserver/baseimage-alpine:3.15 AS deps +FROM node:current-alpine AS deps WORKDIR /app @@ -9,9 +9,9 @@ COPY --link package.json pnpm-lock.yaml* ./ RUN < config/settings.yaml npm run build EOF @@ -42,9 +42,8 @@ LABEL org.opencontainers.image.source='https://github.com/benphelps/homepage' LABEL org.opencontainers.image.licenses='Apache-2.0' ENV NODE_ENV production -WORKDIR /app -ADD docker-entrypoint.sh docker-entrypoint.sh +WORKDIR /app # Copy files from context (this allows the files to copy before the builder stage is done). COPY --link package.json next.config.js ./ @@ -60,4 +59,4 @@ EXPOSE $PORT HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \ CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://localhost:$PORT/api/healthcheck || exit 1 -ENTRYPOINT ["/app/docker-entrypoint.sh"] +CMD ["node", "server.js"] From 680d488647d5ed01267461697c80efc8a40cb85f Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 19:19:22 +0300 Subject: [PATCH 27/47] Update docker-publish.yml --- .github/workflows/docker-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index a95c6be5..aa5265ed 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -96,7 +96,7 @@ jobs: labels: ${{ steps.meta.outputs.labels }} # https://github.com/docker/setup-qemu-action#about # platforms: linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 - platforms: linux/amd64,linux/arm64,linux/arm/v7 # linux/arm/v6 + platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max From f7508764256b8dff97a15513f820598e1edf1fda Mon Sep 17 00:00:00 2001 From: Jason Fischer Date: Wed, 14 Sep 2022 10:46:52 -0700 Subject: [PATCH 28/47] Add the Jackett widget - add the follow-redirect package - add the tough-cookie package Jackett API uses a redirect mechanism to set a CSRF token. This CSRF token is stored in a cookie that is required to be present or the API won't work. --- package.json | 4 +- pnpm-lock.yaml | 49 ++++++++++++++++++- public/locales/en/common.json | 4 ++ src/components/services/widget.jsx | 4 +- .../services/widgets/service/jackett.jsx | 37 ++++++++++++++ src/pages/api/services/proxy.js | 1 + src/utils/api-helpers.js | 1 + src/utils/http.js | 40 ++++++++++++++- 8 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 src/components/services/widgets/service/jackett.jsx diff --git a/package.json b/package.json index ae8ce0e3..b7bbd384 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "classnames": "^2.3.1", "currency-symbol-map": "^5.1.0", "dockerode": "^3.3.4", + "follow-redirects": "^1.15.2", "i18next": "^21.9.1", "i18next-browser-languagedetector": "^6.1.5", "i18next-http-backend": "^1.4.1", @@ -30,7 +31,8 @@ "react-icons": "^4.4.0", "rutorrent-promise": "^2.0.0", "shvl": "^3.0.0", - "swr": "^1.3.0" + "swr": "^1.3.0", + "tough-cookie": "^4.1.2" }, "devDependencies": { "autoprefixer": "^10.4.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aed4b537..2d19e8a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,7 @@ specifiers: eslint-plugin-prettier: ^4.2.1 eslint-plugin-react: ^7.31.8 eslint-plugin-react-hooks: ^4.6.0 + follow-redirects: ^1.15.2 i18next: ^21.9.1 i18next-browser-languagedetector: ^6.1.5 i18next-http-backend: ^1.4.1 @@ -36,6 +37,7 @@ specifiers: shvl: ^3.0.0 swr: ^1.3.0 tailwindcss: ^3.1.8 + tough-cookie: ^4.1.2 typescript: ^4.8.3 dependencies: @@ -44,6 +46,7 @@ dependencies: classnames: 2.3.1 currency-symbol-map: 5.1.0 dockerode: 3.3.4 + follow-redirects: 1.15.2 i18next: 21.9.1 i18next-browser-languagedetector: 6.1.5 i18next-http-backend: 1.4.1 @@ -61,6 +64,7 @@ dependencies: rutorrent-promise: 2.0.0 shvl: 3.0.0 swr: 1.3.0_react@18.2.0 + tough-cookie: 4.1.2 devDependencies: autoprefixer: 10.4.9_postcss@8.4.16 @@ -1358,6 +1362,16 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /follow-redirects/1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + /form-data/3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} engines: {node: '>= 6'} @@ -2162,6 +2176,10 @@ packages: react-is: 16.13.1 dev: true + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: false + /pump/3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: @@ -2172,7 +2190,10 @@ packages: /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true + + /querystringify/2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: false /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2277,6 +2298,10 @@ packages: engines: {node: '>=8'} dev: true + /requires-port/1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: false + /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -2563,6 +2588,16 @@ packages: engines: {node: '>=0.6'} dev: false + /tough-cookie/4.1.2: + resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.1.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: false + /tr46/0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false @@ -2625,6 +2660,11 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /universalify/0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: false + /unpipe/1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -2647,6 +2687,13 @@ packages: punycode: 2.1.1 dev: true + /url-parse/1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: false + /use-sync-external-store/1.2.0_react@18.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 5fbaaf21..9d92e66e 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -139,5 +139,9 @@ "numberOfQueries": "Queries", "numberOfFailGrabs": "Fail Grabs", "numberOfFailQueries": "Fail Queries" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } diff --git a/src/components/services/widget.jsx b/src/components/services/widget.jsx index d2c8fbf7..b47b4fdf 100644 --- a/src/components/services/widget.jsx +++ b/src/components/services/widget.jsx @@ -22,6 +22,7 @@ import Tautulli from "./widgets/service/tautulli"; import CoinMarketCap from "./widgets/service/coinmarketcap"; import Gotify from "./widgets/service/gotify"; import Prowlarr from "./widgets/service/prowlarr"; +import Jackett from "./widgets/service/jackett"; const widgetMappings = { docker: Docker, @@ -45,7 +46,8 @@ const widgetMappings = { npm: Npm, tautulli: Tautulli, gotify: Gotify, - prowlarr: Prowlarr + prowlarr: Prowlarr, + jackett: Jackett }; export default function Widget({ service }) { diff --git a/src/components/services/widgets/service/jackett.jsx b/src/components/services/widgets/service/jackett.jsx new file mode 100644 index 00000000..c6583711 --- /dev/null +++ b/src/components/services/widgets/service/jackett.jsx @@ -0,0 +1,37 @@ +import useSWR from "swr"; +import { useTranslation } from "react-i18next"; + +import Widget from "../widget"; +import Block from "../block"; + +import { formatApiUrl } from "utils/api-helpers"; + +export default function Jackett({ service }) { + const { t } = useTranslation(); + + const config = service.widget; + + const { data: indexersData, error: indexersError } = useSWR(formatApiUrl(config, "indexers")); + + if (indexersError) { + return ; + } + + if (!indexersData) { + return ( + + + + + ); + } + + const errored = indexersData.filter((indexer) => indexer.last_error); + + return ( + + + + + ); +} diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index 8fe036f4..9e3a57ff 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -17,6 +17,7 @@ const serviceProxyHandlers = { tautulli: genericProxyHandler, traefik: genericProxyHandler, sabnzbd: genericProxyHandler, + jackett: genericProxyHandler, // uses X-API-Key (or similar) header auth gotify: credentialedProxyHandler, portainer: credentialedProxyHandler, diff --git a/src/utils/api-helpers.js b/src/utils/api-helpers.js index 13d520bf..2c1929df 100644 --- a/src/utils/api-helpers.js +++ b/src/utils/api-helpers.js @@ -19,6 +19,7 @@ const formats = { coinmarketcap: `https://pro-api.coinmarketcap.com/{endpoint}`, gotify: `{url}/{endpoint}`, prowlarr: `{url}/api/v1/{endpoint}`, + jackett: `{url}/api/v2.0/{endpoint}?apikey={key}&configured=true` }; export function formatApiCall(api, args) { diff --git a/src/utils/http.js b/src/utils/http.js index 76e882ed..76f0f8b8 100644 --- a/src/utils/http.js +++ b/src/utils/http.js @@ -1,9 +1,44 @@ /* eslint-disable prefer-promise-reject-errors */ -import https from "https"; -import http from "http"; +/* eslint-disable no-param-reassign */ +import { http, https } from "follow-redirects"; +import { Cookie, CookieJar } from 'tough-cookie'; + +const cookieJar = new CookieJar(); + +function addCookieHandler(url, params) { + // add cookie header, if we have one in the jar + const existingCookie = cookieJar.getCookieStringSync(url.toString()); + if (existingCookie) { + params.headers = params.headers ?? {}; + params.headers.Cookie = existingCookie; + } + + // handle cookies during redirects + params.beforeRedirect = (options, responseInfo) => { + const cookieHeader = responseInfo.headers['set-cookie']; + if (!cookieHeader || cookieHeader.length === 0) return; + + let cookies = null; + if (cookieHeader instanceof Array) { + cookies = cookieHeader.map(Cookie.parse); + } + else { + cookies = [Cookie.parse(cookieHeader)]; + } + + for (let i = 0; i < cookies.length; i += 1) { + cookieJar.setCookieSync(cookies[i], options.href); + } + + const cookie = cookieJar.getCookieStringSync(options.href); + options.headers = options.headers ?? {}; + options.headers.Cookie = cookie; + }; +} export function httpsRequest(url, params) { return new Promise((resolve, reject) => { + addCookieHandler(url, params); const request = https.request(url, params, (response) => { const data = []; @@ -30,6 +65,7 @@ export function httpsRequest(url, params) { export function httpRequest(url, params) { return new Promise((resolve, reject) => { + addCookieHandler(url, params); const request = http.request(url, params, (response) => { const data = []; From 0a5cdfc57a82452ab4f5382ed6ed5151e1ec42dd Mon Sep 17 00:00:00 2001 From: Jason Fischer Date: Wed, 14 Sep 2022 11:08:36 -0700 Subject: [PATCH 29/47] Refactor setting cookie header into own method --- src/utils/http.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/utils/http.js b/src/utils/http.js index 76f0f8b8..9f663cd4 100644 --- a/src/utils/http.js +++ b/src/utils/http.js @@ -5,13 +5,17 @@ import { Cookie, CookieJar } from 'tough-cookie'; const cookieJar = new CookieJar(); -function addCookieHandler(url, params) { +function setCookieHeader(url, params) { // add cookie header, if we have one in the jar const existingCookie = cookieJar.getCookieStringSync(url.toString()); if (existingCookie) { params.headers = params.headers ?? {}; params.headers.Cookie = existingCookie; } +} + +function addCookieHandler(url, params) { + setCookieHeader(url, params); // handle cookies during redirects params.beforeRedirect = (options, responseInfo) => { @@ -30,9 +34,7 @@ function addCookieHandler(url, params) { cookieJar.setCookieSync(cookies[i], options.href); } - const cookie = cookieJar.getCookieStringSync(options.href); - options.headers = options.headers ?? {}; - options.headers.Cookie = cookie; + setCookieHeader(options.href, options); }; } From be78d063a48716ad11078b5dd6a8ca338e2af7e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81ngel=20Fern=C3=A1ndez=20S=C3=A1nchez?= Date: Wed, 14 Sep 2022 07:37:28 +0000 Subject: [PATCH 30/47] Translated using Weblate (Spanish) Currently translated at 100.0% (93 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index c184907e..4be7593c 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -110,10 +110,10 @@ }, "coinmarketcap": { "configure": "Configurar una o varias criptomonedas para su seguimiento", - "1hour": "1 Hour", - "1day": "1 Day", - "7days": "7 Days", - "30days": "30 Days" + "1hour": "1 Hora", + "1day": "1 Día", + "7days": "7 Dias", + "30days": "30 Dias" }, "gotify": { "apps": "Aplicaciones", From 0b24533a13d98d785f1a124447b694e5c480b4cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Benn=C3=A0ssar=20Carretero?= Date: Wed, 14 Sep 2022 07:21:15 +0000 Subject: [PATCH 31/47] Translated using Weblate (Spanish) Currently translated at 100.0% (93 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 4be7593c..daf2e041 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -1,6 +1,6 @@ { "widget": { - "missing_type": "Tipo de widget faltante: {{type}}", + "missing_type": "Falta el tipo de widget: {{type}}", "api_error": "Error de API", "status": "Estado" }, From 70010d09d68059f05f8743156b4c97624257dd3f Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Wed, 14 Sep 2022 11:38:01 +0000 Subject: [PATCH 32/47] Translated using Weblate (French) Currently translated at 100.0% (93 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index f7d77f88..44b6e614 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -110,21 +110,21 @@ "available": "Disponible" }, "sabnzbd": { - "rate": "Taux", + "rate": "Débit", "queue": "Queue", "timeleft": "Temps restant" }, "nzbget": { "remaining": "Restant", "downloaded": "Téléchargé", - "rate": "Évaluer" + "rate": "Débit" }, "coinmarketcap": { "configure": "Configurer une ou plusieurs crypto-monnaies à suivre", - "1hour": "1 Hour", - "1day": "1 Day", - "7days": "7 Days", - "30days": "30 Days" + "1hour": "1 Heure", + "1day": "1 Jour", + "7days": "7 Jours", + "30days": "30 Jours" }, "gotify": { "apps": "Applications", From b154314b7977444a4ffa65ea1bab7eef4992db20 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 14 Sep 2022 10:38:57 +0000 Subject: [PATCH 33/47] Translated using Weblate (Russian) Currently translated at 22.5% (21 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index c8d95672..194526aa 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -8,7 +8,7 @@ "placeholder": "Поиск…" }, "resources": { - "total": "Общий", + "total": "Всего", "free": "Свободно", "used": "Использовано", "load": "Load" @@ -89,8 +89,8 @@ }, "weather": { "wait": "Пожалуйста подождите", - "current": "Текущее местоположение", - "allow": "Click to allow", + "current": "Текущая локация", + "allow": "Нажмите, чтобы разрешить", "updating": "Обновление" }, "overseerr": { From 8c0c0f1617f57abd2406c398fe4306baf37ae949 Mon Sep 17 00:00:00 2001 From: nicedc Date: Wed, 14 Sep 2022 16:00:56 +0000 Subject: [PATCH 34/47] Translated using Weblate (Chinese (Simplified)) Currently translated at 89.2% (83 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 723776aa..793328ca 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -128,9 +128,9 @@ "numberOfFailQueries": "Fail Queries" }, "transmission": { - "download": "Download", - "upload": "Upload", + "download": "下载", + "upload": "上传", "leech": "Leech", - "seed": "Seed" + "seed": "做种" } } From c58a52c797df333c593dcdc98da8244653ddcfa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Benn=C3=A0ssar=20Carretero?= Date: Wed, 14 Sep 2022 07:22:49 +0000 Subject: [PATCH 35/47] Translated using Weblate (Catalan) Currently translated at 100.0% (93 of 93 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 148 +++++++++++++++++----------------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 94936d40..75c2165d 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -1,136 +1,136 @@ { "widget": { - "missing_type": "Missing Widget Type: {{type}}", - "api_error": "API Error", - "status": "Status" + "missing_type": "Falta el tipus de widget: {{type}}", + "api_error": "Error d'API", + "status": "Estat" }, "weather": { - "allow": "Click to allow", - "updating": "Updating", - "wait": "Please wait", - "current": "Current Location" + "allow": "Feu clic per permetre", + "updating": "Actualitzant", + "wait": "Si us plau, espereu", + "current": "Localització actual" }, "search": { - "placeholder": "Search…" + "placeholder": "Cercar…" }, "transmission": { - "seed": "Seed", - "download": "Download", - "upload": "Upload", - "leech": "Leech" + "seed": "Llavors", + "download": "Descàrrega", + "upload": "Càrrega", + "leech": "Companys" }, "sonarr": { - "wanted": "Wanted", - "queued": "Queued", - "series": "Series" + "wanted": "Volgut", + "queued": "En cua", + "series": "Sèries" }, "speedtest": { "ping": "Ping", - "upload": "Upload", - "download": "Download" + "upload": "Càrrega", + "download": "Descàrrega" }, "resources": { "total": "Total", - "free": "Free", - "used": "Used", - "load": "Load" + "free": "Lliure", + "used": "Usat", + "load": "Càrrega" }, "docker": { "rx": "RX", "tx": "TX", "mem": "MEM", "cpu": "CPU", - "offline": "Offline" + "offline": "Fora de línia" }, "emby": { - "playing": "Playing", - "transcoding": "Transcoding", - "bitrate": "Bitrate", - "no_active": "No Active Streams" + "playing": "Reproduint", + "transcoding": "Transcodificant", + "bitrate": "Taxa de bits", + "no_active": "Sense transmissions actives" }, "tautulli": { - "playing": "Playing", - "transcoding": "Transcoding", - "bitrate": "Bitrate", - "no_active": "No Active Streams" + "playing": "Reproduint", + "transcoding": "Transcodificant", + "bitrate": "Taxa de bits", + "no_active": "Sense transmissions actives" }, "nzbget": { - "rate": "Rate", - "remaining": "Remaining", - "downloaded": "Downloaded" + "rate": "Taxa", + "remaining": "Restant", + "downloaded": "Descarregat" }, "sabnzbd": { - "rate": "Rate", - "queue": "Queue", - "timeleft": "Time Left" + "rate": "Taxa", + "queue": "Cua", + "timeleft": "Temps restant" }, "rutorrent": { - "active": "Active", - "upload": "Upload", - "download": "Download" + "active": "Actiu", + "upload": "Càrrega", + "download": "Descàrrega" }, "radarr": { - "wanted": "Wanted", - "queued": "Queued", - "movies": "Movies" + "wanted": "Volgut", + "queued": "En cua", + "movies": "Pel·lícules" }, "readarr": { - "wanted": "Wanted", - "queued": "Queued", - "books": "Books" + "wanted": "Volgut", + "queued": "En cua", + "books": "Llibres" }, "ombi": { - "pending": "Pending", - "approved": "Approved", - "available": "Available" + "pending": "Pendent", + "approved": "Aprovat", + "available": "Disponible" }, "jellyseerr": { - "pending": "Pending", - "approved": "Approved", - "available": "Available" + "pending": "Pendent", + "approved": "Aprovat", + "available": "Disponible" }, "overseerr": { - "pending": "Pending", - "approved": "Approved", - "available": "Available" + "pending": "Pendent", + "approved": "Aprovat", + "available": "Disponible" }, "pihole": { - "queries": "Queries", - "blocked": "Blocked", - "gravity": "Gravity" + "queries": "Consultes", + "blocked": "Bloquejat", + "gravity": "Gravetat" }, "portainer": { - "running": "Running", - "stopped": "Stopped", + "running": "Executant", + "stopped": "Aturat", "total": "Total" }, "traefik": { - "routers": "Routers", - "services": "Services", + "routers": "Encaminadors", + "services": "Serveis", "middleware": "Middleware" }, "npm": { "total": "Total", - "enabled": "Enabled", - "disabled": "Disabled" + "enabled": "Activat", + "disabled": "Desactivat" }, "coinmarketcap": { - "configure": "Configure one or more crypto currencies to track", - "1hour": "1 Hour", - "1day": "1 Day", - "7days": "7 Days", - "30days": "30 Days" + "configure": "Configura una o més criptomonedes per fer el seguiment", + "1hour": "1 Hora", + "1day": "1 Dia", + "7days": "7 Dies", + "30days": "30 Dies" }, "gotify": { - "apps": "Applications", + "apps": "Aplicacions", "clients": "Clients", - "messages": "Messages" + "messages": "Missatges" }, "prowlarr": { - "enableIndexers": "Indexers", - "numberOfGrabs": "Grabs", - "numberOfQueries": "Queries", - "numberOfFailGrabs": "Fail Grabs", - "numberOfFailQueries": "Fail Queries" + "enableIndexers": "Indexadors", + "numberOfGrabs": "Captures", + "numberOfQueries": "Consultes", + "numberOfFailGrabs": "Captures fallides", + "numberOfFailQueries": "Consultes fallides" } } From 14c572102ef521c15a15e6348e33ff5f70da62f1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:47 +0000 Subject: [PATCH 36/47] Translated using Weblate (German) Currently translated at 67.3% (64 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 74d79bb8..1ab448f3 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -132,5 +132,9 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From 48f73eab06e6cadb366ac9e5d71e63e3608a1ed6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:47 +0000 Subject: [PATCH 37/47] Translated using Weblate (Spanish) Currently translated at 97.8% (93 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index daf2e041..1483dc28 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -132,5 +132,9 @@ "upload": "Subida", "leech": "Egoístas (Leech)", "seed": "Semillas" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From 0543f28fd4990042a919a8d87a0e9f9111ab4261 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:47 +0000 Subject: [PATCH 38/47] Translated using Weblate (French) Currently translated at 97.8% (93 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 44b6e614..30920e5c 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -143,5 +143,9 @@ "upload": "Envoi", "leech": "Leech", "seed": "Seed" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From c3533de7fa4c767a9b2aa1b6f824d5c16e1779f7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:47 +0000 Subject: [PATCH 39/47] Translated using Weblate (Portuguese) Currently translated at 92.6% (88 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index be261b44..17333904 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -143,5 +143,9 @@ "upload": "Envio", "leech": "Leech", "seed": "Seed" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From 999e55c7af4e75749a4004db438c72c373d765c4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:47 +0000 Subject: [PATCH 40/47] Translated using Weblate (Russian) Currently translated at 22.1% (21 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 194526aa..b9e92538 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -132,5 +132,9 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From 8bb850d96b93f587c8d2292c30376222c91ac4c6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:48 +0000 Subject: [PATCH 41/47] Translated using Weblate (Chinese (Simplified)) Currently translated at 87.3% (83 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 793328ca..a2d1f43d 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -132,5 +132,9 @@ "upload": "上传", "leech": "Leech", "seed": "做种" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From a0338beaae467ccaac0694ec698a926f8807b354 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:48 +0000 Subject: [PATCH 42/47] Translated using Weblate (Italian) Currently translated at 72.6% (69 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 62658ca9..2397f08e 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -132,5 +132,9 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From 97736d41630bd6ba5aa2458b0b5fcc4ebb605385 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:47 +0000 Subject: [PATCH 43/47] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 83.1% (79 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 33894cdf..89752968 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -132,5 +132,9 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From 370f156ae0db3e05ded4a5ae0aba315b9fcf786d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:48 +0000 Subject: [PATCH 44/47] Translated using Weblate (Vietnamese) Currently translated at 34.7% (33 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 1d15ff9d..435251d8 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -132,5 +132,9 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From d32ecc9080f4d3fe17c39d55adcb570ccf9f8161 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:48 +0000 Subject: [PATCH 45/47] Translated using Weblate (Dutch) Currently translated at 65.2% (62 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 0259d05c..e8eba27a 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -132,5 +132,9 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From a7d80fec89fbb5f2872b5496960ab0921f93a07b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:48 +0000 Subject: [PATCH 46/47] Translated using Weblate (Chinese (Traditional)) Currently translated at 9.4% (9 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index e0f03e29..4cf40db4 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -132,5 +132,9 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } } From 15a8c4f0d7abbe9edcdda90710d94a39fa8cf77d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Sep 2022 19:29:47 +0000 Subject: [PATCH 47/47] Translated using Weblate (Catalan) Currently translated at 97.8% (93 of 95 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 75c2165d..04d62e9e 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -132,5 +132,9 @@ "numberOfQueries": "Consultes", "numberOfFailGrabs": "Captures fallides", "numberOfFailQueries": "Consultes fallides" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" } }