diff options
author | Stefan Vuković <stefanvukovic44@gmail.com> | 2024-07-01 11:51:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-01 09:51:10 +0000 |
commit | 9261a70a564034badf2c2b8c6859c46b295adb3d (patch) | |
tree | 1517f37d5d368db2104fa0b5d38677cb65705803 /ext/js/pages | |
parent | f243608010746b8268f8658b40bd38bc4e337a98 (diff) |
make non-ja audio work without configuration (#1152)
* add audio source for wiktionary format filenames on commons
* allow region codes
* fix files being saved in anki as mp3
* wip
* refactor _getAvailableAudioSourceTypes
* update docs
* wording
* single line list
* fix no anki audio
Diffstat (limited to 'ext/js/pages')
-rw-r--r-- | ext/js/pages/settings/audio-controller.js | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/ext/js/pages/settings/audio-controller.js b/ext/js/pages/settings/audio-controller.js index b89ae2ba..defef16e 100644 --- a/ext/js/pages/settings/audio-controller.js +++ b/ext/js/pages/settings/audio-controller.js @@ -47,6 +47,8 @@ export class AudioController extends EventDispatcher { this._voiceTestTextInput = querySelectorNotNull(document, '#text-to-speech-voice-test-text'); /** @type {import('audio-controller').VoiceInfo[]} */ this._voices = []; + /** @type {string} */ + this._language = 'ja'; } /** @type {import('./settings-controller.js').SettingsController} */ @@ -121,12 +123,18 @@ export class AudioController extends EventDispatcher { * @param {import('settings-controller').EventArgument<'optionsChanged'>} details */ _onOptionsChanged({options}) { + const { + general: {language}, + audio: {sources}, + } = options; + + this._language = language; + for (const entry of this._audioSourceEntries) { entry.cleanup(); } this._audioSourceEntries = []; - const {sources} = options.audio; for (let i = 0, ii = sources.length; i < ii; ++i) { this._createAudioSourceEntry(i, sources[i]); } @@ -216,15 +224,7 @@ export class AudioController extends EventDispatcher { * @returns {import('settings').AudioSourceType} */ _getUnusedAudioSourceType() { - /** @type {import('settings').AudioSourceType[]} */ - const typesAvailable = [ - 'jpod101', - 'jpod101-alternate', - 'jisho', - 'lingua-libre', - 'wiktionary', - 'custom', - ]; + const typesAvailable = this._getAvailableAudioSourceTypes(); for (const type of typesAvailable) { if (!this._audioSourceEntries.some((entry) => entry.type === type)) { return type; @@ -233,6 +233,20 @@ export class AudioController extends EventDispatcher { return typesAvailable[0]; } + /** + * @returns {import('settings').AudioSourceType[]} + */ + _getAvailableAudioSourceTypes() { + /** @type {import('settings').AudioSourceType[]} */ + const generalAudioSources = ['lingua-libre', 'wiktionary', 'text-to-speech', 'custom']; + if (this._language === 'ja') { + /** @type {import('settings').AudioSourceType[]} */ + const japaneseAudioSources = ['jpod101', 'jpod101-alternate', 'jisho']; + return [...japaneseAudioSources, ...generalAudioSources]; + } + return generalAudioSources; + } + /** */ async _addAudioSource() { const type = this._getUnusedAudioSourceType(); |