fix(speech): preserve edits while saving settings
This commit is contained in:
@@ -34,20 +34,17 @@ export const SpeechSettingsCard: Component = () => {
|
|||||||
const { serverSettings, updateSpeechSettings } = useConfig()
|
const { serverSettings, updateSpeechSettings } = useConfig()
|
||||||
const initialDrafts = createDraftFields(serverSettings().speech)
|
const initialDrafts = createDraftFields(serverSettings().speech)
|
||||||
const [isSaving, setIsSaving] = createSignal(false)
|
const [isSaving, setIsSaving] = createSignal(false)
|
||||||
const [saveStatus, setSaveStatus] = createSignal<"idle" | "saved" | "error">("idle")
|
const [saveStatus, setSaveStatus] = createSignal<"idle" | "saved" | "error">("saved")
|
||||||
const [drafts, setDrafts] = createSignal<DraftFields>(initialDrafts)
|
const [drafts, setDrafts] = createSignal<DraftFields>(initialDrafts)
|
||||||
|
|
||||||
createEffect(() => {
|
createEffect(() => {
|
||||||
const speech = serverSettings().speech
|
const speech = serverSettings().speech
|
||||||
const nextDrafts = createDraftFields(speech)
|
const nextDrafts = createDraftFields(speech)
|
||||||
if (!isDirty() || isSaving()) {
|
if (!isSaving() && !isDirty()) {
|
||||||
if (!isDraftEqual(drafts(), nextDrafts)) {
|
if (!isDraftEqual(drafts(), nextDrafts)) {
|
||||||
setDrafts(nextDrafts)
|
setDrafts(nextDrafts)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!isSaving() && !isDirty()) {
|
|
||||||
setSaveStatus("saved")
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
createEffect(() => {
|
createEffect(() => {
|
||||||
@@ -86,9 +83,9 @@ export const SpeechSettingsCard: Component = () => {
|
|||||||
|
|
||||||
async function handleSave() {
|
async function handleSave() {
|
||||||
if (!isDirty() || isSaving()) return
|
if (!isDirty() || isSaving()) return
|
||||||
|
const current = drafts()
|
||||||
setIsSaving(true)
|
setIsSaving(true)
|
||||||
setSaveStatus("idle")
|
setSaveStatus("idle")
|
||||||
const current = drafts()
|
|
||||||
try {
|
try {
|
||||||
await updateSpeechSettings({
|
await updateSpeechSettings({
|
||||||
apiKey: current.apiKey.trim() || undefined,
|
apiKey: current.apiKey.trim() || undefined,
|
||||||
|
|||||||
Reference in New Issue
Block a user