gecko-dev/browser/components/newtab/lib/ManualMigration.jsm
Ed Lee a8fe89d2f5 Bug 1499886 - Add send-to-device snippet, right-to-left robustness and bug fixes to Activity Stream r=k88hudson
Differential Revision: https://phabricator.services.mozilla.com/D9045

--HG--
rename : browser/components/newtab/locales/ach/strings.properties => browser/components/newtab/locales-src/ach/strings.properties
rename : browser/components/newtab/locales/an/strings.properties => browser/components/newtab/locales-src/an/strings.properties
rename : browser/components/newtab/locales/ar/strings.properties => browser/components/newtab/locales-src/ar/strings.properties
rename : browser/components/newtab/locales/ast/strings.properties => browser/components/newtab/locales-src/ast/strings.properties
rename : browser/components/newtab/locales/az/strings.properties => browser/components/newtab/locales-src/az/strings.properties
rename : browser/components/newtab/locales/be/strings.properties => browser/components/newtab/locales-src/be/strings.properties
rename : browser/components/newtab/locales/bg/strings.properties => browser/components/newtab/locales-src/bg/strings.properties
rename : browser/components/newtab/locales/bn-BD/strings.properties => browser/components/newtab/locales-src/bn-BD/strings.properties
rename : browser/components/newtab/locales/bn-IN/strings.properties => browser/components/newtab/locales-src/bn-IN/strings.properties
rename : browser/components/newtab/locales/br/strings.properties => browser/components/newtab/locales-src/br/strings.properties
rename : browser/components/newtab/locales/bs/strings.properties => browser/components/newtab/locales-src/bs/strings.properties
rename : browser/components/newtab/locales/ca/strings.properties => browser/components/newtab/locales-src/ca/strings.properties
rename : browser/components/newtab/locales/cak/strings.properties => browser/components/newtab/locales-src/cak/strings.properties
rename : browser/components/newtab/locales/crh/strings.properties => browser/components/newtab/locales-src/crh/strings.properties
rename : browser/components/newtab/locales/cs/strings.properties => browser/components/newtab/locales-src/cs/strings.properties
rename : browser/components/newtab/locales/cy/strings.properties => browser/components/newtab/locales-src/cy/strings.properties
rename : browser/components/newtab/locales/da/strings.properties => browser/components/newtab/locales-src/da/strings.properties
rename : browser/components/newtab/locales/de/strings.properties => browser/components/newtab/locales-src/de/strings.properties
rename : browser/components/newtab/locales/dsb/strings.properties => browser/components/newtab/locales-src/dsb/strings.properties
rename : browser/components/newtab/locales/el/strings.properties => browser/components/newtab/locales-src/el/strings.properties
rename : browser/components/newtab/locales/en-CA/strings.properties => browser/components/newtab/locales-src/en-CA/strings.properties
rename : browser/components/newtab/locales/en-GB/strings.properties => browser/components/newtab/locales-src/en-GB/strings.properties
rename : browser/components/newtab/locales/en-US/strings.properties => browser/components/newtab/locales-src/en-US/strings.properties
rename : browser/components/newtab/locales/eo/strings.properties => browser/components/newtab/locales-src/eo/strings.properties
rename : browser/components/newtab/locales/es-AR/strings.properties => browser/components/newtab/locales-src/es-AR/strings.properties
rename : browser/components/newtab/locales/es-CL/strings.properties => browser/components/newtab/locales-src/es-CL/strings.properties
rename : browser/components/newtab/locales/es-ES/strings.properties => browser/components/newtab/locales-src/es-ES/strings.properties
rename : browser/components/newtab/locales/es-MX/strings.properties => browser/components/newtab/locales-src/es-MX/strings.properties
rename : browser/components/newtab/locales/et/strings.properties => browser/components/newtab/locales-src/et/strings.properties
rename : browser/components/newtab/locales/eu/strings.properties => browser/components/newtab/locales-src/eu/strings.properties
rename : browser/components/newtab/locales/fa/strings.properties => browser/components/newtab/locales-src/fa/strings.properties
rename : browser/components/newtab/locales/ff/strings.properties => browser/components/newtab/locales-src/ff/strings.properties
rename : browser/components/newtab/locales/fi/strings.properties => browser/components/newtab/locales-src/fi/strings.properties
rename : browser/components/newtab/locales/fr/strings.properties => browser/components/newtab/locales-src/fr/strings.properties
rename : browser/components/newtab/locales/fy-NL/strings.properties => browser/components/newtab/locales-src/fy-NL/strings.properties
rename : browser/components/newtab/locales/ga-IE/strings.properties => browser/components/newtab/locales-src/ga-IE/strings.properties
rename : browser/components/newtab/locales/gd/strings.properties => browser/components/newtab/locales-src/gd/strings.properties
rename : browser/components/newtab/locales/gl/strings.properties => browser/components/newtab/locales-src/gl/strings.properties
rename : browser/components/newtab/locales/gn/strings.properties => browser/components/newtab/locales-src/gn/strings.properties
rename : browser/components/newtab/locales/gu-IN/strings.properties => browser/components/newtab/locales-src/gu-IN/strings.properties
rename : browser/components/newtab/locales/he/strings.properties => browser/components/newtab/locales-src/he/strings.properties
rename : browser/components/newtab/locales/hi-IN/strings.properties => browser/components/newtab/locales-src/hi-IN/strings.properties
rename : browser/components/newtab/locales/hr/strings.properties => browser/components/newtab/locales-src/hr/strings.properties
rename : browser/components/newtab/locales/hsb/strings.properties => browser/components/newtab/locales-src/hsb/strings.properties
rename : browser/components/newtab/locales/hu/strings.properties => browser/components/newtab/locales-src/hu/strings.properties
rename : browser/components/newtab/locales/hy-AM/strings.properties => browser/components/newtab/locales-src/hy-AM/strings.properties
rename : browser/components/newtab/locales/ia/strings.properties => browser/components/newtab/locales-src/ia/strings.properties
rename : browser/components/newtab/locales/id/strings.properties => browser/components/newtab/locales-src/id/strings.properties
rename : browser/components/newtab/locales/is/strings.properties => browser/components/newtab/locales-src/is/strings.properties
rename : browser/components/newtab/locales/it/strings.properties => browser/components/newtab/locales-src/it/strings.properties
rename : browser/components/newtab/locales/ja-JP-mac/strings.properties => browser/components/newtab/locales-src/ja-JP-mac/strings.properties
rename : browser/components/newtab/locales/ja/strings.properties => browser/components/newtab/locales-src/ja/strings.properties
rename : browser/components/newtab/locales/ka/strings.properties => browser/components/newtab/locales-src/ka/strings.properties
rename : browser/components/newtab/locales/kab/strings.properties => browser/components/newtab/locales-src/kab/strings.properties
rename : browser/components/newtab/locales/kk/strings.properties => browser/components/newtab/locales-src/kk/strings.properties
rename : browser/components/newtab/locales/km/strings.properties => browser/components/newtab/locales-src/km/strings.properties
rename : browser/components/newtab/locales/kn/strings.properties => browser/components/newtab/locales-src/kn/strings.properties
rename : browser/components/newtab/locales/ko/strings.properties => browser/components/newtab/locales-src/ko/strings.properties
rename : browser/components/newtab/locales/lij/strings.properties => browser/components/newtab/locales-src/lij/strings.properties
rename : browser/components/newtab/locales/lo/strings.properties => browser/components/newtab/locales-src/lo/strings.properties
rename : browser/components/newtab/locales/lt/strings.properties => browser/components/newtab/locales-src/lt/strings.properties
rename : browser/components/newtab/locales/ltg/strings.properties => browser/components/newtab/locales-src/ltg/strings.properties
rename : browser/components/newtab/locales/lv/strings.properties => browser/components/newtab/locales-src/lv/strings.properties
rename : browser/components/newtab/locales/mai/strings.properties => browser/components/newtab/locales-src/mai/strings.properties
rename : browser/components/newtab/locales/mk/strings.properties => browser/components/newtab/locales-src/mk/strings.properties
rename : browser/components/newtab/locales/ml/strings.properties => browser/components/newtab/locales-src/ml/strings.properties
rename : browser/components/newtab/locales/mr/strings.properties => browser/components/newtab/locales-src/mr/strings.properties
rename : browser/components/newtab/locales/ms/strings.properties => browser/components/newtab/locales-src/ms/strings.properties
rename : browser/components/newtab/locales/my/strings.properties => browser/components/newtab/locales-src/my/strings.properties
rename : browser/components/newtab/locales/nb-NO/strings.properties => browser/components/newtab/locales-src/nb-NO/strings.properties
rename : browser/components/newtab/locales/ne-NP/strings.properties => browser/components/newtab/locales-src/ne-NP/strings.properties
rename : browser/components/newtab/locales/nl/strings.properties => browser/components/newtab/locales-src/nl/strings.properties
rename : browser/components/newtab/locales/nn-NO/strings.properties => browser/components/newtab/locales-src/nn-NO/strings.properties
rename : browser/components/newtab/locales/oc/strings.properties => browser/components/newtab/locales-src/oc/strings.properties
rename : browser/components/newtab/locales/pa-IN/strings.properties => browser/components/newtab/locales-src/pa-IN/strings.properties
rename : browser/components/newtab/locales/pl/strings.properties => browser/components/newtab/locales-src/pl/strings.properties
rename : browser/components/newtab/locales/pt-BR/strings.properties => browser/components/newtab/locales-src/pt-BR/strings.properties
rename : browser/components/newtab/locales/pt-PT/strings.properties => browser/components/newtab/locales-src/pt-PT/strings.properties
rename : browser/components/newtab/locales/rm/strings.properties => browser/components/newtab/locales-src/rm/strings.properties
rename : browser/components/newtab/locales/ro/strings.properties => browser/components/newtab/locales-src/ro/strings.properties
rename : browser/components/newtab/locales/ru/strings.properties => browser/components/newtab/locales-src/ru/strings.properties
rename : browser/components/newtab/locales/si/strings.properties => browser/components/newtab/locales-src/si/strings.properties
rename : browser/components/newtab/locales/sk/strings.properties => browser/components/newtab/locales-src/sk/strings.properties
rename : browser/components/newtab/locales/sl/strings.properties => browser/components/newtab/locales-src/sl/strings.properties
rename : browser/components/newtab/locales/sq/strings.properties => browser/components/newtab/locales-src/sq/strings.properties
rename : browser/components/newtab/locales/sr/strings.properties => browser/components/newtab/locales-src/sr/strings.properties
rename : browser/components/newtab/locales/sv-SE/strings.properties => browser/components/newtab/locales-src/sv-SE/strings.properties
rename : browser/components/newtab/locales/ta/strings.properties => browser/components/newtab/locales-src/ta/strings.properties
rename : browser/components/newtab/locales/te/strings.properties => browser/components/newtab/locales-src/te/strings.properties
rename : browser/components/newtab/locales/th/strings.properties => browser/components/newtab/locales-src/th/strings.properties
rename : browser/components/newtab/locales/tl/strings.properties => browser/components/newtab/locales-src/tl/strings.properties
rename : browser/components/newtab/locales/tr/strings.properties => browser/components/newtab/locales-src/tr/strings.properties
rename : browser/components/newtab/locales/uk/strings.properties => browser/components/newtab/locales-src/uk/strings.properties
rename : browser/components/newtab/locales/ur/strings.properties => browser/components/newtab/locales-src/ur/strings.properties
rename : browser/components/newtab/locales/uz/strings.properties => browser/components/newtab/locales-src/uz/strings.properties
rename : browser/components/newtab/locales/vi/strings.properties => browser/components/newtab/locales-src/vi/strings.properties
rename : browser/components/newtab/locales/zh-CN/strings.properties => browser/components/newtab/locales-src/zh-CN/strings.properties
rename : browser/components/newtab/locales/zh-TW/strings.properties => browser/components/newtab/locales-src/zh-TW/strings.properties
extra : moz-landing-system : lando
2018-10-18 05:00:47 +00:00

