perf(android): batch SAF lookups during download publication

This commit is contained in:
zarzet
2026-09-17 03:30:30 +07:00
parent 3eb44dc892
commit c868aac2cc
11 changed files with 668 additions and 48 deletions
@@ -447,6 +447,7 @@ extension _DownloadQueueFinalization on DownloadQueueNotifier {
mimeType: mimeType,
srcPath: srcPath,
);
_logSafPublishTimings(result);
final uri = (result['uri'] as String? ?? '').trim();
final publishedName = (result['file_name'] as String? ?? '').trim();
if (uri.isEmpty || publishedName.isEmpty) return null;
@@ -461,6 +462,13 @@ extension _DownloadQueueFinalization on DownloadQueueNotifier {
}
}
void _logSafPublishTimings(Map<String, dynamic> result) {
final timings = result['publish_timings_ms'];
if (timings is Map && timings.isNotEmpty) {
_log.d('SAF publish timings (ms): $timings');
}
}
Future<({String uri, String fileName})?> _writeTempToSafUnique({
required String treeUri,
required String relativeDir,
@@ -478,6 +486,7 @@ extension _DownloadQueueFinalization on DownloadQueueNotifier {
srcPath: srcPath,
preservedSuffix: preservedSuffix,
);
_logSafPublishTimings(result);
final uri = (result['uri'] as String? ?? '').trim();
final publishedName = (result['file_name'] as String? ?? '').trim();
if (uri.isEmpty || publishedName.isEmpty) return null;
@@ -507,6 +516,7 @@ extension _DownloadQueueFinalization on DownloadQueueNotifier {
srcPath: srcPath,
preservedSuffix: preservedSuffix,
);
_logSafPublishTimings(result);
final uri = (result['uri'] as String? ?? '').trim();
final publishedName = (result['file_name'] as String? ?? '').trim();
if (uri.isEmpty || publishedName.isEmpty) return null;
@@ -1040,9 +1040,10 @@ class _DownloadRun {
final localPath = filePath;
if (localPath == null || isContentUri(localPath)) return true;
final localFile = File(localPath);
if (!await localFile.exists() || await localFile.length() <= 0) {
return false;
}
if (!await localFile.exists()) return false;
final localSize = await localFile.length();
if (localSize <= 0) return false;
_log.d('Publishing finalized SAF output ($localSize bytes)');
var finalName =
normalizeOptionalString(finalSafFileName) ??