/** * Upload state management */ export function createUploadState(ref, computed) { // --- Upload State --- const uploadQueue = ref([]); const currentlyProcessingFile = ref(null); const processingProgress = ref(0); const processingMessage = ref(''); const isProcessingActive = ref(false); const pollInterval = ref(null); const progressPopupMinimized = ref(false); const progressPopupClosed = ref(false); const maxFileSizeMB = ref(250); const chunkingEnabled = ref(true); const chunkingMode = ref('size'); const chunkingLimit = ref(20); const chunkingLimitDisplay = ref('20MB'); const maxConcurrentUploads = ref(3); const recordingDisclaimer = ref(''); const showRecordingDisclaimerModal = ref(false); const pendingRecordingMode = ref(null); // Advanced Options for ASR const showAdvancedOptions = ref(false); const uploadLanguage = ref(''); const uploadMinSpeakers = ref(''); const uploadMaxSpeakers = ref(''); const uploadHotwords = ref(''); const uploadInitialPrompt = ref(''); // --- Computed Properties --- const totalInQueue = computed(() => uploadQueue.value.length); const completedInQueue = computed(() => uploadQueue.value.filter(item => item.status === 'completed' || item.status === 'failed').length); const finishedFilesInQueue = computed(() => uploadQueue.value.filter(item => ['completed', 'failed'].includes(item.status))); const clearCompletedUploads = () => { uploadQueue.value = uploadQueue.value.filter(item => !['completed', 'failed'].includes(item.status)); }; return { uploadQueue, currentlyProcessingFile, processingProgress, processingMessage, isProcessingActive, pollInterval, progressPopupMinimized, progressPopupClosed, maxFileSizeMB, chunkingEnabled, chunkingMode, chunkingLimit, chunkingLimitDisplay, maxConcurrentUploads, recordingDisclaimer, showRecordingDisclaimerModal, pendingRecordingMode, // Advanced Options showAdvancedOptions, uploadLanguage, uploadMinSpeakers, uploadMaxSpeakers, uploadHotwords, uploadInitialPrompt, // Computed totalInQueue, completedInQueue, finishedFilesInQueue, // Methods clearCompletedUploads }; }