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,