From a82f9996451fff7d7d16d470975e59bdf42eb2e9 Mon Sep 17 00:00:00 2001 From: AKolenda <91154044+AKolenda@users.noreply.github.com> Date: Sun, 13 Sep 2026 13:50:52 -0600 Subject: [PATCH] fix(desktop): make snapshot extension enable idempotent --- apps/desktop/src/snapShot/GnomeCaptureSetup.test.ts | 7 +++++++ apps/desktop/src/snapShot/GnomeCaptureSetup.ts | 1 + 2 files changed, 8 insertions(+) diff --git a/apps/desktop/src/snapShot/GnomeCaptureSetup.test.ts b/apps/desktop/src/snapShot/GnomeCaptureSetup.test.ts index 0c89f332171d..d0097f9e8cbf 100644 --- a/apps/desktop/src/snapShot/GnomeCaptureSetup.test.ts +++ b/apps/desktop/src/snapShot/GnomeCaptureSetup.test.ts @@ -171,6 +171,13 @@ it("enables and disables only the capture UUID", async () => { setup.close(); }); +it("treats enabling an already active extension as success", async () => { + const { setup, call } = fixture({ state: 1, version: 2 }); + await expect(setup.perform("enable-extension")).resolves.toBeUndefined(); + expect(call.mock.calls.map(([message]) => message.member)).not.toContain("EnableExtension"); + setup.close(); +}); + it("never changes the global user-extensions preference", async () => { const { setup, call } = fixture({ state: 2, version: 2, enabled: false }); await expect(setup.perform("enable-extension")).rejects.toThrow("GNOME has disabled"); diff --git a/apps/desktop/src/snapShot/GnomeCaptureSetup.ts b/apps/desktop/src/snapShot/GnomeCaptureSetup.ts index 429a9986d94c..dec3ac1108fc 100644 --- a/apps/desktop/src/snapShot/GnomeCaptureSetup.ts +++ b/apps/desktop/src/snapShot/GnomeCaptureSetup.ts @@ -232,6 +232,7 @@ export class GnomeCaptureSetup { // GNOME discovers a newly installed local extension at the next login. return; } + if (action === "enable-extension" && state.status === "enabled") return; if (action === "enable-extension" && state.status !== "disabled") throw new Error(state.message); const result = await this.call({