diff --git a/docs/widgets/services/immich.md b/docs/widgets/services/immich.md index 63780ee04..4da6e187d 100644 --- a/docs/widgets/services/immich.md +++ b/docs/widgets/services/immich.md @@ -5,6 +5,11 @@ description: Immich Widget Configuration Learn more about [Immich](https://github.com/immich-app/immich). +| Immich Version | Homepage Widget Version | +| -------------- | ----------------------- | +| < v1.118 | 1 (default) | +| >= v1.118 | 2 | + Find your API key under `Account Settings > API Keys`. Allowed fields: `["users" ,"photos", "videos", "storage"]`. @@ -16,4 +21,5 @@ widget: type: immich url: http://immich.host.or.ip key: adminapikeyadminapikeyadminapikey + version: 2 # optional, default is 1 ``` diff --git a/src/components/bookmarks/item.jsx b/src/components/bookmarks/item.jsx index 5d3b351bd..dcfcd43fd 100644 --- a/src/components/bookmarks/item.jsx +++ b/src/components/bookmarks/item.jsx @@ -13,6 +13,7 @@ export default function Item({ bookmark }) { 1 || (versionData?.major === 1 && versionData?.minor > 84) ? "statistics" : "stats"; - const { data: immichData, error: immichError } = useWidgetAPI(widget, endpoint); + const { version = 1 } = widget; + + const versionEndpoint = version === 2 ? "version_v2" : "version"; + + const { data: versionData, error: versionError } = useWidgetAPI(widget, versionEndpoint); + + let statsEndpoint = version === 2 ? "statistics_v2" : "stats"; + if (version === 1) { + // see https://github.com/gethomepage/homepage/issues/2282 + statsEndpoint = + versionData?.major > 1 || (versionData?.major === 1 && versionData?.minor > 84) ? "statistics" : "stats"; + } + const { data: immichData, error: immichError } = useWidgetAPI(widget, statsEndpoint); if (immichError || versionError || immichData?.statusCode === 401) { return ; diff --git a/src/widgets/immich/widget.js b/src/widgets/immich/widget.js index 230f8ab27..da3308c25 100644 --- a/src/widgets/immich/widget.js +++ b/src/widgets/immich/widget.js @@ -1,18 +1,24 @@ import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; const widget = { - api: "{url}/api/server-info/{endpoint}", + api: "{url}/api/{endpoint}", proxyHandler: credentialedProxyHandler, mappings: { version: { - endpoint: "version", + endpoint: "server-info/version", }, statistics: { - endpoint: "statistics", + endpoint: "server-info/statistics", }, stats: { - endpoint: "stats", + endpoint: "server-info/stats", + }, + version_v2: { + endpoint: "server/version", + }, + statistics_v2: { + endpoint: "server/statistics", }, }, }; diff --git a/src/widgets/wgeasy/component.jsx b/src/widgets/wgeasy/component.jsx index 125b92bfa..db39c81a9 100644 --- a/src/widgets/wgeasy/component.jsx +++ b/src/widgets/wgeasy/component.jsx @@ -38,7 +38,7 @@ export default function Component({ service }) { - + );