diff --git a/ui/src/Components/SilenceModal/Browser/index.js b/ui/src/Components/SilenceModal/Browser/index.js index 54ed0fbec..0dfbb7c58 100644 --- a/ui/src/Components/SilenceModal/Browser/index.js +++ b/ui/src/Components/SilenceModal/Browser/index.js @@ -137,7 +137,7 @@ const Browser = observer( resetIfNeeded(totalItemsCount, maxPerPage) { const totalPages = Math.ceil(totalItemsCount / maxPerPage); if (this.activePage > totalPages) { - this.activePage = totalPages; + this.activePage = Math.max(1, totalPages); } } }, diff --git a/ui/src/Components/SilenceModal/Browser/index.test.js b/ui/src/Components/SilenceModal/Browser/index.test.js index a2eaec284..0e56b70f2 100644 --- a/ui/src/Components/SilenceModal/Browser/index.test.js +++ b/ui/src/Components/SilenceModal/Browser/index.test.js @@ -203,7 +203,7 @@ describe("", () => { expect(tree.find("ManagedSilence")).toHaveLength(1); }); - it("resetes pagination to last page on truncation", async () => { + it("resets pagination to last page on truncation", async () => { fetch.mockResponseOnce(JSON.stringify(MockSilenceList(11))); const tree = MountedBrowser(); const instance = tree.instance(); @@ -224,6 +224,14 @@ describe("", () => { expect(tree.find("ManagedSilence")).toHaveLength(2); expect(instance.pagination.activePage).toBe(2); + + fetch.mockResponseOnce(JSON.stringify([])); + instance.onFetch(); + await expect(instance.dataSource.fetch).resolves.toBeUndefined(); + tree.update(); + + expect(tree.find("ManagedSilence")).toHaveLength(0); + expect(instance.pagination.activePage).toBe(1); }); it("renders error after failed fetch", async () => {