diff --git a/app/static/js/app.jsx b/app/static/js/app.jsx index 0476150..c8bbeb3 100644 --- a/app/static/js/app.jsx +++ b/app/static/js/app.jsx @@ -6390,11 +6390,12 @@ const App = () => { const fileId = result.output_file_id || result.output_path?.split('/').pop(); if (fileId) { const downloadUrl = `${API_AUDIO}/download/${fileId}`; - const a = document.createElement('a'); - a.href = downloadUrl; - a.download = fileId; - a.click(); - showToast("Xuất bản âm thanh từ máy chủ hoàn tất!", "success"); + showToast("Xuất bản âm thanh từ máy chủ hoàn tất!", "success", "Tải về", () => { + const a = document.createElement('a'); + a.href = downloadUrl; + a.download = fileId; + a.click(); + }); } } else { throw new Error(result.error || 'Server processing failed'); @@ -6638,20 +6639,22 @@ const App = () => { if (result.success) { const outId = result.output_file_id; const downloadUrl = `${API_AUDIO}/download/${outId}`; - const a = document.createElement('a'); - a.href = downloadUrl; - a.download = `sonicforge-session-${targetRate}hz-${bitDepth}bit.${exportSettings.format}`; - a.click(); - showToast(`Xuất bản âm thanh định dạng ${exportSettings.format.toUpperCase()} thành công!`, "success"); + showToast(`Xuất bản âm thanh định dạng ${exportSettings.format.toUpperCase()} thành công!`, "success", "Tải về", () => { + const a = document.createElement('a'); + a.href = downloadUrl; + a.download = `sonicforge-session-${targetRate}hz-${bitDepth}bit.${exportSettings.format}`; + a.click(); + }); } else { throw new Error(result.error || 'Server encoding failed'); } } catch (transcodeErr) { - showToast(`Lỗi chuyển đổi: ${transcodeErr.message}. Tải dạng WAV thay thế.`, "warning"); - const a = document.createElement('a'); - a.href = url; - a.download = `sonicforge-session-${targetRate}hz-${bitDepth}bit.wav`; - a.click(); + showToast(`Lỗi chuyển đổi: ${transcodeErr.message}.`, "warning", "Tải WAV thay thế", () => { + const a = document.createElement('a'); + a.href = url; + a.download = `sonicforge-session-${targetRate}hz-${bitDepth}bit.wav`; + a.click(); + }); } } else { if (exportSettings.format !== 'wav') { diff --git a/app/static/js/app.precompiled.js b/app/static/js/app.precompiled.js index b9bb597..aaf810c 100644 --- a/app/static/js/app.precompiled.js +++ b/app/static/js/app.precompiled.js @@ -6492,11 +6492,12 @@ const App = () => { const fileId = result.output_file_id || result.output_path?.split('/').pop(); if (fileId) { const downloadUrl = `${API_AUDIO}/download/${fileId}`; - const a = document.createElement('a'); - a.href = downloadUrl; - a.download = fileId; - a.click(); - showToast("Xuất bản âm thanh từ máy chủ hoàn tất!", "success"); + showToast("Xuất bản âm thanh từ máy chủ hoàn tất!", "success", "Tải về", () => { + const a = document.createElement('a'); + a.href = downloadUrl; + a.download = fileId; + a.click(); + }); } } else { throw new Error(result.error || 'Server processing failed'); @@ -6774,20 +6775,22 @@ const App = () => { if (result.success) { const outId = result.output_file_id; const downloadUrl = `${API_AUDIO}/download/${outId}`; - const a = document.createElement('a'); - a.href = downloadUrl; - a.download = `sonicforge-session-${targetRate}hz-${bitDepth}bit.${exportSettings.format}`; - a.click(); - showToast(`Xuất bản âm thanh định dạng ${exportSettings.format.toUpperCase()} thành công!`, "success"); + showToast(`Xuất bản âm thanh định dạng ${exportSettings.format.toUpperCase()} thành công!`, "success", "Tải về", () => { + const a = document.createElement('a'); + a.href = downloadUrl; + a.download = `sonicforge-session-${targetRate}hz-${bitDepth}bit.${exportSettings.format}`; + a.click(); + }); } else { throw new Error(result.error || 'Server encoding failed'); } } catch (transcodeErr) { - showToast(`Lỗi chuyển đổi: ${transcodeErr.message}. Tải dạng WAV thay thế.`, "warning"); - const a = document.createElement('a'); - a.href = url; - a.download = `sonicforge-session-${targetRate}hz-${bitDepth}bit.wav`; - a.click(); + showToast(`Lỗi chuyển đổi: ${transcodeErr.message}.`, "warning", "Tải WAV thay thế", () => { + const a = document.createElement('a'); + a.href = url; + a.download = `sonicforge-session-${targetRate}hz-${bitDepth}bit.wav`; + a.click(); + }); } } else { if (exportSettings.format !== 'wav') { diff --git a/app/storage/sonicforge.db b/app/storage/sonicforge.db index ea6ca2e..330f740 100644 Binary files a/app/storage/sonicforge.db and b/app/storage/sonicforge.db differ