Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b70aca184 | |||
| 0539c12ba2 | |||
| d6cb8f7707 | |||
| 89aa2ffe5b | |||
| f072ad478c | |||
| 91a92bd446 | |||
| f0274d1e45 | |||
| 0cf1e14731 | |||
| 1406ad34b4 | |||
| f377174bf2 | |||
| f6a59ab54e | |||
| 542161f8b4 | |||
| a5cbb48907 | |||
| 56c5838d2d | |||
| 35956f132a | |||
| b4ad47bf04 | |||
| 6a5e48e8b3 |
Generated
+2325
-14553
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -2,7 +2,7 @@
|
|||||||
"name": "testpilot-containers",
|
"name": "testpilot-containers",
|
||||||
"title": "Multi-Account Containers",
|
"title": "Multi-Account Containers",
|
||||||
"description": "Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.",
|
"description": "Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.",
|
||||||
"version": "8.3.1",
|
"version": "8.3.5",
|
||||||
"author": "Andrea Marchesini, Luke Crouch, Lesley Norton, Kendall Werts, Maxx Crawford, Jonathan Kingston",
|
"author": "Andrea Marchesini, Luke Crouch, Lesley Norton, Kendall Werts, Maxx Crawford, Jonathan Kingston",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/mozilla/multi-account-containers/issues"
|
"url": "https://github.com/mozilla/multi-account-containers/issues"
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
"stylelint": "^13.5.0",
|
"stylelint": "^13.5.0",
|
||||||
"stylelint-config-standard": "^20.0.0",
|
"stylelint-config-standard": "^20.0.0",
|
||||||
"stylelint-order": "^4.0.0",
|
"stylelint-order": "^4.0.0",
|
||||||
"web-ext": "^7.5.0",
|
"web-ext": "^8.10.0",
|
||||||
"webextensions-jsdom": "^1.2.1"
|
"webextensions-jsdom": "^1.2.1"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/mozilla/multi-account-containers#readme",
|
"homepage": "https://github.com/mozilla/multi-account-containers#readme",
|
||||||
|
|||||||
+1
-1
Submodule src/_locales updated: 0a88c3ecc6...30aab7b6d8
+33
-38
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 23 KiB |
@@ -38,6 +38,7 @@ const backgroundLogic = {
|
|||||||
browser.runtime.onInstalled.addListener((details) => {
|
browser.runtime.onInstalled.addListener((details) => {
|
||||||
this.updateTranslationInManifest();
|
this.updateTranslationInManifest();
|
||||||
this._undoDefault820SortTabsKeyboardShortcut(details);
|
this._undoDefault820SortTabsKeyboardShortcut(details);
|
||||||
|
this._removeSurveyAchievement();
|
||||||
});
|
});
|
||||||
browser.runtime.onStartup.addListener(this.updateTranslationInManifest);
|
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() {
|
updateTranslationInManifest() {
|
||||||
for (let index = 0; index < 10; index++) {
|
for (let index = 0; index < 10; index++) {
|
||||||
const ajustedIndex = index + 1; // We want to start from 1 instead of 0 in the UI.
|
const ajustedIndex = index + 1; // We want to start from 1 instead of 0 in the UI.
|
||||||
|
|||||||
@@ -289,15 +289,16 @@ const messageHandler = {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if already shown in the past; if so, do not show again.
|
// Check if already scheduled in the past; if so, do not show again.
|
||||||
const { achievements } = await browser.storage.local.get({ achievements: [] });
|
const achievementsStorage = await browser.storage.local.get({ achievements: [] });
|
||||||
const existing = achievements.find(a => a.name === "survey");
|
const achievements = achievementsStorage.achievements;
|
||||||
|
const existing = achievements.find(a => a.name === "surveyFinal");
|
||||||
if (existing) {
|
if (existing) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure the achievement exists and is pending.
|
// Ensure the achievement exists and is pending.
|
||||||
achievements.push({ name: "survey", done: false });
|
achievements.push({ name: "surveyFinal", done: false });
|
||||||
browser.storage.local.set({ achievements });
|
browser.storage.local.set({ achievements });
|
||||||
browser.browserAction.setBadgeBackgroundColor({color: "rgba(0,217,0,255)"});
|
browser.browserAction.setBadgeBackgroundColor({color: "rgba(0,217,0,255)"});
|
||||||
browser.browserAction.setBadgeText({text: "NEW"});
|
browser.browserAction.setBadgeText({text: "NEW"});
|
||||||
|
|||||||
+18
-11
@@ -138,21 +138,28 @@ const Logic = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
async showAchievementOrContainersListPanel() {
|
async showAchievementOrContainersListPanel() {
|
||||||
// Do we need to show an achievement panel?
|
|
||||||
const achievementsStorage = await browser.storage.local.get({ achievements: [] });
|
const achievementsStorage = await browser.storage.local.get({ achievements: [] });
|
||||||
const pending = achievementsStorage.achievements.filter(a => !a.done);
|
const achievements = achievementsStorage.achievements;
|
||||||
|
|
||||||
if (pending.length) {
|
let saveAchievements = false;
|
||||||
// Prefer showing the survey view first if present, otherwise fall back
|
for (const achievement of achievements.filter(a => !a.done)) {
|
||||||
// to the existing achievement panel.
|
if (achievement.name === "manyContainersOpened") {
|
||||||
const survey = pending.find(a => a.name === "survey");
|
this.showPanel(P_CONTAINERS_ACHIEVEMENT);
|
||||||
if (survey) {
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (achievement.name === "surveyFinal") {
|
||||||
this.showPanel(P_SURVEY_ACHIEVEMENT);
|
this.showPanel(P_SURVEY_ACHIEVEMENT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.showPanel(P_CONTAINERS_ACHIEVEMENT);
|
// We have found an unknown achievement. Let's mark it as done.
|
||||||
return;
|
achievement.done = true;
|
||||||
|
saveAchievements = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (saveAchievements) {
|
||||||
|
browser.storage.local.set({ achievements });
|
||||||
}
|
}
|
||||||
|
|
||||||
this.showPanel(P_CONTAINERS_LIST);
|
this.showPanel(P_CONTAINERS_LIST);
|
||||||
@@ -2391,11 +2398,11 @@ Logic.registerPanel(P_SURVEY_ACHIEVEMENT, {
|
|||||||
// This method is called when the object is registered.
|
// This method is called when the object is registered.
|
||||||
initialize() {
|
initialize() {
|
||||||
Utils.addEnterHandler(document.querySelector("#survey-achievement-done-button"), async () => {
|
Utils.addEnterHandler(document.querySelector("#survey-achievement-done-button"), async () => {
|
||||||
await Logic.setAchievementDone("survey");
|
await Logic.setAchievementDone("surveyFinal");
|
||||||
Logic.showPanel(P_CONTAINERS_LIST);
|
Logic.showPanel(P_CONTAINERS_LIST);
|
||||||
});
|
});
|
||||||
Utils.addEnterHandler(document.querySelector("#survey-button"), async () => {
|
Utils.addEnterHandler(document.querySelector("#survey-button"), async () => {
|
||||||
await Logic.setAchievementDone("survey");
|
await Logic.setAchievementDone("surveyFinal");
|
||||||
window.close();
|
window.close();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
+5
-2
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "Firefox Multi-Account Containers",
|
"name": "Firefox Multi-Account Containers",
|
||||||
"version": "8.3.1",
|
"version": "8.3.5",
|
||||||
"incognito": "not_allowed",
|
"incognito": "not_allowed",
|
||||||
"description": "__MSG_extensionDescription__",
|
"description": "__MSG_extensionDescription__",
|
||||||
"icons": {
|
"icons": {
|
||||||
@@ -33,7 +33,10 @@
|
|||||||
"browser_specific_settings": {
|
"browser_specific_settings": {
|
||||||
"gecko": {
|
"gecko": {
|
||||||
"id": "@testpilot-containers",
|
"id": "@testpilot-containers",
|
||||||
"strict_min_version": "91.1.0"
|
"strict_min_version": "91.1.0",
|
||||||
|
"data_collection_permissions": {
|
||||||
|
"required": ["none"]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"commands": {
|
"commands": {
|
||||||
|
|||||||
+6
-4
@@ -108,11 +108,13 @@
|
|||||||
|
|
||||||
<div class="panel survey-panel hide" id="survey-panel">
|
<div class="panel survey-panel hide" id="survey-panel">
|
||||||
<img id="survey-img" alt="" src="/img/survey.svg" />
|
<img id="survey-img" alt="" src="/img/survey.svg" />
|
||||||
<h3 class="onboarding-title">Participate in Paid Research with Firefox</h3>
|
|
||||||
<p class="survey-blurb">We'd love to learn about your experiences with this add-on! Join a 1:1 Zoom interview and receive a $75 Amazon e-gift card or PayPal payment.</p>
|
<h3 class="onboarding-title">Help Improve Containers</h3>
|
||||||
<p class="survey-blurb">Thank you for helping us improve Firefox.</p>
|
<p class="survey-blurb">Please take 5 minutes to share your experiences with the add-on! This will help us effectively prioritize improvements.</p>
|
||||||
|
<p class="survey-blurb">Learn more about the research here.</p>
|
||||||
|
<br/><p class="survey-blurb">Thank you for using Multi-Account Containers!</p>
|
||||||
<p class="share-ctas survey-back">
|
<p class="share-ctas survey-back">
|
||||||
<a class="cta-link onboarding-button keyboard-nav" href="https://qsurvey.mozilla.com/s3/Multi-Account-Containers-Research-Interest-Form" id="survey-button" target="_blank">Take Interest Survey</a>
|
<a class="cta-link onboarding-button keyboard-nav" href="https://mozilla.qualtrics.com/jfe/form/SV_2aSQMGyfp2DFLtI" id="survey-button" target="_blank">Take Survey</a>
|
||||||
</p>
|
</p>
|
||||||
<a href="#" id="survey-achievement-done-button">Back</a>
|
<a href="#" id="survey-achievement-done-button">Back</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user