@@ -184,7 +184,12 @@ extension ChatMediaContainerView {
184
184
185
185
reactionsStack. insertSubview ( progressRingHostingView, aboveSubview: statusButton)
186
186
progressRingHostingView. snp. makeConstraints { make in
187
- make. center. equalTo ( statusButton)
187
+ if isMacOS {
188
+ make. centerX. equalTo ( statusButton) . offset ( - 1 )
189
+ } else {
190
+ make. centerX. equalTo ( statusButton)
191
+ }
192
+ make. centerY. equalTo ( statusButton)
188
193
make. size. equalTo ( 29 )
189
194
}
190
195
}
@@ -206,29 +211,33 @@ extension ChatMediaContainerView {
206
211
statusButton. isHidden = status == . success
207
212
}
208
213
209
- func averageUploadProgress ( ) -> Double {
214
+ func totalUploadProgress ( ) -> Double {
210
215
let files = model. content. fileModel. files
211
-
212
- let progresses = files
213
- . compactMap { $0. progress }
214
-
215
- guard !progresses. isEmpty else {
216
+
217
+ let totalBytes = files. map { $0. file. size } . reduce ( 0 , + )
218
+
219
+ let uploadedBytes : Int64 = files. reduce ( 0 ) { result, file in
220
+ let progress = Double ( file. progress ?? 0 ) / 100.0
221
+ return result + Int64( Double ( file. file. size) * progress)
222
+ }
223
+
224
+ guard totalBytes > 0 else {
216
225
return 0.0
217
226
}
218
-
219
- let totalProgress = progresses. reduce ( 0 , + )
220
- return Double ( totalProgress) / Double( progresses. count)
227
+
228
+ return Double ( uploadedBytes) / Double( totalBytes) * 100.0
221
229
}
222
230
223
231
func updateProgressRing( ) {
224
- let averageProgress = averageUploadProgress ( )
232
+ let averageProgress = totalUploadProgress ( )
225
233
226
234
if averageProgress == 0 {
227
235
statusProgressState. backgroundGradient = LinearGradient (
228
236
gradient: Gradient ( colors: [ . white, Color ( . adamant. sendingFileAnimationGrayColor) ] ) ,
229
237
startPoint: . topLeading,
230
238
endPoint: . bottomTrailing
231
- ) } else {
239
+ )
240
+ } else {
232
241
statusProgressState. backgroundGradient = nil
233
242
}
234
243
statusProgressState. progress = averageProgress / 100
0 commit comments