Improved error handling
This commit is contained in:
parent
7618b8e909
commit
ba02ae7f8d
@ -27,7 +27,7 @@ class AnkiWeb {
|
|||||||
return this.retrieve().then(info => {
|
return this.retrieve().then(info => {
|
||||||
const model = info.models.find(m => m.name === note.modelName);
|
const model = info.models.find(m => m.name === note.modelName);
|
||||||
if (!model) {
|
if (!model) {
|
||||||
return Promise.reject('invalid model');
|
return Promise.reject('cannot add note model provided');
|
||||||
}
|
}
|
||||||
|
|
||||||
const fields = [];
|
const fields = [];
|
||||||
@ -110,7 +110,7 @@ class AnkiWeb {
|
|||||||
|
|
||||||
static login(username, password) {
|
static login(username, password) {
|
||||||
if (username.length === 0 || password.length === 0) {
|
if (username.length === 0 || password.length === 0) {
|
||||||
return Promise.reject('unspecified login credentials');
|
return Promise.reject('login credentials not specified');
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = {username, password, submitted: 1};
|
const data = {username, password, submitted: 1};
|
||||||
@ -143,7 +143,7 @@ class AnkiWeb {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const xhr = new XMLHttpRequest();
|
const xhr = new XMLHttpRequest();
|
||||||
xhr.addEventListener('error', () => reject('failed to execute request'));
|
xhr.addEventListener('error', () => reject('failed to execute network request'));
|
||||||
xhr.addEventListener('load', () => resolve(xhr.responseText));
|
xhr.addEventListener('load', () => resolve(xhr.responseText));
|
||||||
xhr.open('GET', url);
|
xhr.open('GET', url);
|
||||||
xhr.send();
|
xhr.send();
|
||||||
|
@ -231,43 +231,43 @@ class Yomichan {
|
|||||||
}
|
}
|
||||||
|
|
||||||
api_getEnabled({callback}) {
|
api_getEnabled({callback}) {
|
||||||
callback(this.state === 'enabled', null);
|
callback({result: this.state === 'enabled'});
|
||||||
}
|
}
|
||||||
|
|
||||||
api_getOptions({callback}) {
|
api_getOptions({callback}) {
|
||||||
loadOptions().then(result => {
|
loadOptions().then(result => {
|
||||||
callback(result, null);
|
callback({result});
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
callback(null, error);
|
callback({error});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
api_findKanji({text, callback}) {
|
api_findKanji({text, callback}) {
|
||||||
this.translator.findKanji(text).then(result => {
|
this.translator.findKanji(text).then(result => {
|
||||||
callback(result, null);
|
callback({result});
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
callback(null, error);
|
callback({error});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
api_findTerm({text, callback}) {
|
api_findTerm({text, callback}) {
|
||||||
this.translator.findTerm(text).then(result => {
|
this.translator.findTerm(text).then(result => {
|
||||||
callback(result, null);
|
callback({result});
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
callback(null, error);
|
callback({error});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
api_renderText({template, data, callback}) {
|
api_renderText({template, data, callback}) {
|
||||||
callback(Handlebars.templates[template](data), null);
|
callback({result: Handlebars.templates[template](data)});
|
||||||
}
|
}
|
||||||
|
|
||||||
api_addDefinition({definition, mode, callback}) {
|
api_addDefinition({definition, mode, callback}) {
|
||||||
const note = this.formatNote(definition, mode);
|
const note = this.formatNote(definition, mode);
|
||||||
this.anki.addNote(note).then(result => {
|
this.anki.addNote(note).then(result => {
|
||||||
callback(result, null);
|
callback({result});
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
callback(null, error);
|
callback({error});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,22 +279,20 @@ class Yomichan {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.anki.canAddNotes(notes).then(results => {
|
this.anki.canAddNotes(notes).then(raw => {
|
||||||
const states = [];
|
const states = [];
|
||||||
if (results !== null) {
|
for (let resultBase = 0; resultBase < raw.length; resultBase += modes.length) {
|
||||||
for (let resultBase = 0; resultBase < results.length; resultBase += modes.length) {
|
const state = {};
|
||||||
const state = {};
|
for (let modeOffset = 0; modeOffset < modes.length; ++modeOffset) {
|
||||||
for (let modeOffset = 0; modeOffset < modes.length; ++modeOffset) {
|
state[modes[modeOffset]] = raw[resultBase + modeOffset];
|
||||||
state[modes[modeOffset]] = results[resultBase + modeOffset];
|
|
||||||
}
|
|
||||||
|
|
||||||
states.push(state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
states.push(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(states, null);
|
callback({result: states});
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
callback(null, error);
|
callback({error});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,6 +163,8 @@ class Driver {
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
alert('Error: ' + error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,6 +204,8 @@ class Driver {
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
alert('Error: ' + error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,6 +235,8 @@ class Driver {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
alert('Error: ' + error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,6 +279,8 @@ class Driver {
|
|||||||
} else {
|
} else {
|
||||||
alert('Note could not be added');
|
alert('Note could not be added');
|
||||||
}
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
alert('Error: ' + error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,6 +325,8 @@ class Driver {
|
|||||||
states.forEach((state, index) => this.popup.invokeApi('setActionState', {index, state, sequence}));
|
states.forEach((state, index) => this.popup.invokeApi('setActionState', {index, state, sequence}));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}).catch(error => {
|
||||||
|
alert('Error: ' + error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
function invokeApiBg(action, params) {
|
function invokeApiBg(action, params) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
chrome.runtime.sendMessage({action, params}, (result, error) => {
|
chrome.runtime.sendMessage({action, params}, ({result, error}) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
reject(error);
|
reject(error);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user