@@ -211,29 +211,35 @@ extension ChatMediaContainerView {
211
211
statusButton. isHidden = status == . success
212
212
}
213
213
214
- func averageUploadProgress ( ) -> Double {
214
+ func totalUploadProgress ( ) -> Double {
215
215
let files = model. content. fileModel. files
216
-
217
- let progresses = files
218
- . compactMap { $0. progress }
219
-
220
- guard !progresses. isEmpty else {
216
+
217
+ let totalBytes : Int64 = files. reduce ( 0 ) { result, file in
218
+ result + file. file. size
219
+ }
220
+
221
+ let uploadedBytes : Int64 = files. reduce ( 0 ) { result, file in
222
+ let progress = Double ( file. progress ?? 0 ) / 100.0
223
+ return result + Int64( Double ( file. file. size) * progress)
224
+ }
225
+
226
+ guard totalBytes > 0 else {
221
227
return 0.0
222
228
}
223
-
224
- let totalProgress = progresses. reduce ( 0 , + )
225
- return Double ( totalProgress) / Double( progresses. count)
229
+
230
+ return Double ( uploadedBytes) / Double( totalBytes) * 100.0
226
231
}
227
232
228
233
func updateProgressRing( ) {
229
- let averageProgress = averageUploadProgress ( )
234
+ let averageProgress = totalUploadProgress ( )
230
235
231
236
if averageProgress == 0 {
232
237
statusProgressState. backgroundGradient = LinearGradient (
233
238
gradient: Gradient ( colors: [ . white, Color ( . adamant. sendingFileAnimationGrayColor) ] ) ,
234
239
startPoint: . topLeading,
235
240
endPoint: . bottomTrailing
236
- ) } else {
241
+ )
242
+ } else {
237
243
statusProgressState. backgroundGradient = nil
238
244
}
239
245
statusProgressState. progress = averageProgress / 100
0 commit comments