Prathamesh Sarjerao Vaidya
modularize both backend and frontend js part
a601b1d
/**
* Application State Management
*/
export class AppState {
constructor() {
this.sessionId = null;
this.uploadedFile = null;
this.videoInfo = null;
this.results = null;
this.taskId = null;
this.pollingInterval = null;
this.startTime = null;
this.eta = null;
}
reset() {
this.sessionId = null;
this.uploadedFile = null;
this.videoInfo = null;
this.results = null;
this.taskId = null;
this.startTime = null;
this.eta = null;
if (this.pollingInterval) {
clearInterval(this.pollingInterval);
this.pollingInterval = null;
}
}
setSession(sessionId, fileInfo) {
this.sessionId = sessionId;
this.videoInfo = fileInfo;
}
setTask(taskId) {
this.taskId = taskId;
this.startTime = Date.now();
}
updateETA(progress) {
if (!this.startTime || progress <= 0) return null;
const elapsed = Date.now() - this.startTime;
const estimatedTotal = elapsed / progress;
const remaining = estimatedTotal - elapsed;
this.eta = Math.max(0, Math.ceil(remaining / 1000)); // seconds
return this.eta;
}
}
// Global state instance
export const appState = new AppState();