From ba02ae7f8dca794032959c62f72603b2f7814e68 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Wed, 19 Oct 2016 21:21:00 -0700 Subject: Improved error handling --- ext/bg/js/ankiweb.js | 6 +++--- ext/bg/js/yomichan.js | 40 +++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 24 deletions(-) (limited to 'ext/bg/js') diff --git a/ext/bg/js/ankiweb.js b/ext/bg/js/ankiweb.js index bed605ec..41bf74bd 100644 --- a/ext/bg/js/ankiweb.js +++ b/ext/bg/js/ankiweb.js @@ -27,7 +27,7 @@ class AnkiWeb { return this.retrieve().then(info => { const model = info.models.find(m => m.name === note.modelName); if (!model) { - return Promise.reject('invalid model'); + return Promise.reject('cannot add note model provided'); } const fields = []; @@ -110,7 +110,7 @@ class AnkiWeb { static login(username, password) { 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}; @@ -143,7 +143,7 @@ class AnkiWeb { } 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.open('GET', url); xhr.send(); diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index 416a4911..4ba44588 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -231,43 +231,43 @@ class Yomichan { } api_getEnabled({callback}) { - callback(this.state === 'enabled', null); + callback({result: this.state === 'enabled'}); } api_getOptions({callback}) { loadOptions().then(result => { - callback(result, null); + callback({result}); }).catch(error => { - callback(null, error); + callback({error}); }); } api_findKanji({text, callback}) { this.translator.findKanji(text).then(result => { - callback(result, null); + callback({result}); }).catch(error => { - callback(null, error); + callback({error}); }); } api_findTerm({text, callback}) { this.translator.findTerm(text).then(result => { - callback(result, null); + callback({result}); }).catch(error => { - callback(null, error); + callback({error}); }); } api_renderText({template, data, callback}) { - callback(Handlebars.templates[template](data), null); + callback({result: Handlebars.templates[template](data)}); } api_addDefinition({definition, mode, callback}) { const note = this.formatNote(definition, mode); this.anki.addNote(note).then(result => { - callback(result, null); + callback({result}); }).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 = []; - if (results !== null) { - for (let resultBase = 0; resultBase < results.length; resultBase += modes.length) { - const state = {}; - for (let modeOffset = 0; modeOffset < modes.length; ++modeOffset) { - state[modes[modeOffset]] = results[resultBase + modeOffset]; - } - - states.push(state); + for (let resultBase = 0; resultBase < raw.length; resultBase += modes.length) { + const state = {}; + for (let modeOffset = 0; modeOffset < modes.length; ++modeOffset) { + state[modes[modeOffset]] = raw[resultBase + modeOffset]; } + + states.push(state); } - callback(states, null); + callback({result: states}); }).catch(error => { - callback(null, error); + callback({error}); }); } } -- cgit v1.2.3