diff options
author | Alex Yatskov <alex@foosoft.net> | 2017-08-17 19:19:34 -0700 |
---|---|---|
committer | Alex Yatskov <alex@foosoft.net> | 2017-08-17 19:19:34 -0700 |
commit | 7586572fbaab7de698ec13f8712cc95e24ab6273 (patch) | |
tree | 665417b73c928694b96c00a98dd882c618e1fd1d /ext/bg/js/anki-connect.js | |
parent | 3475150b2d1424d43f5be6fcfbdbb719a576866f (diff) | |
parent | 191336522c220b0a3cfe41515ed23946b3462217 (diff) |
Merge branch 'dev'
Diffstat (limited to 'ext/bg/js/anki-connect.js')
-rw-r--r-- | ext/bg/js/anki-connect.js | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/ext/bg/js/anki-connect.js b/ext/bg/js/anki-connect.js deleted file mode 100644 index 9759c8f5..00000000 --- a/ext/bg/js/anki-connect.js +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2016 Alex Yatskov <alex@foosoft.net> - * Author: Alex Yatskov <alex@foosoft.net> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -class AnkiConnect { - constructor(server) { - this.server = server; - this.asyncPools = {}; - this.localVersion = 2; - this.remoteVersion = null; - } - - addNote(note) { - return this.checkVersion().then(() => this.ankiInvoke('addNote', {note}, null)); - } - - canAddNotes(notes) { - return this.checkVersion().then(() => this.ankiInvoke('canAddNotes', {notes}, 'notes')); - } - - getDeckNames() { - return this.checkVersion().then(() => this.ankiInvoke('deckNames', {}, null)); - } - - getModelNames() { - return this.checkVersion().then(() => this.ankiInvoke('modelNames', {}, null)); - } - - getModelFieldNames(modelName) { - return this.checkVersion().then(() => this.ankiInvoke('modelFieldNames', {modelName}, null)); - } - - checkVersion() { - if (this.localVersion === this.remoteVersion) { - return Promise.resolve(true); - } - - return this.ankiInvoke('version', {}, null).then(version => { - this.remoteVersion = version; - if (this.remoteVersion < this.localVersion) { - return Promise.reject('extension and plugin versions incompatible'); - } - }); - } - - ankiInvoke(action, params, pool) { - return new Promise((resolve, reject) => { - if (pool !== null && this.asyncPools.hasOwnProperty(pool)) { - this.asyncPools[pool].abort(); - } - - const xhr = new XMLHttpRequest(); - xhr.addEventListener('loadend', () => { - if (pool !== null) { - delete this.asyncPools[pool]; - } - - if (xhr.responseText) { - resolve(JSON.parse(xhr.responseText)); - } else { - reject('unable to connect to plugin'); - } - }); - - xhr.open('POST', this.server); - xhr.send(JSON.stringify({action, params})); - }); - } -} |