tweaks for ankiconnect

This commit is contained in:
Alex Yatskov 2017-02-05 11:44:59 -08:00
parent a13c32a784
commit 5076b80f96
6 changed files with 21 additions and 12 deletions

View File

@ -17,7 +17,8 @@
*/
class AnkiConnect {
constructor() {
constructor(server) {
this.server = server;
this.asyncPools = {};
this.localVersion = 1;
this.remoteVersion = null;
@ -50,8 +51,8 @@ class AnkiConnect {
return this.ankiInvoke('version', {}, null).then(version => {
this.remoteVersion = version;
if (this.remoteVersion !== this.localVersion) {
return Promise.reject('extension and plugin version mismatch');
if (this.remoteVersion < this.localVersion) {
return Promise.reject('extension and plugin versions incompatible');
}
});
}
@ -75,7 +76,7 @@ class AnkiConnect {
}
});
xhr.open('POST', 'http://127.0.0.1:8765');
xhr.open('POST', this.server);
xhr.send(JSON.stringify({action, params}));
});
}

View File

@ -44,6 +44,7 @@ function getFormData() {
optionsNew.anki.tags = $('#card-tags').val().split(/[,; ]+/);
optionsNew.anki.htmlCards = $('#generate-html-cards').prop('checked');
optionsNew.anki.sentenceExt = parseInt($('#sentence-detection-extent').val(), 10);
optionsNew.anki.server = $('#interface-server').val();
if (optionsOld.anki.enable) {
optionsNew.anki.terms.deck = $('#anki-terms-deck').val();
optionsNew.anki.terms.model = $('#anki-terms-model').val();
@ -106,6 +107,7 @@ $(document).ready(() => {
$('#card-tags').val(options.anki.tags.join(' '));
$('#generate-html-cards').prop('checked', options.anki.htmlCards);
$('#sentence-detection-extent').val(options.anki.sentenceExt);
$('#interface-server').val(options.anki.server);
$('input, select').not('.anki-model').change(onOptionsChanged);
$('.anki-model').change(onAnkiModelChanged);
@ -399,7 +401,7 @@ function onOptionsChanged(e) {
return optionsSave(optionsNew).then(() => {
yomichan().setOptions(optionsNew);
updateVisibility(optionsNew);
if (optionsNew.anki.enable !== optionsOld.anki.enable) {
if (optionsNew.anki.enable !== optionsOld.anki.enable || optionsNew.anki.server !== optionsOld.anki.server) {
showAnkiError(null);
showAnkiSpinner(true);
return populateAnkiDeckAndModel(optionsNew);

View File

@ -39,6 +39,7 @@ function optionsSetDefaults(options) {
anki: {
enable: false,
server: 'http://127.0.0.1:8765',
tags: ['yomichan'],
htmlCards: true,
sentenceExt: 200,
@ -67,14 +68,14 @@ function optionsSetDefaults(options) {
function optionsVersion(options) {
const copy = (targetDict, targetKey, sourceDict, sourceKey) => {
targetDict[targetKey] = sourceDict.hasOwnProperty(sourceKey) ? sourceDict[sourceKey] : targetDict[targetKey];
};
optionsSetDefaults(options);
options.version = options.version || 0;
const fixups = [
() => {
optionsSetDefaults(options);
const copy = (targetDict, targetKey, sourceDict, sourceKey) => {
targetDict[targetKey] = sourceDict.hasOwnProperty(sourceKey) ? sourceDict[sourceKey] : targetDict[targetKey];
};
copy(options.general, 'autoStart', options, 'activateOnStartup');
copy(options.general, 'audioPlayback', options, 'enableAudioPlayback');

View File

@ -71,7 +71,7 @@ class Yomichan {
this.options = options;
if (options.anki.enable) {
this.anki = new AnkiConnect();
this.anki = new AnkiConnect(this.options.anki.server);
} else {
this.anki = new AnkiNull();
}

View File

@ -161,6 +161,11 @@
<input type="number" min="1" id="sentence-detection-extent" class="form-control">
</div>
<div class="form-group options-advanced">
<label for="interface-server">Interface server</label>
<input type="text" id="interface-server" class="form-control">
</div>
<div id="anki-format">
<ul class="nav nav-tabs">
<li class="active"><a href="#terms" data-toggle="tab">Terms</a></li>

View File

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Yomichan",
"version": "1.0.7",
"version": "1.0.8",
"description": "Japanese dictionary with Anki integration",
"icons": {"16": "img/icon16.png", "48": "img/icon48.png", "128": "img/icon128.png"},