Skip to content
This repository was archived by the owner on Feb 26, 2021. It is now read-only.

Commit 52cd3c9

Browse files
Correctly move app data on Windows systems.
1 parent 11f7307 commit 52cd3c9

File tree

1 file changed

+50
-51
lines changed

1 file changed

+50
-51
lines changed

app/js/main.js

Lines changed: 50 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -844,82 +844,81 @@ var App = (function(App, undefined) {
844844
resourcesDirectory = path.dirname(resourcesDirectory);
845845
}
846846

847-
appDataDirectory = path.join(electron.app.getPath("appData"), "IOTA Wallet" + (isTestNet ? " Testnet" : ""));
847+
if (process.platform == "win32" && process.env.LOCALAPPDATA) {
848+
var oldAppDataDirectory = path.join(electron.app.getPath("appData"), "IOTA Wallet" + (isTestNet ? " Testnet" : ""));
848849

849-
App.loadSettings();
850+
electron.app.setPath("appData", process.env.LOCALAPPDATA);
851+
electron.app.setPath("userData", path.join(process.env.LOCALAPPDATA, "IOTA Wallet" + (isTestNet ? " Testnet" : "")));
850852

851-
databaseDirectory = (settings.dbLocation ? settings.dbLocation : path.join(appDataDirectory, "iri"));
853+
var newAppDataDirectory = path.join(electron.app.getPath("appData"), "IOTA Wallet" + (isTestNet ? " Testnet" : ""));
852854

853-
jarDirectory = path.join(resourcesDirectory, "iri");
854-
855-
try {
856-
if (process.platform == "win32" && process.env.LOCALAPPDATA) {
857-
electron.app.setPath("appData", process.env.LOCALAPPDATA);
858-
electron.app.setPath("userData", path.join(process.env.LOCALAPPDATA, "IOTA Wallet" + (isTestNet ? " Testnet" : "")));
855+
if (fs.existsSync(path.join(oldAppDataDirectory, "settings.json"))) {
856+
if (!fs.existsSync(newAppDataDirectory)) {
857+
fs.mkdirSync(newAppDataDirectory);
858+
}
859859

860-
newAppDataDirectory = path.join(electron.app.getPath("appData"), "IOTA Wallet" + (isTestNet ? " Testnet" : ""));
860+
var files = fs.readdirSync(oldAppDataDirectory);
861861

862-
if (newAppDataDirectory != appDataDirectory && fs.existsSync(path.join(appDataDirectory, "settings.json"))) {
863-
console.log("Moving to %localappdata%: " + newAppDataDirectory);
864-
if (!fs.existsSync(newAppDataDirectory)) {
865-
fs.mkdirSync(newAppDataDirectory);
866-
}
862+
console.log("Files to move:");
863+
console.log(files);
867864

868-
var files = fs.readdirSync(appDataDirectory);
865+
for (var i=0; i<files.length; i++) {
866+
try {
867+
var oldFile = path.join(oldAppDataDirectory, path.basename(files[i]))
868+
var newFile = path.join(newAppDataDirectory, path.basename(files[i]));
869869

870-
for (var i=0; i<files.length; i++) {
871-
try {
872-
var oldFile = path.join(appDataDirectory, path.basename(files[i]))
873-
var newFile = path.join(newAppDataDirectory, path.basename(files[i]));
874-
875-
if (!fs.existsSync(newFile)) {
876-
console.log("Renaming " + oldFile + " to " + newFile);
877-
fs.renameSync(oldFile, newFile);
878-
} else {
879-
console.log(newFile + " already exists");
880-
}
881-
} catch (err) {
882-
console.log(err);
870+
if (!fs.existsSync(newFile)) {
871+
console.log("Renaming " + oldFile + " to " + newFile);
872+
fs.renameSync(oldFile, newFile);
873+
} else {
874+
console.log(newFile + " already exists");
883875
}
876+
} catch (err) {
877+
console.log(err);
884878
}
885879
}
886-
887-
appDataDirectory = newAppDataDirectory;
888-
databaseDirectory = (settings.dbLocation ? settings.dbLocation : path.join(appDataDirectory, "iri"));
889880
}
890881

891-
if (!fs.existsSync(appDataDirectory)) {
892-
fs.mkdirSync(appDataDirectory);
893-
}
882+
appDataDirectory = newAppDataDirectory;
883+
} else {
884+
appDataDirectory = path.join(electron.app.getPath("appData"), "IOTA Wallet" + (isTestNet ? " Testnet" : ""));
885+
}
894886

895-
if (!fs.existsSync(databaseDirectory)) {
896-
fs.mkdirSync(databaseDirectory);
897-
}
887+
App.loadSettings();
898888

899-
// Delete the database if the deleteDb flag is set
900-
// Also if it's the first run and settings.version is not set, deleteAnyways
901-
// Else only delete if the new appVersion > previous app version
902-
if (deleteDb && (deleteAnyways || appVersion > settings.version) && fs.existsSync(databaseDirectory)) {
903-
console.log("Deleting Database Directory " + databaseDirectory);
904-
settings.version = appVersion;
905-
App.deleteDatabase();
906-
}
907-
} catch (err) {
908-
console.log("Error:");
909-
console.log(err);
889+
databaseDirectory = (settings.dbLocation ? settings.dbLocation : path.join(appDataDirectory, "iri"));
890+
891+
jarDirectory = path.join(resourcesDirectory, "iri");
892+
893+
if (!fs.existsSync(appDataDirectory)) {
894+
fs.mkdirSync(appDataDirectory);
895+
}
896+
897+
if (!fs.existsSync(databaseDirectory)) {
898+
fs.mkdirSync(databaseDirectory);
899+
}
900+
901+
// Delete the database if the deleteDb flag is set
902+
// Also if it's the first run and settings.version is not set, deleteAnyways
903+
// Else only delete if the new appVersion > previous app version
904+
if (deleteDb && (deleteAnyways || appVersion > settings.version) && fs.existsSync(databaseDirectory)) {
905+
console.log("Deleting Database Directory " + databaseDirectory);
906+
settings.version = appVersion;
907+
App.deleteDatabase();
910908
}
911909

912910
App.makeMultilingual(settings.language);
913911
}
914912

915913
App.moveDatabase = function(newDatabaseDirectory) {
916914
//Doing it synchronous for now, easier..
917-
console.log("Moving database to " + newDatabaseDirectory);
918915

919916
if (!databaseDirectory || !newDatabaseDirectory) {
920917
return -1;
921918
}
922919

920+
console.log("Moving database to " + newDatabaseDirectory);
921+
923922
if (!fs.existsSync(newDatabaseDirectory)) {
924923
fs.mkdirSync(newDatabaseDirectory);
925924
}
@@ -1419,7 +1418,7 @@ var App = (function(App, undefined) {
14191418
iriVersion = "";
14201419
serverOutput = [];
14211420

1422-
if (settings.dbLocation != databaseDirectory) {
1421+
if (settings.dbLocation && settings.dbLocation != databaseDirectory) {
14231422
//Todo: During db move, user should not close the app? How to prevent..
14241423
App.moveDatabase(settings.dbLocation);
14251424
databaseDirectory = settings.dbLocation; //because this is not reloaded during relaunch..

0 commit comments

Comments
 (0)