aboutsummaryrefslogtreecommitdiff
path: root/ext/bg/js/anki.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bg/js/anki.js')
-rw-r--r--ext/bg/js/anki.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/ext/bg/js/anki.js b/ext/bg/js/anki.js
index 5c89aad8..9f851f13 100644
--- a/ext/bg/js/anki.js
+++ b/ext/bg/js/anki.js
@@ -72,9 +72,34 @@ class AnkiConnect {
}
}
+ async findNoteIds(notes) {
+ await this.checkVersion();
+ const actions = notes.map(note => ({
+ action: 'findNotes',
+ params: {
+ query: `deck:"${AnkiConnect.escapeQuery(note.deckName)}" ${AnkiConnect.fieldsToQuery(note.fields)}`
+ }
+ }));
+ return await this.ankiInvoke('multi', {actions});
+ }
+
ankiInvoke(action, params) {
return requestJson(this.server, 'POST', {action, params, version: this.localVersion});
}
+
+ static escapeQuery(text) {
+ return text.replace(/"/g, '');
+ }
+
+ static fieldsToQuery(fields) {
+ const fieldNames = Object.keys(fields);
+ if (fieldNames.length === 0) {
+ return '';
+ }
+
+ const key = fieldNames[0];
+ return `${key.toLowerCase()}:"${AnkiConnect.escapeQuery(fields[key])}"`;
+ }
}
@@ -106,4 +131,8 @@ class AnkiNull {
async guiBrowse(query) {
return [];
}
+
+ async findNoteIds(notes) {
+ return [];
+ }
}