mirror of
https://github.com/zen-browser/desktop.git
synced 2026-08-21 22:20:50 +00:00
95 lines
3.0 KiB
JavaScript
95 lines
3.0 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/.
|
|
|
|
import { AppConstants } from 'resource://gre/modules/AppConstants.sys.mjs';
|
|
|
|
class nsZenUIMigration {
|
|
PREF_NAME = 'zen.ui.migration.version';
|
|
MIGRATION_VERSION = 5;
|
|
|
|
init(isNewProfile) {
|
|
if (!isNewProfile) {
|
|
try {
|
|
this._migrate();
|
|
} catch (e) {
|
|
console.error('ZenUIMigration: Error during migration', e);
|
|
}
|
|
}
|
|
this.clearVariables();
|
|
if (this.shouldRestart) {
|
|
Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart);
|
|
}
|
|
}
|
|
|
|
get _migrationVersion() {
|
|
return Services.prefs.getIntPref(this.PREF_NAME, 0);
|
|
}
|
|
|
|
set _migrationVersion(value) {
|
|
Services.prefs.setIntPref(this.PREF_NAME, value);
|
|
}
|
|
|
|
_migrate() {
|
|
for (let i = 0; i <= this.MIGRATION_VERSION; i++) {
|
|
if (this._migrationVersion < i) {
|
|
this[`_migrateV${i}`]?.();
|
|
}
|
|
}
|
|
}
|
|
|
|
clearVariables() {
|
|
this._migrationVersion = this.MIGRATION_VERSION;
|
|
}
|
|
|
|
_migrateV1() {
|
|
// If there's an userChrome.css or userContent.css existing, we set
|
|
// 'toolkit.legacyUserProfileCustomizations.stylesheets' back to true
|
|
// We do this to avoid existing user stylesheets to be ignored
|
|
const profileDir = Services.dirsvc.get('ProfD', Ci.nsIFile);
|
|
const userChromeFile = profileDir.clone();
|
|
userChromeFile.append('chrome');
|
|
userChromeFile.append('userChrome.css');
|
|
const userContentFile = profileDir.clone();
|
|
userContentFile.append('chrome');
|
|
userContentFile.append('userContent.css');
|
|
Services.prefs.setBoolPref(
|
|
'zen.workspaces.separate-essentials',
|
|
Services.prefs.getBoolPref('zen.workspaces.container-specific-essentials-enabled', false)
|
|
);
|
|
const theme = Services.prefs.getIntPref('layout.css.prefers-color-scheme.content-override', 0);
|
|
Services.prefs.setIntPref('zen.view.window.scheme', theme);
|
|
if (userChromeFile.exists() || userContentFile.exists()) {
|
|
Services.prefs.setBoolPref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
|
|
console.log('ZenUIMigration: User stylesheets detected, enabling legacy stylesheets.');
|
|
this.shouldRestart = true;
|
|
}
|
|
}
|
|
|
|
_migrateV2() {
|
|
if (AppConstants.platform !== 'linux') {
|
|
Services.prefs.setIntPref('zen.theme.gradient-legacy-version', 0);
|
|
}
|
|
}
|
|
|
|
_migrateV3() {
|
|
if (Services.prefs.getStringPref('zen.theme.accent-color', '').startsWith('system')) {
|
|
Services.prefs.setStringPref('zen.theme.accent-color', 'AccentColor');
|
|
}
|
|
}
|
|
|
|
_migrateV4() {
|
|
// Fix spelling mistake in preference name
|
|
Services.prefs.setBoolPref(
|
|
'zen.theme.use-system-colors',
|
|
Services.prefs.getBoolPref('zen.theme.use-sysyem-colors', false)
|
|
);
|
|
}
|
|
|
|
_migrateV5() {
|
|
Services.prefs.setBoolPref('zen.site-data-panel.show-callout', true);
|
|
}
|
|
}
|
|
|
|
export var gZenUIMigration = new nsZenUIMigration();
|