diff options
author | StefanVukovic99 <stefanvukovic44@gmail.com> | 2024-06-27 18:08:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-27 16:08:42 +0000 |
commit | 603c2c7e1b50d8b06c06848c3e83d241da9437e6 (patch) | |
tree | 2e04bdb57475c630170315678d789751bfeb6444 /ext/js/display | |
parent | 4e3f23e942252dacb31780de30f0233eccf1d9f8 (diff) |
add lingua libre audio source (#1129)
* add lingua libre audio source
* mvp
* run file requests in parallel
* remove redundant language var
* redundant api function
---------
Co-authored-by: Cashew <52880648+cashewnuttynuts@users.noreply.github.com>
Diffstat (limited to 'ext/js/display')
-rw-r--r-- | ext/js/display/display-anki.js | 14 | ||||
-rw-r--r-- | ext/js/display/display-audio.js | 4 | ||||
-rw-r--r-- | ext/js/display/display.js | 14 |
3 files changed, 29 insertions, 3 deletions
diff --git a/ext/js/display/display-anki.js b/ext/js/display/display-anki.js index fc242549..b3b05408 100644 --- a/ext/js/display/display-anki.js +++ b/ext/js/display/display-anki.js @@ -193,7 +193,11 @@ export class DisplayAnki { */ _onOptionsUpdated({options}) { const { - general: {resultOutputMode, glossaryLayoutMode, compactTags}, + general: { + resultOutputMode, + glossaryLayoutMode, + compactTags, + }, dictionaries, anki: { tags, @@ -883,7 +887,13 @@ export class DisplayAnki { _getAnkiNoteMediaAudioDetails(details) { if (details.type !== 'term') { return null; } const {sources, preferredAudioIndex} = this._displayAudio.getAnkiNoteMediaAudioDetails(details.term, details.reading); - return {sources, preferredAudioIndex, idleTimeout: this._audioDownloadIdleTimeout}; + const languageSummary = this._display.getLanguageSummary(); + return { + sources, + preferredAudioIndex, + idleTimeout: this._audioDownloadIdleTimeout, + languageSummary, + }; } // View note functions diff --git a/ext/js/display/display-audio.js b/ext/js/display/display-audio.js index c7e08ffe..0d1ca029 100644 --- a/ext/js/display/display-audio.js +++ b/ext/js/display/display-audio.js @@ -57,6 +57,7 @@ export class DisplayAudio { ['jpod101', 'JapanesePod101'], ['jpod101-alternate', 'JapanesePod101 (Alternate)'], ['jisho', 'Jisho.org'], + ['lingua-libre', 'Lingua Libre'], ['text-to-speech', 'Text-to-speech'], ['text-to-speech-reading', 'Text-to-speech (Kana reading)'], ['custom', 'Custom URL'], @@ -677,7 +678,8 @@ export class DisplayAudio { */ async _getTermAudioInfoList(source, term, reading) { const sourceData = this._getSourceData(source); - const infoList = await this._display.application.api.getTermAudioInfoList(sourceData, term, reading); + const languageSummary = this._display.getLanguageSummary(); + const infoList = await this._display.application.api.getTermAudioInfoList(sourceData, term, reading, languageSummary); return infoList.map((info) => ({info, audioPromise: null, audioResolved: false, audio: null})); } diff --git a/ext/js/display/display.js b/ext/js/display/display.js index f86d7b8c..3d18e416 100644 --- a/ext/js/display/display.js +++ b/ext/js/display/display.js @@ -192,6 +192,8 @@ export class Display extends EventDispatcher { this._onMenuButtonMenuCloseBind = this._onMenuButtonMenuClose.bind(this); /** @type {ThemeController} */ this._themeController = new ThemeController(document.documentElement); + /** @type {import('language').LanguageSummary[]} */ + this._languageSummaries = []; /* eslint-disable @stylistic/no-multi-spaces */ this._hotkeyHandler.registerActions([ @@ -316,6 +318,8 @@ export class Display extends EventDispatcher { documentElement.dataset.browser = browser; } + this._languageSummaries = await this._application.api.getLanguageSummaries(); + // Prepare await this._hotkeyHelpController.prepare(this._application.api); await this._displayGenerator.prepare(); @@ -398,6 +402,16 @@ export class Display extends EventDispatcher { } /** + * @returns {import('language').LanguageSummary} + * @throws {Error} + */ + getLanguageSummary() { + if (this._options === null) { throw new Error('Options is null'); } + const language = this._options.general.language; + return /** @type {import('language').LanguageSummary} */ (this._languageSummaries.find(({iso}) => iso === language)); + } + + /** * @returns {import('settings').OptionsContext} */ getOptionsContext() { |