Below is the list of problems I've identified while testing and exploring the plugin. I'll add more
as I find them. goal is to prioritize high-ROI fixes that improve UX first. longer-term issues and breaking
changes can wait.
┌─ Transloadit server [ api2 ] ───────────────────────────────────┐
│ SSE / polling → assembly_uploading, assembly_executing, │
│ assembly_execution_progress, assembly_result_finished, │
│ assembly_upload_meta_data_extracted, assembly_finished, … │
└──────────────────────────────┬───────────────────────────────────┘
▼
┌─ Assembly.ts (component-emitter) ────────────────────────────────┐
│ `this.status` + #diffStatus → status, executing, │
│ execution-progress, upload, result, finished, metadata, error │
└──────────────────────────────┬───────────────────────────────────┘
▼
┌─ Uppy event bus (#connectAssembly re-emits) ─────────────────────┐
│ transloadit:assembly-created / -executing / -error / -cancelled │
│ transloadit:execution-progress / result / complete │
└──────────────────────────────┬───────────────────────────────────┘
▼
Consumer's UI code
@uppy/transloaditis our flagship plugin. We should hold it to a higher standard of code quality and consumer DX than it is at today.Below is the list of problems I've identified while testing and exploring the plugin. I'll add more
as I find them. goal is to prioritize high-ROI fixes that improve UX first. longer-term issues and breaking
changes can wait.
@uppy/transloaditplugin withimportFromUploadURLsoption also no example demostrating how to use the plugin with this option . I struggled a lot setting this up in my testing.AssemblyResponsethemselves See console code TestingArea/uppy.tsx 8 event listeners andmergeAssembliesto recreate assembly state which is fragile and produces stale state and lost fields and leads to bugs like thisuseUppyStateand every framework integration has to reinvent the workaround ( discussed in 1st point ) . fixing this would also give users the ability to make custom UI around assembly execution as requested by one of our customersAssemblyWatcher.tsis essentially a dead weight. A 133-line countdown latch for multi-assembly, but now we always allow 1 assembly to be executed at a time so this can be entirely removed or can be made way simpler.importFromUploadURLsoptionContext
@uppy/transloaditwent from multi-assembly (with per-file options) to single-assembly in #5158Current 3-layer event architecture