Bring back failed message state rendering and a redaction option. Bump the RustSDK to 1.0.15

This commit is contained in:
Stefan Ceriu 2024-06-18 12:34:27 +03:00 committed by Stefan Ceriu
parent 1ce8a743a1
commit 63524bff62
8 changed files with 40 additions and 14 deletions

View File

@ -7324,7 +7324,7 @@
repositoryURL = "https://github.com/BarredEwe/Prefire";
requirement = {
kind = upToNextMinorVersion;
minimumVersion = 2.0.4;
minimumVersion = 2.8.0;
};
};
395DE6AE429B7ACC7C7FE31D /* XCRemoteSwiftPackageReference "KZFileWatchers" */ = {
@ -7380,7 +7380,7 @@
repositoryURL = "https://github.com/element-hq/matrix-rust-components-swift";
requirement = {
kind = exactVersion;
version = 1.0.14;
version = 1.0.15;
};
};
701C7BEF8F70F7A83E852DCC /* XCRemoteSwiftPackageReference "GZIP" */ = {
@ -7484,7 +7484,7 @@
repositoryURL = "https://github.com/pointfreeco/swift-snapshot-testing";
requirement = {
kind = upToNextMinorVersion;
minimumVersion = 1.16.0;
minimumVersion = 1.16.1;
};
};
EC6D0C817B1C21D9D096505A /* XCRemoteSwiftPackageReference "Version" */ = {

View File

@ -148,8 +148,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/element-hq/matrix-rust-components-swift",
"state" : {
"revision" : "76ccbfd106eb4d967c79eccaf339ddfc45e6f7fb",
"version" : "1.0.14"
"revision" : "279994ebdb1aef807946b79306bbdd892cecd873",
"version" : "1.0.15"
}
},
{
@ -184,8 +184,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/BarredEwe/Prefire",
"state" : {
"revision" : "608e7992dedc5ee409e59b3580010371ff0cef57",
"version" : "2.0.4"
"revision" : "237f4005c81f74d5359eddb534d2d10925ef2787",
"version" : "2.8.0"
}
},
{
@ -247,8 +247,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-snapshot-testing",
"state" : {
"revision" : "625ccca8570773dd84a34ee51a81aa2bc5a4f97a",
"version" : "1.16.0"
"revision" : "8ddd519780452729c6634ad6bd0d2595938e9ea3",
"version" : "1.16.1"
}
},
{

View File

@ -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))

View File

@ -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 {

View File

@ -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)
}
})
}
}

View File

@ -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 {

View File

@ -78,7 +78,9 @@ class EventTimelineItemProxy {
}
switch localSendState {
case .notSentYet, .sendingFailed:
case .sendingFailed:
return .sendingFailed
case .notSentYet:
return .sending
case .sent:
return .sent

View File

@ -49,7 +49,7 @@ packages:
# Element/Matrix dependencies
MatrixRustSDK:
url: https://github.com/element-hq/matrix-rust-components-swift
exactVersion: 1.0.14
exactVersion: 1.0.15
# path: ../matrix-rust-sdk
Compound:
url: https://github.com/element-hq/compound-ios