- Pending/uploading rows get a cancel button; every cancel is confirmed in a dialog and the source file is always kept — only a confirmed upload deletes originals. The in-flight HTTP transfer aborts immediately (async OkHttp call instead of blocking execute()). - Enqueue refuses content whose SHA-256 is already pending/uploading, so sharing or picking the same file twice no longer uploads it twice in parallel (content URIs are opaque; the hash is the identity). - Cancel/finish races resolved with conditional DB updates: a cancel landing mid-flight keeps the source; a cancel after completion is refused with a toast instead of flipping a finished row. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.9 KiB
2.9 KiB