diff options
| -rw-r--r-- | ext/bg/js/anki-note-builder.js | 11 | ||||
| -rw-r--r-- | ext/bg/js/backend.js | 13 | ||||
| -rw-r--r-- | ext/mixed/js/audio-system.js | 6 | 
3 files changed, 19 insertions, 11 deletions
| diff --git a/ext/bg/js/anki-note-builder.js b/ext/bg/js/anki-note-builder.js index b46bf3ba..72e3b337 100644 --- a/ext/bg/js/anki-note-builder.js +++ b/ext/bg/js/anki-note-builder.js @@ -20,9 +20,9 @@   */  class AnkiNoteBuilder { -    constructor({audioSystem, renderTemplate, getClipboardImage=null, getScreenshot=null}) { -        this._audioSystem = audioSystem; +    constructor({renderTemplate, getDefinitionAudio=null, getClipboardImage=null, getScreenshot=null}) {          this._renderTemplate = renderTemplate; +        this._getDefinitionAudio = getDefinitionAudio;          this._getClipboardImage = getClipboardImage;          this._getScreenshot = getScreenshot;      } @@ -130,7 +130,7 @@ class AnkiNoteBuilder {              if (fileName === null) { return; }              fileName = this._replaceInvalidFileNameCharacters(fileName); -            const {audio} = await this._audioSystem.getDefinitionAudio( +            const {audio: data} = await this._getDefinitionAudio(                  audioSourceDefinition,                  sources,                  { @@ -141,7 +141,6 @@ class AnkiNoteBuilder {                  }              ); -            const data = this._arrayBufferToBase64(audio);              await anki.storeMediaFile(fileName, data);              definition.audioFileName = fileName; @@ -260,10 +259,6 @@ class AnkiNoteBuilder {          return fileName.replace(/[<>:"/\\|?*\x00-\x1F]/g, '-');      } -    _arrayBufferToBase64(arrayBuffer) { -        return btoa(String.fromCharCode(...new Uint8Array(arrayBuffer))); -    } -      _stringReplaceAsync(str, regex, replacer) {          let match;          let index = 0; diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index 5fdca569..1bc831e9 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -58,8 +58,8 @@ class Backend {              useCache: false          });          this._ankiNoteBuilder = new AnkiNoteBuilder({ -            audioSystem: this._audioSystem,              renderTemplate: this._renderTemplate.bind(this), +            getDefinitionAudio: this._getDefinitionAudio.bind(this),              getClipboardImage: this._onApiClipboardImageGet.bind(this),              getScreenshot: this._getScreenshot.bind(this)          }); @@ -124,7 +124,8 @@ class Backend {              ['getSettings',                  {async: false, contentScript: true,  handler: this._onApiGetSettings.bind(this)}],              ['setAllSettings',               {async: true,  contentScript: false, handler: this._onApiSetAllSettings.bind(this)}],              ['getOrCreateSearchPopup',       {async: true,  contentScript: true,  handler: this._onApiGetOrCreateSearchPopup.bind(this)}], -            ['isTabSearchPopup',             {async: true,  contentScript: true,  handler: this._onApiIsTabSearchPopup.bind(this)}] +            ['isTabSearchPopup',             {async: true,  contentScript: true,  handler: this._onApiIsTabSearchPopup.bind(this)}], +            ['getDefinitionAudio',           {async: true,  contentScript: true,  handler: this._onApiGetDefinitionAudio.bind(this)}]          ]);          this._messageHandlersWithProgress = new Map([              ['deleteDictionary',        {async: true,  contentScript: false, handler: this._onApiDeleteDictionary.bind(this)}] @@ -827,6 +828,10 @@ class Backend {          return (tab !== null);      } +    async _onApiGetDefinitionAudio({definition, sources, details}) { +        return this._getDefinitionAudio(definition, sources, details); +    } +      // Command handlers      async _onCommandSearch(params) { @@ -1631,4 +1636,8 @@ class Backend {              }          }      } + +    async _getDefinitionAudio(definition, sources, details) { +        return await this._audioSystem.getDefinitionAudio(definition, sources, details); +    }  } diff --git a/ext/mixed/js/audio-system.js b/ext/mixed/js/audio-system.js index 07e1a79b..9bf12510 100644 --- a/ext/mixed/js/audio-system.js +++ b/ext/mixed/js/audio-system.js @@ -185,7 +185,11 @@ class AudioSystem {              throw new Error('Could not retrieve audio');          } -        return arrayBuffer; +        return this._arrayBufferToBase64(arrayBuffer); +    } + +    _arrayBufferToBase64(arrayBuffer) { +        return btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)));      }      _isAudioValid(audio) { |