Catch chainpad errors and display it in the UI

This commit is contained in:
yflory
2018-03-13 14:38:56 +01:00
parent b2df2ba341
commit e56d762409
6 changed files with 37 additions and 8 deletions

View File

@@ -45,6 +45,7 @@ define([
FORGOTTEN: 'FORGOTTEN',
DELETED: 'DELETED',
INFINITE_SPINNER: 'INFINITE_SPINNER',
ERROR: 'ERROR',
INITIALIZING: 'INITIALIZING',
HISTORY_MODE: 'HISTORY_MODE',
READY: 'READY'
@@ -118,9 +119,9 @@ define([
return;
};
var stateChange = function (newState) {
var stateChange = function (newState, text) {
var wasEditable = (state === STATE.READY);
if (state === STATE.DELETED) { return; }
if (state === STATE.DELETED || state === STATE.ERROR) { return; }
if (state === STATE.INFINITE_SPINNER && newState !== STATE.READY) { return; }
if (newState === STATE.INFINITE_SPINNER || newState === STATE.DELETED) {
state = newState;
@@ -147,6 +148,14 @@ define([
evStart.reg(function () { toolbar.failed(); });
break;
}
case STATE.ERROR: {
evStart.reg(function () {
toolbar.errorState(true, text);
var msg = Messages.chainpadError;
UI.errorLoadingScreen(msg, true, true);
});
break;
}
case STATE.FORGOTTEN: {
evStart.reg(function () { toolbar.forgotten(); });
break;
@@ -249,7 +258,12 @@ define([
}
var contentStr = JSONSortify(content);
cpNfInner.chainpad.contentUpdate(contentStr);
try {
cpNfInner.chainpad.contentUpdate(contentStr);
} catch (e) {
stateChange(STATE.ERROR, e.message);
console.error(e);
}
if (cpNfInner.chainpad.getUserDoc() !== contentStr) {
console.error("realtime.getUserDoc() !== shjson");
}
@@ -463,6 +477,7 @@ define([
window.setInterval(function () {
if (state === STATE.DISCONNECTED) { return; }
if (state === STATE.DELETED) { return; }
if (state === STATE.ERROR) { return; }
var l;
try {
l = cpNfInner.chainpad.getLag();