Skip to content

Commit 77164d9

Browse files
authored
Merge pull request #863 from Adamant-im/trello.com/c/7YVA2NTe
[trello.com/c/7YVA2NTe] cancel uploading update
2 parents 643f811 + 68ba923 commit 77164d9

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

Adamant/Modules/Chat/View/Subviews/ChatMedia/Container/ChatMediaContainerView.swift

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,12 @@ extension ChatMediaContainerView {
184184

185185
reactionsStack.insertSubview(progressRingHostingView, aboveSubview: statusButton)
186186
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)
188193
make.size.equalTo(29)
189194
}
190195
}
@@ -206,29 +211,33 @@ extension ChatMediaContainerView {
206211
statusButton.isHidden = status == .success
207212
}
208213

209-
func averageUploadProgress() -> Double {
214+
func totalUploadProgress() -> Double {
210215
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 {
216225
return 0.0
217226
}
218-
219-
let totalProgress = progresses.reduce(0, +)
220-
return Double(totalProgress) / Double(progresses.count)
227+
228+
return Double(uploadedBytes) / Double(totalBytes) * 100.0
221229
}
222230

223231
func updateProgressRing() {
224-
let averageProgress = averageUploadProgress()
232+
let averageProgress = totalUploadProgress()
225233

226234
if averageProgress == 0 {
227235
statusProgressState.backgroundGradient = LinearGradient(
228236
gradient: Gradient(colors: [.white, Color(.adamant.sendingFileAnimationGrayColor)]),
229237
startPoint: .topLeading,
230238
endPoint: .bottomTrailing
231-
)} else {
239+
)
240+
} else {
232241
statusProgressState.backgroundGradient = nil
233242
}
234243
statusProgressState.progress = averageProgress / 100

0 commit comments

Comments
 (0)