diff --git a/src/LiveDevelopment/main.js b/src/LiveDevelopment/main.js index d10939d7cf4..6ec60340ce9 100644 --- a/src/LiveDevelopment/main.js +++ b/src/LiveDevelopment/main.js @@ -49,7 +49,7 @@ define(function main(require, exports, module) { UrlParams = require("utils/UrlParams").UrlParams, Strings = require("strings"); - var PREFERENCES_KEY = "com.adobe.brackets.live-development"; + var PREFERENCES_CLIENT_ID = PreferencesManager.getClientId(module.id); var prefs; var params = new UrlParams(); var config = { @@ -220,7 +220,10 @@ define(function main(require, exports, module) { }); // init prefs - prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_KEY, {highlight: true}); + prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID, {highlight: true}); + //TODO: Remove preferences migration code + PreferencesManager.handleClientIdChange(prefs, "com.adobe.brackets.live-development", {highlight: true}); + config.highlight = prefs.getValue("highlight"); // init commands diff --git a/src/brackets.js b/src/brackets.js index d9d1994cb18..1720ca14e9f 100644 --- a/src/brackets.js +++ b/src/brackets.js @@ -109,7 +109,7 @@ define(function (require, exports, module) { // Local variables var params = new UrlParams(), - PREFERENCES_CLIENT_ID = "com.adobe.brackets.startup"; + PREFERENCES_CLIENT_ID = PreferencesManager.getClientId(module.id); // read URL params params.parse(); @@ -203,6 +203,9 @@ define(function (require, exports, module) { // an old version that might not have set the "afterFirstLaunch" pref.) var prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID), deferred = new $.Deferred(); + //TODO: Remove preferences migration code + PreferencesManager.handleClientIdChange(prefs, "com.adobe.brackets.startup"); + if (!params.get("skipSampleProjectLoad") && !prefs.getValue("afterFirstLaunch")) { prefs.setValue("afterFirstLaunch", "true"); if (ProjectManager.isWelcomeProjectPath(initialProjectPath)) { diff --git a/src/document/DocumentManager.js b/src/document/DocumentManager.js index 6bfcd1818a4..4c8557eaa61 100644 --- a/src/document/DocumentManager.js +++ b/src/document/DocumentManager.js @@ -98,7 +98,7 @@ define(function (require, exports, module) { /** * Unique PreferencesManager clientID */ - var PREFERENCES_CLIENT_ID = "com.adobe.brackets.DocumentManager"; + var PREFERENCES_CLIENT_ID = PreferencesManager.getClientId(module.id); /** * @private @@ -1244,6 +1244,8 @@ define(function (require, exports, module) { // Setup preferences _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID); + //TODO: Remove preferences migration code + PreferencesManager.handleClientIdChange(_prefs, "com.adobe.brackets.DocumentManager"); // Performance measurements PerfUtils.createPerfMeasurement("DOCUMENT_MANAGER_GET_DOCUMENT_FOR_PATH", "DocumentManager.getDocumentForPath()"); diff --git a/src/editor/Editor.js b/src/editor/Editor.js index dbc956ac7c0..2458d259f5a 100644 --- a/src/editor/Editor.js +++ b/src/editor/Editor.js @@ -72,11 +72,13 @@ define(function (require, exports, module) { TokenUtils = require("utils/TokenUtils"), ViewUtils = require("utils/ViewUtils"); - var PREFERENCES_CLIENT_ID = "com.adobe.brackets.Editor", + var PREFERENCES_CLIENT_ID = PreferencesManager.getClientId(module.id), defaultPrefs = { useTabChar: false, tabSize: 4, indentUnit: 4, closeBrackets: false }; - + /** Editor preferences */ - var _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID, defaultPrefs); + var _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID); + //TODO: Remove preferences migration code + PreferencesManager.handleClientIdChange(_prefs, "com.adobe.brackets.Editor", defaultPrefs); /** @type {boolean} Global setting: When inserting new text, use tab characters? (instead of spaces) */ var _useTabChar = _prefs.getValue("useTabChar"); diff --git a/src/extensions/default/RecentProjects/main.js b/src/extensions/default/RecentProjects/main.js index 80e56225d97..bc80d7a0ac1 100644 --- a/src/extensions/default/RecentProjects/main.js +++ b/src/extensions/default/RecentProjects/main.js @@ -27,8 +27,6 @@ define(function (require, exports, module) { "use strict"; - var PREFERENCES_KEY = "com.adobe.brackets.brackets-recent-projects"; - // Brackets modules var ProjectManager = brackets.getModule("project/ProjectManager"), PreferencesDialogs = brackets.getModule("preferences/PreferencesDialogs"), @@ -44,18 +42,23 @@ define(function (require, exports, module) { FileUtils = brackets.getModule("file/FileUtils"), NativeFileSystem = brackets.getModule("file/NativeFileSystem").NativeFileSystem; + var PREFERENCES_CLIENT_ID = PreferencesManager.getClientId(module.id); + var $dropdownToggle, $dropdown, $settings; + var prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID); + //TODO: Remove preferences migration code + PreferencesManager.handleClientIdChange(prefs, "com.adobe.brackets.brackets-recent-projects"); + var MAX_PROJECTS = 20; /** * Get the stored list of recent projects, canonicalizing and updating paths as appropriate. */ function getRecentProjects() { - var prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_KEY), - recentProjects = prefs.getValue("recentProjects") || [], + var recentProjects = prefs.getValue("recentProjects") || [], i; for (i = 0; i < recentProjects.length; i++) { recentProjects[i] = FileUtils.canonicalizeFolderPath(ProjectManager.updateWelcomeProjectPath(recentProjects[i])); @@ -68,7 +71,6 @@ define(function (require, exports, module) { */ function add() { var root = FileUtils.canonicalizeFolderPath(ProjectManager.getProjectRoot().fullPath), - prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_KEY), recentProjects = getRecentProjects(), index = recentProjects.indexOf(root); if (index !== -1) { @@ -108,8 +110,7 @@ define(function (require, exports, module) { e.stopPropagation(); // Remove the project from the preferences. - var prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_KEY), - recentProjects = getRecentProjects(), + var recentProjects = getRecentProjects(), index = recentProjects.indexOf($(this).data("path")), newProjects = [], i; diff --git a/src/language/JSLintUtils.js b/src/language/JSLintUtils.js index e8073302114..a06afdf24c0 100644 --- a/src/language/JSLintUtils.js +++ b/src/language/JSLintUtils.js @@ -49,7 +49,7 @@ define(function (require, exports, module) { AppInit = require("utils/AppInit"), StatusBar = require("widgets/StatusBar"); - var PREFERENCES_CLIENT_ID = module.id, + var PREFERENCES_CLIENT_ID = PreferencesManager.getClientId(module.id), defaultPrefs = { enabled: !!brackets.config.enable_jslint }; /** @@ -265,7 +265,9 @@ define(function (require, exports, module) { CommandManager.register(Strings.CMD_JSLINT_FIRST_ERROR, Commands.NAVIGATE_GOTO_JSLINT_ERROR, _handleGotoJSLintError); // Init PreferenceStorage - _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID, defaultPrefs); + _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID); + //TODO: Remove preferences migration code + PreferencesManager.handleClientIdChange(_prefs, module.id, defaultPrefs); // Initialize items dependent on HTML DOM AppInit.htmlReady(function () { diff --git a/src/preferences/PreferencesManager.js b/src/preferences/PreferencesManager.js index 961e77655d9..826ac885138 100644 --- a/src/preferences/PreferencesManager.js +++ b/src/preferences/PreferencesManager.js @@ -34,7 +34,7 @@ define(function (require, exports, module) { var PreferenceStorage = require("preferences/PreferenceStorage").PreferenceStorage; - var PREFERENCES_KEY = "com.adobe.brackets.preferences"; + var PREFERENCES_CLIENT_ID = "com.adobe.brackets.preferences"; // Private Properties var preferencesKey, @@ -109,14 +109,50 @@ define(function (require, exports, module) { _reset(); } } + + /** + * This method handles the copy of all old prefs to the new prefs + * TODO: remove All calls to this function and the function itself + * + * @param {!PreferenceStorage} newPrefs The new PreferenceStorage + * @param {!string} oldID The id of the old PreferenceStorage + * @param {?obj} defaults The defaults to add + */ + function handleClientIdChange(newPrefs, oldID, defaults) { + var oldPrefs = getPreferenceStorage(oldID); + + defaults = defaults || {}; + + if (!newPrefs.getValue("newClientID")) { + var data = oldPrefs.getAllValues(); + + if ($.isEmptyObject(data)) { + data = defaults; + } + + newPrefs.setAllValues(data, false); + newPrefs.setValue("newClientID", true); + } + delete prefStorage[oldID]; + } + + /** + * This method returns a standardized ClientId for a given moduleId + * + * @param {!string} moduleId a given moduleId + * @return {string} the ClientId + */ + function getClientId(moduleId) { + return "com.adobe.brackets." + moduleId; + } // Check localStorage for a preferencesKey. Production and unit test keys // are used to keep preferences separate within the same storage implementation. preferencesKey = localStorage.getItem("preferencesKey"); - + if (!preferencesKey) { // use default key if none is found - preferencesKey = PREFERENCES_KEY; + preferencesKey = PREFERENCES_CLIENT_ID; doLoadPreferences = true; } else { // using a non-default key, check for additional settings @@ -129,6 +165,8 @@ define(function (require, exports, module) { // Public API exports.getPreferenceStorage = getPreferenceStorage; exports.savePreferences = savePreferences; + exports.handleClientIdChange = handleClientIdChange; + exports.getClientId = getClientId; // Unit test use only exports._reset = _reset; diff --git a/src/project/ProjectManager.js b/src/project/ProjectManager.js index dbb19537e24..4a35c355f63 100644 --- a/src/project/ProjectManager.js +++ b/src/project/ProjectManager.js @@ -129,7 +129,7 @@ define(function (require, exports, module) { /** * Unique PreferencesManager clientID */ - var PREFERENCES_CLIENT_ID = "com.adobe.brackets.ProjectManager"; + var PREFERENCES_CLIENT_ID = PreferencesManager.getClientId(module.id); /** * @private @@ -1348,8 +1348,10 @@ define(function (require, exports, module) { var defaults = { projectPath: _getWelcomeProjectPath() /* initialize to welcome project */ }; - _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID, defaults); - + _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID); + //TODO: Remove preferences migration code + PreferencesManager.handleClientIdChange(_prefs, "com.adobe.brackets.ProjectManager", defaults); + if (!_prefs.getValue("welcomeProjectsFixed")) { // One-time cleanup of duplicates in the welcome projects list--there used to be a bug where // we would add lots of duplicate entries here. diff --git a/src/project/WorkingSetSort.js b/src/project/WorkingSetSort.js index 5a0eb566fb1..a3fe840fb11 100644 --- a/src/project/WorkingSetSort.js +++ b/src/project/WorkingSetSort.js @@ -38,7 +38,7 @@ define(function (require, exports, module) { AppInit = require("utils/AppInit"), Strings = require("strings"); - var PREFERENCES_CLIENT_ID = "com.adobe.brackets.WorkingSetSort", + var PREFERENCES_CLIENT_ID = PreferencesManager.getClientId(module.id), defaultPrefs = { currentSort: Commands.SORT_WORKINGSET_BY_ADDED, automaticSort: false @@ -349,8 +349,9 @@ define(function (require, exports, module) { // Initialize PreferenceStorage - _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID, defaultPrefs); - + _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID); + //TODO: Remove preferences migration code + PreferencesManager.handleClientIdChange(_prefs, "com.adobe.brackets.WorkingSetSort", defaultPrefs); // Initialize items dependent on extensions/workingSet AppInit.appReady(function () { diff --git a/src/utils/Resizer.js b/src/utils/Resizer.js index 07cf14d8ac6..d70ac535783 100644 --- a/src/utils/Resizer.js +++ b/src/utils/Resizer.js @@ -63,7 +63,7 @@ define(function (require, exports, module) { PreferencesManager = require("preferences/PreferencesManager"), EditorManager = require("editor/EditorManager"); - var PREFERENCES_CLIENT_ID = module.id, + var PREFERENCES_CLIENT_ID = PreferencesManager.getClientId(module.id), defaultPrefs = { }; /** @@ -389,7 +389,9 @@ define(function (require, exports, module) { } // Init PreferenceStorage - _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID, defaultPrefs); + _prefs = PreferencesManager.getPreferenceStorage(PREFERENCES_CLIENT_ID); + //TODO: Remove preferences migration code + PreferencesManager.handleClientIdChange(_prefs, module.id, defaultPrefs); // Scan DOM for horz-resizable and vert-resizable classes and make them resizable AppInit.htmlReady(function () {