fix: channel message retry not updating ack state

This commit is contained in:
Austin Payne 2024-02-21 00:28:55 -07:00
parent e9c8de9837
commit a16c6be659
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))
}
}