114 lines
3.6 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const {actionCreators: ac, actionTypes: at} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm", {});
const MIGRATION_ENDED_EVENT = "Migration:Ended";
const MS_PER_DAY = 86400000;
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.defineModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm");
ChromeUtils.defineModuleGetter(this, "ProfileAge", "resource://gre/modules/ProfileAge.jsm");
this.ManualMigration = class ManualMigration {
constructor() {
Services.obs.addObserver(this, MIGRATION_ENDED_EVENT);
}
get migrationLastShownDate() {
return this.store.getState().Prefs.values.migrationLastShownDate;
}
set migrationLastShownDate(newDate) {
this.store.dispatch(ac.SetPref("migrationLastShownDate", newDate));
}
get migrationRemainingDays() {
return this.store.getState().Prefs.values.migrationRemainingDays;
}
set migrationRemainingDays(newDate) {
this.store.dispatch(ac.SetPref("migrationRemainingDays", newDate));
}
uninit() {
Services.obs.removeObserver(this, MIGRATION_ENDED_EVENT);
}
async isMigrationMessageExpired() {
let profileAge = await ProfileAge();
let profileCreationDate = await profileAge.created;
let daysSinceProfileCreation = (Date.now() - profileCreationDate) / MS_PER_DAY;
// We don't want to show the migration message to profiles older than 3 days.
if (daysSinceProfileCreation > 3) {
return true;
}
let migrationLastShownDate = new Date(this.migrationLastShownDate * 1000);
let today = new Date();
// Round down to midnight.
today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
if (migrationLastShownDate < today) {
let migrationRemainingDays = this.migrationRemainingDays - 1;
this.migrationRemainingDays = migrationRemainingDays;
// .valueOf returns a value that is too large to store so we need to divide by 1000.
this.migrationLastShownDate = today.valueOf() / 1000;
if (migrationRemainingDays <= 0) {
return true;
}
}
return false;
}
/**
* While alreadyExpired is false the migration message is displayed and we also
* keep checking if we should expire it. Broadcast expiration to store.
*
* @param {bool} alreadyExpired Pref flag that is false for the first 3 active days,
* time in which we display the migration message to the user.
*/
async expireIfNecessary(alreadyExpired) {
if (!alreadyExpired && await this.isMigrationMessageExpired()) {
this.expireMigration();
}
}
expireMigration() {
this.store.dispatch(ac.SetPref("migrationExpired", true));
}
/**
* Event listener for migration wizard completion event.
*/
observe() {
this.expireMigration();
this.store.dispatch({type: at.MIGRATION_COMPLETED});
}
async onAction(action) {
switch (action.type) {
case at.PREFS_INITIAL_VALUES:
await this.expireIfNecessary(action.data.migrationExpired);
break;
case at.MIGRATION_START:
MigrationUtils.showMigrationWizard(action._target.browser.ownerGlobal, [MigrationUtils.MIGRATION_ENTRYPOINT_NEWTAB]);
break;
case at.MIGRATION_CANCEL:
this.expireMigration();
break;
case at.UNINIT:
this.uninit();
break;
}
}
};
const EXPORTED_SYMBOLS = ["ManualMigration"];