From 6b5e8ab0c7d2a6472852eee2fffbbefa8568a47f Mon Sep 17 00:00:00 2001 From: Zlendy Date: Fri, 27 Jan 2023 00:03:52 +0100 Subject: [PATCH 1/3] Add Immich Widget --- public/locales/en/common.json | 6 ++++++ src/widgets/components.js | 1 + src/widgets/immich/component.jsx | 22 ++++++++++++++++++++++ src/widgets/immich/widget.js | 8 ++++++++ src/widgets/widgets.js | 2 ++ 5 files changed, 39 insertions(+) create mode 100644 src/widgets/immich/component.jsx create mode 100644 src/widgets/immich/widget.js diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 9202c249..34058db9 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -439,5 +439,11 @@ "failed_tasks_24h": "Failed Tasks 24h", "cpu_usage": "CPU", "memory_usage": "Memory" + }, + "immich": { + "users": "Users", + "photos": "Photos", + "videos": "Videos", + "storage": "Storage" } } \ No newline at end of file diff --git a/src/widgets/components.js b/src/widgets/components.js index 17a2d7e3..43a46fa9 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -62,6 +62,7 @@ const components = { unifi: dynamic(() => import("./unifi/component")), watchtower: dynamic(() => import("./watchtower/component")), xteve: dynamic(() => import("./xteve/component")), + immich: dynamic(() => import("./immich/component")), }; export default components; diff --git a/src/widgets/immich/component.jsx b/src/widgets/immich/component.jsx new file mode 100644 index 00000000..212bac56 --- /dev/null +++ b/src/widgets/immich/component.jsx @@ -0,0 +1,22 @@ +import Container from "components/services/widget/container"; +import Block from "components/services/widget/block"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +export default function Component({ service }) { + const { widget } = service; + + const { data: immichData, error: immichError } = useWidgetAPI(widget); + + if (immichError) { + return ; + } + + return ( + + + + + + + ); +} diff --git a/src/widgets/immich/widget.js b/src/widgets/immich/widget.js new file mode 100644 index 00000000..85867aeb --- /dev/null +++ b/src/widgets/immich/widget.js @@ -0,0 +1,8 @@ +import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; + +const widget = { + api: "{url}/api/server-info/stats", + proxyHandler: credentialedProxyHandler, +}; + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index 42f7aa7b..133903fb 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -56,6 +56,7 @@ import truenas from "./truenas/widget"; import unifi from "./unifi/widget"; import watchtower from "./watchtower/widget"; import xteve from "./xteve/widget"; +import immich from "./immich/widget"; const widgets = { adguard, @@ -119,6 +120,7 @@ const widgets = { unifi_console: unifi, watchtower, xteve, + immich, }; export default widgets; From dbcd6f5df781b9ee80efabbe66d0214ae009e44a Mon Sep 17 00:00:00 2001 From: Zlendy Date: Sat, 28 Jan 2023 14:27:50 +0100 Subject: [PATCH 2/3] Fix: Immich API no longer has an "error" property --- src/widgets/immich/component.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/widgets/immich/component.jsx b/src/widgets/immich/component.jsx index 212bac56..1c5aa902 100644 --- a/src/widgets/immich/component.jsx +++ b/src/widgets/immich/component.jsx @@ -5,10 +5,10 @@ import useWidgetAPI from "utils/proxy/use-widget-api"; export default function Component({ service }) { const { widget } = service; - const { data: immichData, error: immichError } = useWidgetAPI(widget); + const { data: immichData } = useWidgetAPI(widget); - if (immichError) { - return ; + if (immichData?.statusCode) { // Unauthorized + return ; } return ( From 19cf9969b984f14b4fbffa4dad54b63c7b79d87a Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 28 Jan 2023 21:48:26 -0800 Subject: [PATCH 3/3] Fix immich widget error catching & awaiting data --- src/widgets/immich/component.jsx | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/widgets/immich/component.jsx b/src/widgets/immich/component.jsx index 1c5aa902..310ce0b2 100644 --- a/src/widgets/immich/component.jsx +++ b/src/widgets/immich/component.jsx @@ -5,18 +5,29 @@ import useWidgetAPI from "utils/proxy/use-widget-api"; export default function Component({ service }) { const { widget } = service; - const { data: immichData } = useWidgetAPI(widget); + const { data: immichData, error: immichError } = useWidgetAPI(widget); - if (immichData?.statusCode) { // Unauthorized - return ; + if (immichError || immichData?.statusCode === 401) { + return ; + } + + if (!immichData) { + return ( + + + + + + + ); } return ( - - - - + + + + ); }