Fixed Novel custom voices not saving

This commit is contained in:
Cohee
2023-08-28 21:46:41 +03:00
parent 3ae7a6741f
commit b51511b99f
3 changed files with 40 additions and 17 deletions

View File

@ -487,6 +487,11 @@ function loadSettings() {
if (Object.keys(extension_settings.tts).length === 0) { if (Object.keys(extension_settings.tts).length === 0) {
Object.assign(extension_settings.tts, defaultSettings) Object.assign(extension_settings.tts, defaultSettings)
} }
for (const key in defaultSettings) {
if (!(key in extension_settings.tts)) {
extension_settings.tts[key] = defaultSettings[key]
}
}
$('#tts_provider').val(extension_settings.tts.currentProvider) $('#tts_provider').val(extension_settings.tts.currentProvider)
$('#tts_enabled').prop( $('#tts_enabled').prop(
'checked', 'checked',

View File

@ -1,5 +1,5 @@
import { getRequestHeaders, callPopup } from "../../../script.js" import { getRequestHeaders, callPopup } from "../../../script.js"
import { getPreviewString } from "./index.js" import { getPreviewString, saveTtsProviderSettings } from "./index.js"
import { initVoiceMap } from "./index.js" import { initVoiceMap } from "./index.js"
export { NovelTtsProvider } export { NovelTtsProvider }
@ -21,17 +21,19 @@ class NovelTtsProvider {
get settingsHtml() { get settingsHtml() {
let html = ` let html = `
<br> <div class="novel_tts_hints">
<small> <div>Use NovelAI's TTS engine.</div>
Use NovelAI's TTS engine.<br> <div>
The default Voice IDs are only examples. Add custom voices and Novel will create a new random voice for it. Feel free to try different options!<br> The default Voice IDs are only examples. Add custom voices and Novel will create a new random voice for it.
</small> Feel free to try different options!
<small><i>Hint: Save an API key in the NovelAI API settings to use it here.</i></small> <br> </div>
<i>Hint: Save an API key in the NovelAI API settings to use it here.</i>
</div>
<label for="tts-novel-custom-voices-add">Custom Voices</label> <label for="tts-novel-custom-voices-add">Custom Voices</label>
<div style="display:flex; align-items: baseline"> <div class="tts_custom_voices">
<select id="tts-novel-custom-voices-select"><select> <select id="tts-novel-custom-voices-select"><select>
<i id="tts-novel-custom-voices-add" class="tts-button fa-solid fa-plus fa-2x" title="Add" style="color:green"></i> <i id="tts-novel-custom-voices-add" class="tts-button fa-solid fa-plus fa-xl success" title="Add"></i>
<i id="tts-novel-custom-voices-delete" class="tts-button fa-solid fa-xmark fa-2x" title="Delete" style="color:red"></i> <i id="tts-novel-custom-voices-delete" class="tts-button fa-solid fa-xmark fa-xl failure" title="Delete"></i>
</div> </div>
`; `;
return html; return html;
@ -44,6 +46,7 @@ class NovelTtsProvider {
this.settings.customVoices.push(voiceName) this.settings.customVoices.push(voiceName)
this.populateCustomVoices() this.populateCustomVoices()
initVoiceMap() // Update TTS extension voiceMap initVoiceMap() // Update TTS extension voiceMap
saveTtsProviderSettings()
} }
// Delete selected custom voice from provider // Delete selected custom voice from provider
@ -56,6 +59,7 @@ class NovelTtsProvider {
} }
this.populateCustomVoices() this.populateCustomVoices()
initVoiceMap() // Update TTS extension voiceMap initVoiceMap() // Update TTS extension voiceMap
saveTtsProviderSettings()
} }
// Create the UI dropdown list of voices in provider // Create the UI dropdown list of voices in provider

View File

@ -70,7 +70,21 @@
.tts_block { .tts_block {
display: flex; display: flex;
align-items: center; align-items: baseline;
column-gap: 5px; column-gap: 5px;
flex-wrap: wrap; flex-wrap: wrap;
} }
.tts_custom_voices {
display: flex;
align-items: baseline;
gap: 5px;
}
.novel_tts_hints {
font-size: calc(0.9 * var(--mainFontSize));
display: flex;
flex-direction: column;
gap: 5px;
margin-bottom: 5px;
}