@arolariu/website / types / UploadStatus
Type Alias: UploadStatus
UploadStatus =
"UNKNOWN"|"PENDING__CLIENTSIDE"|"PENDING__SERVERSIDE"|"SUCCESS__CLIENTSIDE"|"SUCCESS__SERVERSIDE"|"FAILURE__CLIENTSIDE"|"FAILURE__SERVERSIDE"
Defined in: types/index.ts:257
Tracks the lifecycle state of a file upload operation.
Remarks
State Machine: Represents a two-stage upload process:
- Client-side stage: File validation, preparation, initial processing
- Server-side stage: API upload, storage persistence, metadata generation
Status Values:
"UNKNOWN": Initial state before upload begins"PENDING__CLIENTSIDE": Client processing (validation, chunking, compression)"PENDING__SERVERSIDE": Server processing (storage upload, virus scan, metadata extraction)"SUCCESS__CLIENTSIDE": Client-side processing completed successfully"SUCCESS__SERVERSIDE": Server-side processing completed (final success state)"FAILURE__CLIENTSIDE": Client-side validation or processing failed"FAILURE__SERVERSIDE": Server rejected upload or processing failed
State Transitions (typical flow):
UNKNOWN → PENDING__CLIENTSIDE → SUCCESS__CLIENTSIDE →
PENDING__SERVERSIDE → SUCCESS__SERVERSIDE
Error Handling: Failures at any stage halt the process:
UNKNOWN → PENDING__CLIENTSIDE → FAILURE__CLIENTSIDE (invalid file type)
UNKNOWN → PENDING__CLIENTSIDE → SUCCESS__CLIENTSIDE →
PENDING__SERVERSIDE → FAILURE__SERVERSIDE (server error)
Usage Context:
- Invoice scan uploads (PDF, images)
- Profile picture uploads
- Document attachment uploads
- Progress indicators and error feedback
UI Implications:
PENDING: Show progress spinner or loading barSUCCESS: Show checkmark, enable next actionFAILURE: Show error message with retry option
Example
let status: UploadStatus = "UNKNOWN";
// Start client-side processing
status = "PENDING__CLIENTSIDE";
const validated = await validateFile(file);
if (!validated) {
status = "FAILURE__CLIENTSIDE";
return;
}
status = "SUCCESS__CLIENTSIDE";
// Start server-side upload
status = "PENDING__SERVERSIDE";
const response = await uploadToServer(file);
status = response.ok ? "SUCCESS__SERVERSIDE" : "FAILURE__SERVERSIDE";