Properly handle errors thrown by merge window, including cases of "Source item for keyed source doesn't exist in Zotero.Item.getSource()"
This commit is contained in:
parent
0974d4bcf3
commit
38459c5d0e
|
@ -46,8 +46,9 @@ var Zotero_Merge_Window = new function () {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw ("Unsupported merge object type '" + _mergeGroup.type
|
_error("Unsupported merge object type '" + _mergeGroup.type
|
||||||
+ "' in Zotero_Merge_Window.init()");
|
+ "' in Zotero_Merge_Window.init()");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_mergeGroup.leftCaption = _io.dataIn.captions[0];
|
_mergeGroup.leftCaption = _io.dataIn.captions[0];
|
||||||
|
@ -128,13 +129,8 @@ var Zotero_Merge_Window = new function () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
Zotero.debug(e);
|
_error(e);
|
||||||
|
return;
|
||||||
var prompt = Components.classes["@mozilla.org/network/default-prompt;1"]
|
|
||||||
.createInstance(Components.interfaces.nsIPrompt);
|
|
||||||
prompt.alert(Zotero.getString('general.error'), e);
|
|
||||||
_wizard.getButton('cancel').click();
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_mergeGroup.type == 'item') {
|
if (_mergeGroup.type == 'item') {
|
||||||
|
@ -203,8 +199,9 @@ var Zotero_Merge_Window = new function () {
|
||||||
// Hack to support creator reconciliation via item view
|
// Hack to support creator reconciliation via item view
|
||||||
function _updateChangedCreators() {
|
function _updateChangedCreators() {
|
||||||
if (_mergeGroup.type != 'item') {
|
if (_mergeGroup.type != 'item') {
|
||||||
throw ("_updateChangedCreators called on non-item object in "
|
_error("_updateChangedCreators called on non-item object in "
|
||||||
+ "Zotero_Merge_Window._updateChangedCreators()");
|
+ "Zotero_Merge_Window._updateChangedCreators()");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_io.dataIn.changedCreators) {
|
if (_io.dataIn.changedCreators) {
|
||||||
|
@ -228,4 +225,11 @@ var Zotero_Merge_Window = new function () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function _error(e) {
|
||||||
|
Zotero.debug(e);
|
||||||
|
_io.error = e;
|
||||||
|
_wizard.getButton('cancel').click();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,10 +144,6 @@ Zotero.Sync = new function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Last sync time is before start of log
|
// Last sync time is before start of log
|
||||||
Zotero.debug('==============');
|
|
||||||
Zotero.debug(lastSyncDate);
|
|
||||||
Zotero.debug(lastSyncDate + '');
|
|
||||||
Zotero.debug(syncLogStart);
|
|
||||||
if (lastSyncDate && new Date(syncLogStart * 1000) > lastSyncDate) {
|
if (lastSyncDate && new Date(syncLogStart * 1000) > lastSyncDate) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -2668,9 +2664,8 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
|
|
||||||
var mergeData = _reconcile(type, toReconcile, remoteCreatorStore);
|
var mergeData = _reconcile(type, toReconcile, remoteCreatorStore);
|
||||||
if (!mergeData) {
|
if (!mergeData) {
|
||||||
// TODO: throw?
|
|
||||||
Zotero.DB.rollbackTransaction();
|
Zotero.DB.rollbackTransaction();
|
||||||
return false;
|
throw ("Merge error");
|
||||||
}
|
}
|
||||||
_processMergeData(
|
_processMergeData(
|
||||||
syncSession,
|
syncSession,
|
||||||
|
@ -3205,7 +3200,9 @@ Zotero.Sync.Server.Data = new function() {
|
||||||
.getService(Components.interfaces.nsIWindowMediator);
|
.getService(Components.interfaces.nsIWindowMediator);
|
||||||
var lastWin = wm.getMostRecentWindow("navigator:browser");
|
var lastWin = wm.getMostRecentWindow("navigator:browser");
|
||||||
lastWin.openDialog('chrome://zotero/content/merge.xul', '', 'chrome,modal,centerscreen', io);
|
lastWin.openDialog('chrome://zotero/content/merge.xul', '', 'chrome,modal,centerscreen', io);
|
||||||
|
if (io.error) {
|
||||||
|
throw (io.error);
|
||||||
|
}
|
||||||
return io.dataOut;
|
return io.dataOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user