Fix multiple trigger bug when function has js (#9188)

* add code

* add changeset

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
This commit is contained in:
Freddy Boulton 2024-09-10 16:18:31 -04:00 committed by GitHub
parent ac2c015bd8
commit 8f8e1c6a0b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 44 additions and 33 deletions

View File

@ -0,0 +1,7 @@
---
"@gradio/audio": patch
"@gradio/core": patch
"gradio": patch
---
fix:Fix multiple trigger bug when function has js

View File

@ -97,7 +97,6 @@
Boolean
) as FileData[]
)[0];
dispatch(event, value);
};

View File

@ -62,7 +62,7 @@
edit: undefined;
}>();
$: record?.on("record-start", () => {
function record_start_callback(): void {
start_interval();
timing = true;
dispatch("start_recording");
@ -70,9 +70,9 @@
let waveformCanvas = microphoneContainer;
if (waveformCanvas) waveformCanvas.style.display = "block";
}
});
}
$: record?.on("record-end", async (blob) => {
async function record_end_callback(blob: Blob): Promise<void> {
seconds = 0;
timing = false;
clearInterval(interval);
@ -91,12 +91,7 @@
} catch (e) {
console.error(e);
}
});
$: record?.on("record-pause", () => {
dispatch("pause_recording");
clearInterval(interval);
});
}
$: record?.on("record-resume", () => {
start_interval();
@ -140,6 +135,25 @@
record = micWaveform.registerPlugin(RecordPlugin.create());
record.startMic();
record?.on("record-end", record_end_callback);
record?.on("record-start", record_start_callback);
record?.on("record-pause", () => {
dispatch("pause_recording");
clearInterval(interval);
});
record?.on("record-end", (blob) => {
recordedAudio = URL.createObjectURL(blob);
const microphone = microphoneContainer;
const recording = recordingContainer;
if (microphone) microphone.style.display = "none";
if (recording && recordedAudio) {
recording.innerHTML = "";
create_recording_waveform();
}
});
};
const create_recording_waveform = (): void => {
@ -152,19 +166,6 @@
});
};
$: record?.on("record-end", (blob) => {
recordedAudio = URL.createObjectURL(blob);
const microphone = microphoneContainer;
const recording = recordingContainer;
if (microphone) microphone.style.display = "none";
if (recording && recordedAudio) {
recording.innerHTML = "";
create_recording_waveform();
}
});
const handle_trim_audio = async (
start: number,
end: number

View File

@ -238,7 +238,7 @@
.then((v: unknown[]) => {
if (dep.backend_fn) {
payload.data = v;
make_prediction(payload);
trigger_prediction(dep, payload);
} else {
handle_update(v, dep_index);
}
@ -253,16 +253,20 @@
);
} else {
if (dep.backend_fn) {
if (dep.trigger_mode === "once") {
if (!dep.pending_request) make_prediction(payload);
} else if (dep.trigger_mode === "multiple") {
trigger_prediction(dep, payload);
}
}
function trigger_prediction(dep: Dependency, payload: Payload): void {
if (dep.trigger_mode === "once") {
if (!dep.pending_request) make_prediction(payload);
} else if (dep.trigger_mode === "multiple") {
make_prediction(payload);
} else if (dep.trigger_mode === "always_last") {
if (!dep.pending_request) {
make_prediction(payload);
} else if (dep.trigger_mode === "always_last") {
if (!dep.pending_request) {
make_prediction(payload);
} else {
dep.final_event = payload;
}
} else {
dep.final_event = payload;
}
}
}