diff --git a/frontend/public/js/app.js b/frontend/public/js/app.js
index 84370bd..927b41d 100644
--- a/frontend/public/js/app.js
+++ b/frontend/public/js/app.js
@@ -100,37 +100,56 @@ function showPendingJobsNotification(jobs) {
banner.innerHTML = `
You have ${jobs.length} video${jobs.length > 1 ? 's' : ''} generating in the background
-
-
+
+
`;
+
+ // Attach event listeners properly instead of inline onclick
+ banner.querySelector('.view-progress-btn').addEventListener('click', function() {
+ const contentId = parseInt(this.dataset.contentId, 10);
+ const jobId = this.dataset.jobId;
+ resumeLatestJob(contentId, jobId);
+ });
+
+ banner.querySelector('.dismiss-btn').addEventListener('click', function() {
+ banner.remove();
+ });
+
document.querySelector('.main-content').prepend(banner);
}
async function resumeLatestJob(contentId, jobId) {
- // Switch to generate tab and show progress
- showSection('generate');
-
const statusEl = document.getElementById('generation-status');
const videoEl = document.getElementById('output-video');
const btn = document.getElementById('generate-btn');
- btn.disabled = true;
- btn.textContent = 'Generating...';
- statusEl.className = 'status-message info';
- statusEl.textContent = 'Resuming job...';
- statusEl.classList.remove('hidden');
- videoEl.classList.add('hidden');
+ try {
+ // Switch to generate tab and show progress
+ showSection('generate');
- // Remove the banner
- const banner = document.querySelector('.pending-jobs-banner');
- if (banner) banner.remove();
+ btn.disabled = true;
+ btn.textContent = 'Generating...';
+ statusEl.className = 'status-message info';
+ statusEl.textContent = 'Resuming job...';
+ statusEl.classList.remove('hidden');
+ videoEl.classList.add('hidden');
- // Poll for completion
- await pollJob(jobId, contentId, statusEl, videoEl);
+ // Remove the banner
+ const banner = document.querySelector('.pending-jobs-banner');
+ if (banner) banner.remove();
- btn.disabled = false;
- btn.textContent = 'Generate Video';
+ // Poll for completion
+ await pollJob(jobId, contentId, statusEl, videoEl);
+ } catch (error) {
+ console.error('Error resuming job:', error);
+ statusEl.className = 'status-message error';
+ statusEl.textContent = error.message || 'Failed to resume job';
+ statusEl.classList.remove('hidden');
+ } finally {
+ btn.disabled = false;
+ btn.textContent = 'Generate Video';
+ }
}
// Login