Table of Contents

**@arolariu/website**


@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:

  1. Client-side stage: File validation, preparation, initial processing
  2. 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 bar
  • SUCCESS: Show checkmark, enable next action
  • FAILURE: 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";