Disable "Check Database Integrity" button while running
This commit is contained in:
parent
a85ea18fd9
commit
6acf208a36
2 changed files with 69 additions and 63 deletions
|
@ -133,78 +133,84 @@ Zotero_Preferences.Advanced = {
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
|
||||||
runIntegrityCheck: Zotero.Promise.coroutine(function* () {
|
runIntegrityCheck: async function (button) {
|
||||||
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
button.disabled = true;
|
||||||
.getService(Components.interfaces.nsIPromptService);
|
|
||||||
|
|
||||||
var ok = yield Zotero.DB.integrityCheck();
|
try {
|
||||||
if (ok) {
|
let ps = Services.prompt;
|
||||||
ok = yield Zotero.Schema.integrityCheck();
|
|
||||||
if (!ok) {
|
var ok = await Zotero.DB.integrityCheck();
|
||||||
var buttonFlags = (ps.BUTTON_POS_0) * (ps.BUTTON_TITLE_IS_STRING)
|
if (ok) {
|
||||||
+ (ps.BUTTON_POS_1) * (ps.BUTTON_TITLE_CANCEL);
|
ok = await Zotero.Schema.integrityCheck();
|
||||||
var index = ps.confirmEx(window,
|
if (!ok) {
|
||||||
Zotero.getString('general.failed'),
|
var buttonFlags = (ps.BUTTON_POS_0) * (ps.BUTTON_TITLE_IS_STRING)
|
||||||
Zotero.getString('db.integrityCheck.failed') + "\n\n" +
|
+ (ps.BUTTON_POS_1) * (ps.BUTTON_TITLE_CANCEL);
|
||||||
Zotero.getString('db.integrityCheck.repairAttempt') + " " +
|
var index = ps.confirmEx(window,
|
||||||
Zotero.getString('db.integrityCheck.appRestartNeeded', Zotero.appName),
|
Zotero.getString('general.failed'),
|
||||||
buttonFlags,
|
Zotero.getString('db.integrityCheck.failed') + "\n\n" +
|
||||||
Zotero.getString('db.integrityCheck.fixAndRestart', Zotero.appName),
|
Zotero.getString('db.integrityCheck.repairAttempt') + " " +
|
||||||
null, null, null, {}
|
Zotero.getString('db.integrityCheck.appRestartNeeded', Zotero.appName),
|
||||||
);
|
|
||||||
|
|
||||||
if (index == 0) {
|
|
||||||
// Safety first
|
|
||||||
yield Zotero.DB.backupDatabase();
|
|
||||||
|
|
||||||
// Fix the errors
|
|
||||||
yield Zotero.Schema.integrityCheck(true);
|
|
||||||
|
|
||||||
// And run the check again
|
|
||||||
ok = yield Zotero.Schema.integrityCheck();
|
|
||||||
var buttonFlags = (ps.BUTTON_POS_0) * (ps.BUTTON_TITLE_IS_STRING);
|
|
||||||
if (ok) {
|
|
||||||
var str = 'success';
|
|
||||||
var msg = Zotero.getString('db.integrityCheck.errorsFixed');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var str = 'failed';
|
|
||||||
var msg = Zotero.getString('db.integrityCheck.errorsNotFixed')
|
|
||||||
+ "\n\n" + Zotero.getString('db.integrityCheck.reportInForums');
|
|
||||||
}
|
|
||||||
|
|
||||||
ps.confirmEx(window,
|
|
||||||
Zotero.getString('general.' + str),
|
|
||||||
msg,
|
|
||||||
buttonFlags,
|
buttonFlags,
|
||||||
Zotero.getString('general.restartApp', Zotero.appName),
|
Zotero.getString('db.integrityCheck.fixAndRestart', Zotero.appName),
|
||||||
null, null, null, {}
|
null, null, null, {}
|
||||||
);
|
);
|
||||||
|
|
||||||
var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]
|
if (index == 0) {
|
||||||
.getService(Components.interfaces.nsIAppStartup);
|
// Safety first
|
||||||
appStartup.quit(Components.interfaces.nsIAppStartup.eAttemptQuit
|
await Zotero.DB.backupDatabase();
|
||||||
| Components.interfaces.nsIAppStartup.eRestart);
|
|
||||||
|
// Fix the errors
|
||||||
|
await Zotero.Schema.integrityCheck(true);
|
||||||
|
|
||||||
|
// And run the check again
|
||||||
|
ok = await Zotero.Schema.integrityCheck();
|
||||||
|
var buttonFlags = (ps.BUTTON_POS_0) * (ps.BUTTON_TITLE_IS_STRING);
|
||||||
|
if (ok) {
|
||||||
|
var str = 'success';
|
||||||
|
var msg = Zotero.getString('db.integrityCheck.errorsFixed');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var str = 'failed';
|
||||||
|
var msg = Zotero.getString('db.integrityCheck.errorsNotFixed')
|
||||||
|
+ "\n\n" + Zotero.getString('db.integrityCheck.reportInForums');
|
||||||
|
}
|
||||||
|
|
||||||
|
ps.confirmEx(window,
|
||||||
|
Zotero.getString('general.' + str),
|
||||||
|
msg,
|
||||||
|
buttonFlags,
|
||||||
|
Zotero.getString('general.restartApp', Zotero.appName),
|
||||||
|
null, null, null, {}
|
||||||
|
);
|
||||||
|
|
||||||
|
var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]
|
||||||
|
.getService(Components.interfaces.nsIAppStartup);
|
||||||
|
appStartup.quit(Components.interfaces.nsIAppStartup.eAttemptQuit
|
||||||
|
| Components.interfaces.nsIAppStartup.eRestart);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
try {
|
||||||
|
await Zotero.DB.vacuum();
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
Zotero.logError(e);
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
var str = ok ? 'passed' : 'failed';
|
||||||
|
|
||||||
try {
|
ps.alert(window,
|
||||||
yield Zotero.DB.vacuum();
|
Zotero.getString('general.' + str),
|
||||||
}
|
Zotero.getString('db.integrityCheck.' + str)
|
||||||
catch (e) {
|
+ (!ok ? "\n\n" + Zotero.getString('db.integrityCheck.dbRepairTool') : ''));
|
||||||
Zotero.logError(e);
|
|
||||||
ok = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
var str = ok ? 'passed' : 'failed';
|
finally {
|
||||||
|
button.disabled = false;
|
||||||
ps.alert(window,
|
}
|
||||||
Zotero.getString('general.' + str),
|
},
|
||||||
Zotero.getString('db.integrityCheck.' + str)
|
|
||||||
+ (!ok ? "\n\n" + Zotero.getString('db.integrityCheck.dbRepairTool') : ''));
|
|
||||||
}),
|
|
||||||
|
|
||||||
|
|
||||||
resetTranslatorsAndStyles: function () {
|
resetTranslatorsAndStyles: function () {
|
||||||
|
|
|
@ -202,7 +202,7 @@
|
||||||
|
|
||||||
<hbox style="display: block">
|
<hbox style="display: block">
|
||||||
<button label="&zotero.preferences.dbMaintenance.integrityCheck;"
|
<button label="&zotero.preferences.dbMaintenance.integrityCheck;"
|
||||||
oncommand="Zotero_Preferences.Advanced.runIntegrityCheck()"/>
|
oncommand="Zotero_Preferences.Advanced.runIntegrityCheck(this)"/>
|
||||||
<button id="reset-translators-button"
|
<button id="reset-translators-button"
|
||||||
label="&zotero.preferences.dbMaintenance.resetTranslators;"
|
label="&zotero.preferences.dbMaintenance.resetTranslators;"
|
||||||
oncommand="Zotero_Preferences.Advanced.resetTranslators()"/>
|
oncommand="Zotero_Preferences.Advanced.resetTranslators()"/>
|
||||||
|
|
Loading…
Add table
Reference in a new issue