mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +00:00
Bring back failed message state rendering and a redaction option. Bump the RustSDK to 1.0.15
This commit is contained in:
committed by
Stefan Ceriu
parent
1ce8a743a1
commit
63524bff62
@@ -237,7 +237,7 @@ final class AppSettings {
|
||||
|
||||
// MARK: - Room Screen
|
||||
|
||||
@UserPreference(key: UserDefaultsKeys.timelineStyle, defaultValue: TimelineStyle.bubbles, storageType: .userDefaults(store))
|
||||
@UserPreference(key: UserDefaultsKeys.timelineStyle, defaultValue: TimelineStyle.bubbles, storageType: .volatile)
|
||||
var timelineStyle
|
||||
|
||||
@UserPreference(key: UserDefaultsKeys.viewSourceEnabled, defaultValue: isDevelopmentBuild, storageType: .userDefaults(store))
|
||||
|
||||
@@ -114,6 +114,7 @@ enum RoomScreenViewAction {
|
||||
case displayRoomMemberDetails(userID: String)
|
||||
case displayReactionSummary(itemID: TimelineItemIdentifier, key: String)
|
||||
case displayEmojiPicker(itemID: TimelineItemIdentifier)
|
||||
case displayMessageSendingFailureAlert(itemID: TimelineItemIdentifier)
|
||||
case displayReadReceipts(itemID: TimelineItemIdentifier)
|
||||
case displayCall
|
||||
|
||||
@@ -216,6 +217,7 @@ struct ReadReceiptSummaryInfo: Identifiable {
|
||||
enum RoomScreenAlertInfoType: Hashable {
|
||||
case audioRecodingPermissionError
|
||||
case pollEndConfirmation(String)
|
||||
case messageSendingFailure(TimelineItemIdentifier)
|
||||
}
|
||||
|
||||
struct RoomMemberState {
|
||||
|
||||
@@ -182,6 +182,8 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
roomScreenInteractionHandler.displayEmojiPicker(for: itemID)
|
||||
case .displayReactionSummary(let itemID, let key):
|
||||
displayReactionSummary(for: itemID, selectedKey: key)
|
||||
case .displayMessageSendingFailureAlert(let itemID):
|
||||
displayAlert(.messageSendingFailure(itemID))
|
||||
case .displayReadReceipts(itemID: let itemID):
|
||||
displayReadReceipts(for: itemID)
|
||||
case .displayCall:
|
||||
@@ -770,6 +772,12 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
message: L10n.commonPollEndConfirmation,
|
||||
primaryButton: .init(title: L10n.actionCancel, role: .cancel, action: nil),
|
||||
secondaryButton: .init(title: L10n.actionOk, action: { self.roomScreenInteractionHandler.endPoll(pollStartID: pollStartID) }))
|
||||
case .messageSendingFailure(let itemID):
|
||||
state.bindings.alertInfo = .init(id: type, title: L10n.screenRoomRetrySendMenuTitle, primaryButton: .init(title: L10n.actionRemove, role: .destructive) {
|
||||
Task {
|
||||
await self.timelineController.redact(itemID)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,9 @@ struct TimelineItemBubbledStylerView<Content: View>: View {
|
||||
VStack(alignment: alignment, spacing: -3) {
|
||||
messageBubble
|
||||
.timelineItemAccessibility(timelineItem) {
|
||||
if adjustedDeliveryStatus != .sendingFailed {
|
||||
if adjustedDeliveryStatus == .sendingFailed {
|
||||
context.send(viewAction: .displayMessageSendingFailureAlert(itemID: timelineItem.id))
|
||||
} else {
|
||||
context.send(viewAction: .displayTimelineItemMenu(itemID: timelineItem.id))
|
||||
}
|
||||
}
|
||||
@@ -166,10 +168,22 @@ struct TimelineItemBubbledStylerView<Content: View>: View {
|
||||
timelineItem.bubbleSendInfoLayoutType
|
||||
.layout {
|
||||
contentWithReply
|
||||
layoutedLocalizedSendInfo
|
||||
interactiveLocalizedSendInfo
|
||||
}
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
var interactiveLocalizedSendInfo: some View {
|
||||
if adjustedDeliveryStatus == .sendingFailed {
|
||||
layoutedLocalizedSendInfo
|
||||
.onTapGesture {
|
||||
context.send(viewAction: .displayMessageSendingFailureAlert(itemID: timelineItem.id))
|
||||
}
|
||||
} else {
|
||||
layoutedLocalizedSendInfo
|
||||
}
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
var layoutedLocalizedSendInfo: some View {
|
||||
switch timelineItem.bubbleSendInfoLayoutType {
|
||||
|
||||
@@ -78,7 +78,9 @@ class EventTimelineItemProxy {
|
||||
}
|
||||
|
||||
switch localSendState {
|
||||
case .notSentYet, .sendingFailed:
|
||||
case .sendingFailed:
|
||||
return .sendingFailed
|
||||
case .notSentYet:
|
||||
return .sending
|
||||
case .sent:
|
||||
return .sent
|
||||
|
||||
Reference in New Issue
Block a user