This is just some static backup of the original site, don't expect every link to work!

source: content/vI_upgrade.js @ 3c9c29

ng_0.9
Last change on this file since 3c9c29 was 3c9c29, checked in by rene <rene@…>, 8 years ago

bugfix for unified folder view - increasing prefs.js

  • Property mode set to 100644
File size: 8.8 KB
Line 
1/* ***** BEGIN LICENSE BLOCK *****
2    This program is free software; you can redistribute it and/or modify
3    it under the terms of the GNU General Public License as published by
4    the Free Software Foundation; either version 2 of the License, or
5    (at your option) any later version.
6
7    This program is distributed in the hope that it will be useful,
8    but WITHOUT ANY WARRANTY; without even the implied warranty of
9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10    GNU General Public License for more details.
11
12    You should have received a copy of the GNU General Public License
13    along with this program; if not, write to the Free Software
14    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
15
16    The Original Code is the Virtual Identity Extension.
17
18    The Initial Developer of the Original Code is Rene Ejury.
19    Portions created by the Initial Developer are Copyright (C) 2007
20    the Initial Developer. All Rights Reserved.
21
22    Contributor(s):
23 * ***** END LICENSE BLOCK ***** */
24
25Components.utils.import("resource://v_identity/vI_nameSpaceWrapper.js");
26virtualIdentityExtension.ns(function() { with (virtualIdentityExtension.LIB) {
27
28let Log = vI.setupLogging("virtualIdentity.upgrade");
29Components.utils.import("resource://v_identity/vI_rdfDatasource.js", virtualIdentityExtension);
30Components.utils.import("resource://v_identity/vI_account.js", virtualIdentityExtension);
31Components.utils.import("resource://v_identity/vI_prefs.js", virtualIdentityExtension);
32
33var upgrade = {
34    versionChecker : Components.classes["@mozilla.org/xpcom/version-comparator;1"]
35      .getService(Components.interfaces.nsIVersionComparator),
36                           
37    rdfDatasource : null,
38
39    quickUpgrade : function(currentVersion) {
40      upgrade.rdfDatasource = new vI.rdfDatasource("virtualIdentity.rdf", true);
41      if (upgrade.rdfDatasource.extUpgradeRequired())
42        upgrade.extUpgrade();
43      upgrade.rdfDatasource.refreshAccountInfo();
44      upgrade.rdfDatasource.clean();
45      return true;
46    },
47
48    extUpgrade : function() {
49        var currentVersion = upgrade.rdfDatasource.getCurrentExtFileVersion();
50        Log.debug("checking for previous version, found " + 
51            currentVersion + "... extension-upgrade required.")
52        switch (currentVersion) {
53            case null:
54                // no break
55            default:
56                upgrade.__transferMovedUserPrefs(currentVersion);
57                upgrade.__removeObsoleteUserPrefs(currentVersion);
58                upgrade.__removeExtraAddedHeaders(currentVersion);
59                upgrade.__cleanupSmartMailboxFolders(currentVersion);
60        }
61        upgrade.rdfDatasource.storeExtVersion();
62        Log.debug("extension-upgrade to " + upgrade.rdfDatasource.getCurrentExtFileVersion() + " done.");
63    },
64   
65    __cleanupSmartMailboxFolders : function(currentVersion) {
66        if ((!currentVersion || upgrade.versionChecker.compare(currentVersion, "0.9.26") < 0)) {
67            Log.debug("cleaning leftover 'smart mailboxes' == 'unified folder mailboxes'");
68            // remove obsolete 'smart mailboxes'=='unified folder' server entries
69            // this is only required because of a virtualIdentity bug introduced in 0.9.22 and fixed in 0.9.26
70
71            //  compare against all accounts, getAccountsArray() does not include 'smart mailboxes' == 'unified folders'
72            var all_accounts = vI.prefroot.getCharPref("mail.accountmanager.accounts").split(",");
73
74            for each (let pref in vI.prefroot.getChildList("mail.server")) {
75                if (pref.indexOf(".hostname") == pref.length - 9 && vI.prefroot.getCharPref(pref) == "smart mailboxes") {
76                    // ok, smart mailbox server found, check if it still in use
77                    let server = pref.replace(/^mail\.server\./,"").replace(/\.hostname$/,"");
78                    let inUse = false;
79                    for each (let account in all_accounts) {
80                        if (vI.prefroot.getCharPref("mail.account." + account + ".server") == server)
81                            inUse = true;
82                    }
83                    if (!inUse) {
84                        Log.debug("cleaning leftover 'smart mailbox' for server " + server);
85                        for each (let obsoletePref in vI.prefroot.getChildList("mail.server." + server)) {
86                            if (obsoletePref.indexOf(".directory") == obsoletePref.length - 10) {
87                                // remove obsolete 'smart mailbox' directory
88                                try {
89                                    let file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
90                                    file.initWithPath(vI.prefroot.getCharPref(obsoletePref));
91                                    Log.debug("removing obsolete storage Folder " + vI.prefroot.getCharPref(obsoletePref));
92                                    file.remove(true);
93                                } catch (NS_ERROR_FILE_UNRECOGNIZED_PATH) { };
94                            }
95                            vI.prefroot.clearUserPref(obsoletePref);
96                        }
97                    }
98                }
99            }
100        }
101    },
102   
103    __removeExtraAddedHeaders : function(currentVersion) {
104        if ((!currentVersion || upgrade.versionChecker.compare(currentVersion, "0.6.9") < 0) && 
105                vI.prefroot.getCharPref("mailnews.headers.extraExpandedHeaders") != "") {
106            // clean extraExpandedHeaders once, because the whole header-saving and restoring was broken too long
107            Log.debug("cleaning extraExpandedHeaders");
108            vI.prefroot.setCharPref("mailnews.headers.extraExpandedHeaders", "")
109            Log.debug("cleaned extraExpandedHeaders");
110        }
111    },
112   
113    __transferMovedUserPrefs : function(currentVersion) {
114        // transfer renamed preferences
115        var transferPrefs = [   { version : "0.5.3",
116                    prefs : Array({ sourcePref : "smart_reply_ask", targetPref : "idSelection_ask" },
117                        { sourcePref : "smart_reply_ask_always", targetPref : "idSelection_ask_always" },
118                        { sourcePref : "smart_reply_autocreate", targetPref : "idSelection_autocreate" },
119                        { sourcePref : "smart_timestamp", targetPref : "autoTimestamp" },
120                        { sourcePref : "storage_prefer_smart_reply", targetPref : "idSelection_storage_prefer_smart_reply" },
121                        { sourcePref : "storage_ignore_smart_reply", targetPref : "idSelection_storage_ignore_smart_reply" }) }];
122        // remove obsolete preference-tree virtualIdentity
123        for (var i = 0; i < transferPrefs.length; i++) {
124            // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
125            if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, transferPrefs[i].version) < 0)) {
126                // remove any obsolete preferences under extensions.virtualIdentity
127                Log.debug("transfer changed preferences of pre-" + transferPrefs[i].version + " release...")
128                for each (let transferPref in transferPrefs[i].prefs) {
129                    try {   vI.vIprefs.commit(transferPref.targetPref, 
130                            vI.vIprefs.get(transferPref.sourcePref));
131                        vI.vIprefs.clearUserPref(transferPref.sourcePref);
132                    }
133                    catch (e) { };
134                }
135                Log.debug("done.")
136            }
137        }
138    },
139   
140    __removeObsoleteUserPrefs : function(currentVersion) {
141        var obsoletePrefs = [   { version : "0.5.0",
142                    prefs : Array("aBook_use", "aBook_storedefault", "aBook_dont_update_multiple",
143                    "aBook_show_switch", "aBook_warn_update", "aBook_use_for_smart_reply",
144                    "aBook_prefer_smart_reply", "aBook_ignore_smart_reply", "aBook_warn_vI_replace",
145                    "aBook_use_non_vI", "aBook_notification", "storeVIdentity", "experimental",
146                    "storage_use_for_smart_reply") },
147                    { version : "0.5.3", prefs : Array("storage_use_for_smart_reply") },
148                    { version : "0.5.6", prefs : Array("copyEnigmailSettings") },
149                    { version: "0.9", prefs : Array("extensions.virtualIdentity.{2ab1b709-ba03-4361-abf9-c50b964ff75d}",
150                                                    "extensions.virtualIdentity.{847b3a00-7ab1-11d4-8f02-006008948af5}",
151                                                    "extensions.virtualIdentity.smart_reply_added_extraHeaders",
152                                                    "mailnews.headers.extraExpandedHeaders") }
153                    ];
154        // remove obsolete preference-tree virtualIdentity
155        for (var i = 0; i < obsoletePrefs.length; i++) {
156            // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
157            if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, obsoletePrefs[i].version) < 0)) {
158                // remove any obsolete preferences under extensions.virtualIdentity
159                Log.debug("removing obsolete preferences of pre-" + obsoletePrefs[i].version + " release...")
160                for each (let pref in obsoletePrefs[i].prefs) {
161                    try { vI.vIprefs.clearUserPref(pref); Log.debug(".") }
162                    catch (e) { };
163                }
164                Log.debug("done.")
165            }
166        }
167    },
168}
169vI.upgrade = upgrade;
170}});
Note: See TracBrowser for help on using the repository browser.