ios: update messages in share extension alert when message sending is slow (#4578)

This commit is contained in:
Evgeny
2024-08-04 20:48:54 +01:00
committed by GitHub
parent f30dfa0be7
commit bf697c722a
5 changed files with 17 additions and 17 deletions

View File

@@ -376,7 +376,7 @@ struct ChatView: View {
reversedChatItems
.enumerated()
.filter { (index, chatItem) in
if let mergeCategory = chatItem.mergeCategory, index > .zero {
if let mergeCategory = chatItem.mergeCategory, index > 0 {
mergeCategory != reversedChatItems[index - 1].mergeCategory
} else {
true
@@ -456,7 +456,7 @@ struct ChatView: View {
init() {
unreadChatItemCounts = UnreadChatItemCounts(
isNearBottom: true,
unreadBelow: .zero
unreadBelow: 0
)
events
.receive(on: DispatchQueue.global(qos: .background))
@@ -1098,7 +1098,7 @@ struct ChatView: View {
}
func reactions(from: Int? = nil, till: Int? = nil) -> some View {
ForEach(availableReactions[(from ?? .zero)..<(till ?? availableReactions.count)]) { reaction in
ForEach(availableReactions[(from ?? 0)..<(till ?? availableReactions.count)]) { reaction in
Button(reaction.text) {
setReaction(chatItem, add: true, reaction: reaction)
}

View File

@@ -33,7 +33,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
case let .item(id):
controller.scroll(to: items.firstIndex(where: { $0.id == id }), position: .bottom)
case .bottom:
controller.scroll(to: .zero, position: .top)
controller.scroll(to: 0, position: .top)
}
} else {
controller.update(items: items)
@@ -45,7 +45,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
private enum Section { case main }
private let representer: ReverseList
private var dataSource: UITableViewDiffableDataSource<Section, Item>!
private var itemCount: Int = .zero
private var itemCount: Int = 0
private var bag = Set<AnyCancellable>()
init(representer: ReverseList) {
@@ -80,7 +80,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseId, for: indexPath)
if #available(iOS 16.0, *) {
cell.contentConfiguration = UIHostingConfiguration { self.representer.content(item) }
.margins(.all, .zero)
.margins(.all, 0)
.minSize(height: 1) // Passing zero will result in system default of 44 points being used
} else {
if let cell = cell as? HostingCell<Content> {
@@ -153,7 +153,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
animated = true
}
tableView.scrollToRow(
at: IndexPath(row: index, section: .zero),
at: IndexPath(row: index, section: 0),
at: position,
animated: animated
)
@@ -168,7 +168,7 @@ struct ReverseList<Item: Identifiable & Hashable & Sendable, Content: View>: UIV
dataSource.defaultRowAnimation = .none
dataSource.apply(
snapshot,
animatingDifferences: itemCount != .zero && abs(items.count - itemCount) == 1
animatingDifferences: itemCount != 0 && abs(items.count - itemCount) == 1
)
itemCount = items.count
}

View File

@@ -29,6 +29,7 @@ class ShareModel: ObservableObject {
@Published var errorAlert: ErrorAlert?
@Published var hasSimplexLink = false
@Published var alertRequiresPassword = false
var networkTimeout = CFAbsoluteTimeGetCurrent()
enum BottomBar {
case sendButton
@@ -148,7 +149,7 @@ class ShareModel: ObservableObject {
if selected.chatInfo.chatType == .local {
completion()
} else {
await MainActor.run { self.bottomBar = .loadingBar(progress: .zero) }
await MainActor.run { self.bottomBar = .loadingBar(progress: 0) }
if let e = await handleEvents(
isGroupChat: ci.chatInfo.chatType == .group,
isWithoutFile: sharedContent.cryptoFile == nil,
@@ -290,14 +291,13 @@ class ShareModel: ObservableObject {
CompletionHandler.isEventLoopEnabled = true
let ch = CompletionHandler()
if isWithoutFile { await ch.completeFile() }
var networkTimeout = CFAbsoluteTimeGetCurrent()
networkTimeout = CFAbsoluteTimeGetCurrent()
while await ch.isRunning {
if CFAbsoluteTimeGetCurrent() - networkTimeout > 30 {
networkTimeout = CFAbsoluteTimeGetCurrent()
await MainActor.run {
self.errorAlert = ErrorAlert(title: "No network connection") {
Button("Keep Trying", role: .cancel) { }
Button("Dismiss Sheet", role: .destructive) { self.completion() }
self.errorAlert = ErrorAlert(title: "Slow network?", message: "Sending a message takes longer than expected.") {
Button("Wait", role: .cancel) { self.networkTimeout = CFAbsoluteTimeGetCurrent() }
Button("Cancel", role: .destructive) { self.completion() }
}
}
}

View File

@@ -85,7 +85,7 @@ struct ShareView: View {
}
private func compose(isLoading: Bool) -> some View {
VStack(spacing: .zero) {
VStack(spacing: 0) {
Divider()
if let content = model.sharedContent {
itemPreview(content)
@@ -179,7 +179,7 @@ struct ShareView: View {
private func loadingBar(progress: Double) -> some View {
VStack {
Text("Sending File")
Text("Sending message…")
ProgressView(value: progress)
}
.padding()

View File

@@ -174,7 +174,7 @@ public func downsampleImage(at url: URL, to size: Int64) -> UIImage? {
if let source = CGImageSourceCreateWithURL(url as CFURL, nil) {
CGImageSourceCreateThumbnailAtIndex(
source,
Int.zero,
0,
[
kCGImageSourceCreateThumbnailFromImageAlways: true,
kCGImageSourceShouldCacheImmediately: true,