Fix error on account unlink, and delete more files
Delete everything from data directory except for PDF tools
This commit is contained in:
parent
d2421825c9
commit
62fa86af82
|
@ -470,31 +470,72 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
||||||
if (result.some(r => r)) {
|
if (result.some(r => r)) {
|
||||||
[Zotero.restoreFromServer, Zotero.resetDataDir] = result;
|
[Zotero.restoreFromServer, Zotero.resetDataDir] = result;
|
||||||
try {
|
try {
|
||||||
|
yield Zotero.DB.closeDatabase();
|
||||||
|
|
||||||
// TODO: better error handling
|
// TODO: better error handling
|
||||||
|
|
||||||
// TODO: prompt for location
|
// TODO: prompt for location
|
||||||
// TODO: Back up database
|
// TODO: Back up database
|
||||||
|
// TODO: Reset translators and styles
|
||||||
|
|
||||||
|
|
||||||
var dbfile = Zotero.DataDirectory.getDatabase();
|
|
||||||
yield OS.File.remove(dbfile, {ignoreAbsent: true});
|
|
||||||
|
|
||||||
if (Zotero.restoreFromServer) {
|
if (Zotero.restoreFromServer) {
|
||||||
|
let dbfile = Zotero.DataDirectory.getDatabase();
|
||||||
|
Zotero.debug("Deleting " + dbfile);
|
||||||
|
yield OS.File.remove(dbfile, { ignoreAbsent: true });
|
||||||
|
let storageDir = OS.Path.join(dataDir, 'storage');
|
||||||
|
Zotero.debug("Deleting " + storageDir.path);
|
||||||
|
OS.File.removeDir(storageDir, { ignoreAbsent: true }),
|
||||||
yield OS.File.remove(restoreFile);
|
yield OS.File.remove(restoreFile);
|
||||||
Zotero.restoreFromServer = true;
|
Zotero.restoreFromServer = true;
|
||||||
} else if (Zotero.resetDataDir) {
|
|
||||||
Zotero.initAutoSync = true;
|
|
||||||
var storageDir = OS.Path.join(dataDir, 'storage');
|
|
||||||
yield Zotero.Promise.all([
|
|
||||||
OS.File.removeDir(storageDir, {ignoreAbsent: true}),
|
|
||||||
OS.File.remove(resetDataDirFile)
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
else if (Zotero.resetDataDir) {
|
||||||
|
Zotero.initAutoSync = true;
|
||||||
|
|
||||||
// Recreate database with no quick start guide
|
// Clear some user prefs
|
||||||
Zotero.Schema.skipDefaultData = true;
|
[
|
||||||
yield Zotero.Schema.updateSchema();
|
'sync.server.username',
|
||||||
|
'sync.storage.username'
|
||||||
|
].forEach(p => Zotero.Prefs.clear(p));
|
||||||
|
|
||||||
|
// Clear data directory
|
||||||
|
Zotero.debug("Deleting data directory files");
|
||||||
|
let lastError;
|
||||||
|
// Delete all files in directory rather than removing directory, in case it's
|
||||||
|
// a symlink
|
||||||
|
yield Zotero.File.iterateDirectory(dataDir, function* (iterator) {
|
||||||
|
while (true) {
|
||||||
|
let entry = yield iterator.next();
|
||||||
|
// Don't delete some files
|
||||||
|
if (entry.name == 'pipes'
|
||||||
|
|| entry.name.startsWith(Zotero.Fulltext.pdfInfoName)
|
||||||
|
|| entry.name.startsWith(Zotero.Fulltext.pdfConverterName)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Zotero.debug("Deleting " + entry.path);
|
||||||
|
try {
|
||||||
|
if (entry.isDir) {
|
||||||
|
yield OS.File.removeDir(entry.path);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
yield OS.File.remove(entry.path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Keep trying to delete as much as we can
|
||||||
|
catch (e) {
|
||||||
|
lastError = e;
|
||||||
|
Zotero.logError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (lastError) {
|
||||||
|
throw lastError;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Zotero.debug("Done with reset");
|
||||||
|
|
||||||
|
if (!(yield _initDB())) return false;
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
// Restore from backup?
|
// Restore from backup?
|
||||||
|
|
Loading…
Reference in New Issue
Block a user