From bacc4292da145bceda9e8053ae038f8f0f4a70a7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Mar 2026 22:48:14 +0000 Subject: [PATCH] fix(storage): use separate attempt counters for each compression pass Co-authored-by: derkauzigekoala <79001016+derkauzigekoala@users.noreply.github.com> --- lib/services/storage_service.dart | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/services/storage_service.dart b/lib/services/storage_service.dart index 73c3707..fe5cbcb 100644 --- a/lib/services/storage_service.dart +++ b/lib/services/storage_service.dart @@ -123,26 +123,27 @@ class StorageService { : decoded; var quality = 85; - var attempts = 0; Uint8List out = Uint8List.fromList(img.encodeJpg(working, quality: quality)); // First pass: reduce JPEG quality. + var qualityAttempts = 0; while (out.lengthInBytes > _maxImageBytes && quality > 35 && - attempts < _maxCompressionAttempts) { + qualityAttempts < _maxCompressionAttempts) { quality -= 5; out = Uint8List.fromList(img.encodeJpg(working, quality: quality)); - attempts += 1; + qualityAttempts += 1; } // Second pass: reduce dimensions progressively if still above the limit. + var dimensionAttempts = 0; while (out.lengthInBytes > _maxImageBytes && working.width > 320 && - attempts < _maxCompressionAttempts) { + dimensionAttempts < _maxCompressionAttempts) { final nextWidth = (working.width * 0.85).round(); working = img.copyResize(working, width: nextWidth); out = Uint8List.fromList(img.encodeJpg(working, quality: quality)); - attempts += 1; + dimensionAttempts += 1; } if (out.lengthInBytes > _maxImageBytes) {