zarzet
d819878ec7
fix(downloads): stage direct-mode outputs and serialize same-path writes
...
The non-SAF filesystem path (Android direct mode and all of iOS) had
none of the safeguards the SAF path gained: extension downloads
streamed straight into the final filename, every error path stranded
the partial file there, and the ISRC duplicate check (exists + size>0
with a head-only FLAC parse) then accepted the truncated file as
complete forever. On iOS this was routine, not rare: the background
task grace is ~30s, after which the process is suspended mid-stream.
- fileDownload/fileDownloadChunked now stream into a .partial sibling
and promote to the final name with an atomic rename on success;
failures remove the staged file and never touch the final name
- fileWrite (full-content) uses the same stage-and-rename protocol
- writes are serialized per final output path, so concurrent queue
items that resolve to the same filename can no longer interleave
bytes into one file
The staged suffix keeps partials invisible to extension duplicate
checks, which match on the final audio extension.
2026-07-10 10:18:03 +07:00
..
2026-07-02 01:24:21 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-05-04 02:21:17 +07:00
2026-07-10 10:18:00 +07:00
2026-04-13 23:32:12 +07:00
2026-03-26 01:11:29 +07:00
2026-05-10 23:18:32 +07:00
2026-06-12 21:10:37 +07:00
2026-05-03 14:12:53 +07:00
2026-04-18 23:32:16 +07:00
2026-05-06 00:04:49 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-05-04 02:21:17 +07:00
2026-06-12 21:10:37 +07:00
2026-05-04 02:21:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:03 +07:00
2026-04-13 23:32:14 +07:00
2026-03-15 21:12:47 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:12:17 +07:00
2026-05-04 02:21:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:12:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:12:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:12:17 +07:00
2026-07-01 03:19:02 +07:00
2026-06-02 00:58:40 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-05-03 14:12:53 +07:00
2026-07-10 10:12:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-06-02 00:58:42 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-06-11 01:08:20 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:03 +07:00
2026-07-10 10:18:00 +07:00
2026-04-13 23:32:17 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:03 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:11:12 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:12:13 +07:00
2026-05-08 01:06:48 +07:00
2026-05-03 14:12:53 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:02 +07:00
2026-07-10 10:18:02 +07:00
2026-04-13 23:35:03 +07:00
2026-06-27 06:35:32 +07:00
2026-06-27 06:35:32 +07:00
2026-06-27 06:35:32 +07:00
2026-04-13 23:32:14 +07:00
2026-05-08 20:35:41 +07:00
2026-04-13 23:32:12 +07:00
2026-06-26 22:39:22 +07:00
2026-05-04 02:21:17 +07:00
2026-07-10 10:18:00 +07:00
2026-06-27 06:35:32 +07:00
2026-06-30 09:13:55 +07:00
2026-05-06 00:04:49 +07:00
2026-06-27 06:35:32 +07:00
2026-06-27 06:35:32 +07:00
2026-05-12 02:23:04 +07:00
2026-06-30 09:13:55 +07:00
2026-07-10 10:18:00 +07:00
2026-06-14 15:00:34 +07:00
2026-04-13 23:32:12 +07:00
2026-05-10 22:14:47 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-07-10 10:18:00 +07:00
2026-03-08 04:15:28 +07:00
2026-02-19 18:27:14 +07:00
2026-07-10 10:18:00 +07:00
2026-06-27 06:35:32 +07:00
2026-04-18 23:32:16 +07:00
2026-05-06 12:08:53 +07:00
2026-07-10 10:18:00 +07:00
2026-03-08 04:15:28 +07:00
2026-04-13 23:32:14 +07:00
2026-04-13 23:32:15 +07:00
2026-04-13 23:35:03 +07:00
2026-04-18 23:32:16 +07:00
2026-05-06 00:04:49 +07:00
2026-06-02 00:58:40 +07:00
2026-07-10 10:18:00 +07:00