Loading app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusReconciler.kt +33 −13 Original line number Diff line number Diff line Loading @@ -78,21 +78,41 @@ class InstallStatusReconciler @Inject constructor( if (progress == null) { return null } val percent = appManagerWrapper.calculateProgress(activeDownload, progress) var result: Int? = percent.takeIf { it in 0..PERCENTAGE_MAX } if (result == null) { val id = progress.downloadId.takeIf { it != INVALID_DOWNLOAD_ID } val hasDownloadId = id != null && activeDownload.downloadIdMap.containsKey(id) if (hasDownloadId) { val total = progress.totalSizeBytes[id] ?: 0L if (total > 0) { val done = progress.bytesDownloadedSoFar[id] ?: 0L result = ((done / total.toDouble()) * PERCENTAGE_MAX) .toInt() .coerceIn(0, PERCENTAGE_MAX) val downloadId = progress.downloadId.takeIf { it != INVALID_DOWNLOAD_ID } val hasDownloadId = downloadId != null && activeDownload.downloadIdMap.containsKey(downloadId) val result = if (percent in 0..PERCENTAGE_MAX) { percent } else { calculatePercent(progress, downloadId, hasDownloadId) } return result } private fun calculatePercent( progress: DownloadProgress, downloadId: Long?, hasDownloadId: Boolean, ): Int? { val total = if (hasDownloadId && downloadId != null) { progress.totalSizeBytes[downloadId] ?: 0L } else { 0L } val result = if (total > 0 && downloadId != null) { val done = progress.bytesDownloadedSoFar[downloadId] ?: 0L ((done / total.toDouble()) * PERCENTAGE_MAX) .toInt() .coerceIn(0, PERCENTAGE_MAX) } else { null } return result } Loading Loading
app/src/main/java/foundation/e/apps/ui/compose/state/InstallStatusReconciler.kt +33 −13 Original line number Diff line number Diff line Loading @@ -78,21 +78,41 @@ class InstallStatusReconciler @Inject constructor( if (progress == null) { return null } val percent = appManagerWrapper.calculateProgress(activeDownload, progress) var result: Int? = percent.takeIf { it in 0..PERCENTAGE_MAX } if (result == null) { val id = progress.downloadId.takeIf { it != INVALID_DOWNLOAD_ID } val hasDownloadId = id != null && activeDownload.downloadIdMap.containsKey(id) if (hasDownloadId) { val total = progress.totalSizeBytes[id] ?: 0L if (total > 0) { val done = progress.bytesDownloadedSoFar[id] ?: 0L result = ((done / total.toDouble()) * PERCENTAGE_MAX) .toInt() .coerceIn(0, PERCENTAGE_MAX) val downloadId = progress.downloadId.takeIf { it != INVALID_DOWNLOAD_ID } val hasDownloadId = downloadId != null && activeDownload.downloadIdMap.containsKey(downloadId) val result = if (percent in 0..PERCENTAGE_MAX) { percent } else { calculatePercent(progress, downloadId, hasDownloadId) } return result } private fun calculatePercent( progress: DownloadProgress, downloadId: Long?, hasDownloadId: Boolean, ): Int? { val total = if (hasDownloadId && downloadId != null) { progress.totalSizeBytes[downloadId] ?: 0L } else { 0L } val result = if (total > 0 && downloadId != null) { val done = progress.bytesDownloadedSoFar[downloadId] ?: 0L ((done / total.toDouble()) * PERCENTAGE_MAX) .toInt() .coerceIn(0, PERCENTAGE_MAX) } else { null } return result } Loading