Merge pull request #512 from Austinpayne/fix/message-retry

fix: channel message retry not updating ack state
This commit is contained in:
Garth Vander Houwen 2024-02-21 20:43:01 -08:00 committed by GitHub
commit c65b83b3d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 13 additions and 2 deletions

View file

@ -64,7 +64,7 @@ struct ChannelMessageList: View {
}
if currentUser && message.canRetry {
RetryButton(message: message)
RetryButton(message: message, destination: .channel(channel))
}
}

View file

@ -5,6 +5,7 @@ struct RetryButton: View {
@EnvironmentObject var bleManager: BLEManager
let message: MessageEntity
let destination: MessageDestination
@State var isShowingConfirmation = false
var body: some View {
@ -46,6 +47,16 @@ struct RetryButton: View {
) {
// Best effort, unlikely since we already checked BLE state
print("Failed to resend message \(messageID)")
} else {
switch destination {
case .user:
break
case let .channel(channel):
// We must refresh the channel to trigger a view update since its relationship
// to messages is via a weak fetched property which is not updated by
// `bleManager.sendMessage` unlike the user entity.
context.refresh(channel, mergeChanges: true)
}
}
}
Button("Cancel", role: .cancel) {}

View file

@ -57,7 +57,7 @@ struct UserMessageList: View {
}
if currentUser && message.canRetry || (message.receivedACK && !message.realACK) {
RetryButton(message: message)
RetryButton(message: message, destination: .user(user))
}
}