diff --git a/docs/widgets/services/jellyseerr.md b/docs/widgets/services/seerr.md
similarity index 61%
rename from docs/widgets/services/jellyseerr.md
rename to docs/widgets/services/seerr.md
index 8ffe5fbdf..828722337 100644
--- a/docs/widgets/services/jellyseerr.md
+++ b/docs/widgets/services/seerr.md
@@ -1,12 +1,14 @@
---
-title: Jellyseerr
-description: Jellyseerr Widget Configuration
+title: Seerr Widget
+description: Seerr Widget Configuration
---
-Learn more about [Jellyseerr](https://github.com/Fallenbagel/jellyseerr).
+Learn more about [Seerr](https://github.com/seerr-team/seerr).
Find your API key under `Settings > General > API Key`.
+_Note that Jellyseerr was merged with Overseerr and renamed Seerr._
+
Allowed fields: `["pending", "approved", "available", "issues"]`.
Default fields: `["pending", "approved", "available"]`.
diff --git a/mkdocs.yml b/mkdocs.yml
index 6b240aee4..5452d74cd 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -91,7 +91,6 @@ nav:
- widgets/services/jackett.md
- widgets/services/jdownloader.md
- widgets/services/jellyfin.md
- - widgets/services/jellyseerr.md
- widgets/services/jellystat.md
- widgets/services/kavita.md
- widgets/services/komga.md
@@ -151,6 +150,7 @@ nav:
- widgets/services/rutorrent.md
- widgets/services/sabnzbd.md
- widgets/services/scrutiny.md
+ - widgets/services/seerr.md
- widgets/services/slskd.md
- widgets/services/sonarr.md
- widgets/services/speedtest-tracker.md
diff --git a/public/locales/en/common.json b/public/locales/en/common.json
index 210eb538c..142387984 100644
--- a/public/locales/en/common.json
+++ b/public/locales/en/common.json
@@ -289,7 +289,7 @@
"approved": "Approved",
"available": "Available"
},
- "jellyseerr": {
+ "seerr": {
"pending": "Pending",
"approved": "Approved",
"available": "Available",
diff --git a/src/widgets/components.js b/src/widgets/components.js
index c0c9c9fc6..d0c2419d2 100644
--- a/src/widgets/components.js
+++ b/src/widgets/components.js
@@ -65,7 +65,7 @@ const components = {
jackett: dynamic(() => import("./jackett/component")),
jdownloader: dynamic(() => import("./jdownloader/component")),
jellyfin: dynamic(() => import("./jellyfin/component")),
- jellyseerr: dynamic(() => import("./jellyseerr/component")),
+ jellyseerr: dynamic(() => import("./seerr/component")),
jellystat: dynamic(() => import("./jellystat/component")),
kavita: dynamic(() => import("./kavita/component")),
komga: dynamic(() => import("./komga/component")),
@@ -124,6 +124,7 @@ const components = {
rutorrent: dynamic(() => import("./rutorrent/component")),
sabnzbd: dynamic(() => import("./sabnzbd/component")),
scrutiny: dynamic(() => import("./scrutiny/component")),
+ seerr: dynamic(() => import("./seerr/component")),
slskd: dynamic(() => import("./slskd/component")),
sonarr: dynamic(() => import("./sonarr/component")),
speedtest: dynamic(() => import("./speedtest/component")),
diff --git a/src/widgets/jellyseerr/component.jsx b/src/widgets/seerr/component.jsx
similarity index 57%
rename from src/widgets/jellyseerr/component.jsx
rename to src/widgets/seerr/component.jsx
index d405cbf62..9f88c7838 100644
--- a/src/widgets/jellyseerr/component.jsx
+++ b/src/widgets/seerr/component.jsx
@@ -3,12 +3,12 @@ import Container from "components/services/widget/container";
import useWidgetAPI from "utils/proxy/use-widget-api";
-export const jellyseerrDefaultFields = ["pending", "approved", "available"];
+export const seerrDefaultFields = ["pending", "approved", "available"];
export default function Component({ service }) {
const { widget } = service;
- widget.fields = widget?.fields?.length ? widget.fields : jellyseerrDefaultFields;
+ widget.fields = widget?.fields?.length ? widget.fields : seerrDefaultFields;
const isIssueEnabled = widget.fields.includes("issues");
const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count");
@@ -20,20 +20,20 @@ export default function Component({ service }) {
if (!statsData || (isIssueEnabled && !issueData)) {
return (
-
-
-
-
+
+
+
+
);
}
return (
-
-
-
-
+
+
+
+
);
}
diff --git a/src/widgets/jellyseerr/component.test.jsx b/src/widgets/seerr/component.test.jsx
similarity index 70%
rename from src/widgets/jellyseerr/component.test.jsx
rename to src/widgets/seerr/component.test.jsx
index 16a3fccfb..5d2e63c48 100644
--- a/src/widgets/jellyseerr/component.test.jsx
+++ b/src/widgets/seerr/component.test.jsx
@@ -8,9 +8,9 @@ import { renderWithProviders } from "test-utils/render-with-providers";
const { useWidgetAPI } = vi.hoisted(() => ({ useWidgetAPI: vi.fn() }));
vi.mock("utils/proxy/use-widget-api", () => ({ default: useWidgetAPI }));
-import Component, { jellyseerrDefaultFields } from "./component";
+import Component, { seerrDefaultFields } from "./component";
-describe("widgets/jellyseerr/component", () => {
+describe("widgets/seerr/component", () => {
beforeEach(() => {
vi.clearAllMocks();
});
@@ -20,16 +20,16 @@ describe("widgets/jellyseerr/component", () => {
.mockReturnValueOnce({ data: undefined, error: undefined }) // request/count
.mockReturnValueOnce({ data: undefined, error: undefined }); // issue/count disabled (endpoint = "")
- const service = { widget: { type: "jellyseerr", url: "http://x" } };
+ const service = { widget: { type: "seerr", url: "http://x" } };
const { container } = renderWithProviders(, { settings: { hideErrors: false } });
- expect(service.widget.fields).toEqual(jellyseerrDefaultFields);
+ expect(service.widget.fields).toEqual(seerrDefaultFields);
expect(useWidgetAPI.mock.calls[1][1]).toBe("");
expect(container.querySelectorAll(".service-block")).toHaveLength(3);
- expect(screen.getByText("jellyseerr.pending")).toBeInTheDocument();
- expect(screen.getByText("jellyseerr.approved")).toBeInTheDocument();
- expect(screen.getByText("jellyseerr.available")).toBeInTheDocument();
- expect(screen.queryByText("jellyseerr.issues")).toBeNull();
+ expect(screen.getByText("seerr.pending")).toBeInTheDocument();
+ expect(screen.getByText("seerr.approved")).toBeInTheDocument();
+ expect(screen.getByText("seerr.available")).toBeInTheDocument();
+ expect(screen.queryByText("seerr.issues")).toBeNull();
});
it("renders issues when enabled (and calls the issue/count endpoint)", () => {
@@ -38,7 +38,7 @@ describe("widgets/jellyseerr/component", () => {
.mockReturnValueOnce({ data: { open: 1, total: 2 }, error: undefined });
const service = {
- widget: { type: "jellyseerr", url: "http://x", fields: ["pending", "approved", "available", "issues"] },
+ widget: { type: "seerr", url: "http://x", fields: ["pending", "approved", "available", "issues"] },
};
const { container } = renderWithProviders(, { settings: { hideErrors: false } });
@@ -52,10 +52,9 @@ describe("widgets/jellyseerr/component", () => {
.mockReturnValueOnce({ data: { pending: 0, approved: 0, available: 0 }, error: undefined })
.mockReturnValueOnce({ data: undefined, error: { message: "nope" } });
- renderWithProviders(
- ,
- { settings: { hideErrors: false } },
- );
+ renderWithProviders(, {
+ settings: { hideErrors: false },
+ });
expect(screen.getAllByText(/widget\.api_error/i).length).toBeGreaterThan(0);
expect(screen.getByText("nope")).toBeInTheDocument();
diff --git a/src/widgets/jellyseerr/widget.js b/src/widgets/seerr/widget.js
similarity index 100%
rename from src/widgets/jellyseerr/widget.js
rename to src/widgets/seerr/widget.js
diff --git a/src/widgets/jellyseerr/widget.test.js b/src/widgets/seerr/widget.test.js
similarity index 100%
rename from src/widgets/jellyseerr/widget.test.js
rename to src/widgets/seerr/widget.test.js
diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js
index cef020e51..af4d875ca 100644
--- a/src/widgets/widgets.js
+++ b/src/widgets/widgets.js
@@ -56,7 +56,6 @@ import immich from "./immich/widget";
import jackett from "./jackett/widget";
import jdownloader from "./jdownloader/widget";
import jellyfin from "./jellyfin/widget";
-import jellyseerr from "./jellyseerr/widget";
import jellystat from "./jellystat/widget";
import karakeep from "./karakeep/widget";
import kavita from "./kavita/widget";
@@ -116,6 +115,7 @@ import romm from "./romm/widget";
import rutorrent from "./rutorrent/widget";
import sabnzbd from "./sabnzbd/widget";
import scrutiny from "./scrutiny/widget";
+import seerr from "./seerr/widget";
import slskd from "./slskd/widget";
import sonarr from "./sonarr/widget";
import speedtest from "./speedtest/widget";
@@ -212,7 +212,7 @@ const widgets = {
jackett,
jdownloader,
jellyfin,
- jellyseerr,
+ jellyseerr: seerr,
jellystat,
kavita,
komga,
@@ -272,6 +272,7 @@ const widgets = {
rutorrent,
sabnzbd,
scrutiny,
+ seerr,
slskd,
sonarr,
speedtest,