summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2017-02-05 11:44:59 -0800
committerAlex Yatskov <alex@foosoft.net>2017-02-05 11:44:59 -0800
commit5076b80f9690a12fda23d06b2c3ddd1df08cff56 (patch)
tree9f04555e22dd1387d8e3d80930e8a30497cd0719
parenta13c32a784ec41c9e46d841c14e790ffa4ab7466 (diff)
tweaks for ankiconnect1.0.8
-rw-r--r--ext/bg/js/ankiconnect.js9
-rw-r--r--ext/bg/js/options-form.js4
-rw-r--r--ext/bg/js/options.js11
-rw-r--r--ext/bg/js/yomichan.js2
-rw-r--r--ext/bg/options.html5
-rw-r--r--ext/manifest.json2
6 files changed, 21 insertions, 12 deletions
diff --git a/ext/bg/js/ankiconnect.js b/ext/bg/js/ankiconnect.js
index d17f3268..f6f94329 100644
--- a/ext/bg/js/ankiconnect.js
+++ b/ext/bg/js/ankiconnect.js
@@ -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}));
});
}
diff --git a/ext/bg/js/options-form.js b/ext/bg/js/options-form.js
index ed2826b4..00b6a63e 100644
--- a/ext/bg/js/options-form.js
+++ b/ext/bg/js/options-form.js
@@ -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);
diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js
index 863e8916..a4e39e41 100644
--- a/ext/bg/js/options.js
+++ b/ext/bg/js/options.js
@@ -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');
diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js
index d97dc586..80a67588 100644
--- a/ext/bg/js/yomichan.js
+++ b/ext/bg/js/yomichan.js
@@ -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();
}
diff --git a/ext/bg/options.html b/ext/bg/options.html
index 145f97fd..d9d23c6a 100644
--- a/ext/bg/options.html
+++ b/ext/bg/options.html
@@ -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>
diff --git a/ext/manifest.json b/ext/manifest.json
index 2b2a4617..31b2c8c4 100644
--- a/ext/manifest.json
+++ b/ext/manifest.json
@@ -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"},