diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-05-30 09:33:13 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-30 09:33:13 -0400 |
commit | 63a3e56367b95f7ea64a5701d17179de60ed8718 (patch) | |
tree | fc811028b127abf9c1ff1dbdbb4663ba70b60649 /ext/bg/js/settings/audio.js | |
parent | 1a5a37c9e47dc4d1f1e1b3ffaf990e792140b912 (diff) |
Use SettingsController (#576)
* Use settingsController internally in settings/main.js
* Replace modifyingProfileChange with SettingsController.optionsContextChanged
* Update ClipboardPopupsController to use SettingsController
* Store reference to checkbox
* Use this._settingsController for everything
* Change where current profile is initially assigned from
* Remove some unnecessary async calls
* Move setup calls
* Update AnkiTemplatesController to use SettingsController
* Cache default field templates
* Update AnkiController to use SettingsController
* Update AudioController to use SettingsController
* Update SettingsBackup to use SettingsController
* Update DictionaryController to use SettingsController
* Update GenericSettingController to use SettingsController
* Update ProfileController to use SettingsController
* Remove unused
* Remove unused
* Replace some uses of api.options* functions
* Fix missing awaits
* Fix invalid function
Diffstat (limited to 'ext/bg/js/settings/audio.js')
-rw-r--r-- | ext/bg/js/settings/audio.js | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/ext/bg/js/settings/audio.js b/ext/bg/js/settings/audio.js index 5c1cb131..1a41a498 100644 --- a/ext/bg/js/settings/audio.js +++ b/ext/bg/js/settings/audio.js @@ -17,13 +17,11 @@ /* global * AudioSystem - * getOptionsContext - * getOptionsMutable - * settingsSaveOptions */ class AudioController { - constructor() { + constructor(settingsController) { + this._settingsController = settingsController; this._audioSystem = null; this._settingsAudioSources = null; this._audioSourceContainer = null; @@ -37,27 +35,36 @@ class AudioController { useCache: true }); - const optionsContext = getOptionsContext(); - const options = await getOptionsMutable(optionsContext); - - this._settingsAudioSources = options.audio.sources; this._audioSourceContainer = document.querySelector('.audio-source-list'); this._audioSourceAddButton = document.querySelector('.audio-source-add'); this._audioSourceContainer.textContent = ''; this._audioSourceAddButton.addEventListener('click', this._onAddAudioSource.bind(this), false); - for (const audioSource of toIterable(this._settingsAudioSources)) { - this._createAudioSourceEntry(audioSource); - } - this._prepareTextToSpeech(); + + this._settingsController.on('optionsChanged', this._onOptionsChanged.bind(this)); + + this._onOptionsChanged(); } // Private + async _onOptionsChanged() { + const options = await this._settingsController.getOptionsMutable(); + + for (const entry of [...this._audioSourceEntries]) { + this._removeAudioSourceEntry(entry); + } + + this._settingsAudioSources = options.audio.sources; + for (const audioSource of toIterable(this._settingsAudioSources)) { + this._createAudioSourceEntry(audioSource); + } + } + async _save() { - await settingsSaveOptions(); + await this._settingsController.save(); } _prepareTextToSpeech() { |