From f377174bf2bb6051d2158a324e821d25e24ac900 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Tue, 28 Oct 2025 14:56:52 +0100 Subject: [PATCH] Mark all the unknown achievements as done and remove the survey one during the installation --- src/js/background/backgroundLogic.js | 15 +++++++++++++++ src/js/popup.js | 25 ++++++++++++++++--------- src/manifest.json | 2 +- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/js/background/backgroundLogic.js b/src/js/background/backgroundLogic.js index 7f347b8..fb90ba6 100644 --- a/src/js/background/backgroundLogic.js +++ b/src/js/background/backgroundLogic.js @@ -38,6 +38,7 @@ const backgroundLogic = { browser.runtime.onInstalled.addListener((details) => { this.updateTranslationInManifest(); this._undoDefault820SortTabsKeyboardShortcut(details); + this._removeSurveyAchievement(); }); browser.runtime.onStartup.addListener(this.updateTranslationInManifest); }, @@ -68,6 +69,20 @@ const backgroundLogic = { } }, + /** + * We left an achievement entry in storage during a user research study in + * version 8.3.1. This method removes that entry to prevent broken logic in + * the achievement views. + */ + async _removeSurveyAchievement() { + const achievementsStorage = await browser.storage.local.get({ achievements: [] }); + const achievements = achievementsStorage.achievements; + const filtered = achievements.filter(a => a.name !== "survey"); + if (filtered.length !== achievements.length) { + await browser.storage.local.set({achievements: filtered}); + } + }, + updateTranslationInManifest() { for (let index = 0; index < 10; index++) { const ajustedIndex = index + 1; // We want to start from 1 instead of 0 in the UI. diff --git a/src/js/popup.js b/src/js/popup.js index dd2492a..d552009 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -137,19 +137,26 @@ const Logic = { }, async showAchievementOrContainersListPanel() { - // Do we need to show an achievement panel? - let showAchievements = false; const achievementsStorage = await browser.storage.local.get({ achievements: [] }); - for (const achievement of achievementsStorage.achievements) { - if (!achievement.done) { - showAchievements = true; + const achievements = achievementsStorage.achievements; + + let saveAchivements = false; + for (const achievement of achievements.filter(a => !a.done)) { + if (achievement.name === "manyContainersOpened") { + this.showPanel(P_CONTAINERS_ACHIEVEMENT); + return; } + + // We have found an unknown achievement. Let's mark it as done. + achievement.done = true; + saveAchivements = true; } - if (showAchievements) { - this.showPanel(P_CONTAINERS_ACHIEVEMENT); - } else { - this.showPanel(P_CONTAINERS_LIST); + + if (saveAchivements) { + browser.storage.local.set({ achievements }); } + + this.showPanel(P_CONTAINERS_LIST); }, // In case the user wants to click multiple actions, diff --git a/src/manifest.json b/src/manifest.json index b533866..ad0c257 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Firefox Multi-Account Containers", - "version": "8.3.2", + "version": "8.3.4", "incognito": "not_allowed", "description": "__MSG_extensionDescription__", "icons": {