mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Use the new strings for send failures when the unsigned devices are your own. (#3299)
This commit is contained in:
+9
-4
@@ -23,18 +23,23 @@ enum ResolveVerifiedUserSendFailureScreenViewModelAction {
|
|||||||
struct ResolveVerifiedUserSendFailureScreenViewState: BindableState {
|
struct ResolveVerifiedUserSendFailureScreenViewState: BindableState {
|
||||||
var currentFailure: TimelineItemSendFailure.VerifiedUser
|
var currentFailure: TimelineItemSendFailure.VerifiedUser
|
||||||
var currentMemberDisplayName: String
|
var currentMemberDisplayName: String
|
||||||
|
var isYou: Bool
|
||||||
|
|
||||||
var title: String {
|
var title: String {
|
||||||
switch currentFailure {
|
switch currentFailure {
|
||||||
case .hasUnsignedDevice: L10n.screenResolveSendFailureUnsignedDeviceTitle(currentMemberDisplayName)
|
case .hasUnsignedDevice:
|
||||||
case .changedIdentity: L10n.screenResolveSendFailureChangedIdentityTitle(currentMemberDisplayName)
|
isYou ? L10n.screenResolveSendFailureYouUnsignedDeviceTitle : L10n.screenResolveSendFailureUnsignedDeviceTitle(currentMemberDisplayName)
|
||||||
|
case .changedIdentity:
|
||||||
|
L10n.screenResolveSendFailureChangedIdentityTitle(currentMemberDisplayName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var subtitle: String {
|
var subtitle: String {
|
||||||
switch currentFailure {
|
switch currentFailure {
|
||||||
case .hasUnsignedDevice: L10n.screenResolveSendFailureUnsignedDeviceSubtitle(currentMemberDisplayName, currentMemberDisplayName)
|
case .hasUnsignedDevice:
|
||||||
case .changedIdentity: L10n.screenResolveSendFailureChangedIdentitySubtitle(currentMemberDisplayName)
|
isYou ? L10n.screenResolveSendFailureYouUnsignedDeviceSubtitle : L10n.screenResolveSendFailureUnsignedDeviceSubtitle(currentMemberDisplayName, currentMemberDisplayName)
|
||||||
|
case .changedIdentity:
|
||||||
|
L10n.screenResolveSendFailureChangedIdentitySubtitle(currentMemberDisplayName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -49,7 +49,8 @@ class ResolveVerifiedUserSendFailureScreenViewModel: ResolveVerifiedUserSendFail
|
|||||||
}
|
}
|
||||||
|
|
||||||
super.init(initialViewState: ResolveVerifiedUserSendFailureScreenViewState(currentFailure: failure,
|
super.init(initialViewState: ResolveVerifiedUserSendFailureScreenViewState(currentFailure: failure,
|
||||||
currentMemberDisplayName: members[userID]?.displayName ?? userID))
|
currentMemberDisplayName: members[userID]?.displayName ?? userID,
|
||||||
|
isYou: userID == roomProxy.ownUserID))
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Public
|
// MARK: Public
|
||||||
@@ -83,6 +84,7 @@ class ResolveVerifiedUserSendFailureScreenViewModel: ResolveVerifiedUserSendFail
|
|||||||
if let (userID, failure) = iterator.next() {
|
if let (userID, failure) = iterator.next() {
|
||||||
state.currentMemberDisplayName = members[userID]?.displayName ?? userID
|
state.currentMemberDisplayName = members[userID]?.displayName ?? userID
|
||||||
state.currentFailure = failure
|
state.currentFailure = failure
|
||||||
|
state.isYou = userID == roomProxy.ownUserID
|
||||||
} else {
|
} else {
|
||||||
actionsSubject.send(.dismiss)
|
actionsSubject.send(.dismiss)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -78,12 +78,16 @@ struct ResolveVerifiedUserSendFailureScreen: View {
|
|||||||
|
|
||||||
struct ResolveVerifiedUserSendFailureScreen_Previews: PreviewProvider, TestablePreview {
|
struct ResolveVerifiedUserSendFailureScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let unsignedDeviceViewModel = makeViewModel(failure: .hasUnsignedDevice(devices: ["@alice:matrix.org": []]))
|
static let unsignedDeviceViewModel = makeViewModel(failure: .hasUnsignedDevice(devices: ["@alice:matrix.org": []]))
|
||||||
|
static let ownUnsignedDeviceViewModel = makeViewModel(failure: .hasUnsignedDevice(devices: [RoomMemberProxyMock.mockMe.userID: []]))
|
||||||
static let changedIdentityViewModel = makeViewModel(failure: .changedIdentity(users: ["@alice:matrix.org"]))
|
static let changedIdentityViewModel = makeViewModel(failure: .changedIdentity(users: ["@alice:matrix.org"]))
|
||||||
|
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
ResolveVerifiedUserSendFailureScreen(context: unsignedDeviceViewModel.context)
|
ResolveVerifiedUserSendFailureScreen(context: unsignedDeviceViewModel.context)
|
||||||
.previewDisplayName("Unsigned Device")
|
.previewDisplayName("Unsigned Device")
|
||||||
|
|
||||||
|
ResolveVerifiedUserSendFailureScreen(context: ownUnsignedDeviceViewModel.context)
|
||||||
|
.previewDisplayName("Own Unsigned Device")
|
||||||
|
|
||||||
ResolveVerifiedUserSendFailureScreen(context: changedIdentityViewModel.context)
|
ResolveVerifiedUserSendFailureScreen(context: changedIdentityViewModel.context)
|
||||||
.previewDisplayName("Identity Changed")
|
.previewDisplayName("Identity Changed")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,7 +93,9 @@ struct TimelineItemMenu: View {
|
|||||||
Divider()
|
Divider()
|
||||||
.padding(.horizontal, -16)
|
.padding(.horizontal, -16)
|
||||||
|
|
||||||
VerifiedUserSendFailureView(failure: failure, members: context.viewState.members) {
|
VerifiedUserSendFailureView(failure: failure,
|
||||||
|
members: context.viewState.members,
|
||||||
|
ownUserID: context.viewState.ownUserID) {
|
||||||
send(.itemSendInfoTapped(itemID: item.id))
|
send(.itemSendInfoTapped(itemID: item.id))
|
||||||
}
|
}
|
||||||
.padding(.bottom, 8)
|
.padding(.bottom, 8)
|
||||||
@@ -186,21 +188,26 @@ private struct VerifiedUserSendFailureView: View {
|
|||||||
let action: () -> Void
|
let action: () -> Void
|
||||||
|
|
||||||
private let memberDisplayName: String
|
private let memberDisplayName: String
|
||||||
|
private let isYou: Bool
|
||||||
|
|
||||||
init(failure: TimelineItemSendFailure.VerifiedUser,
|
init(failure: TimelineItemSendFailure.VerifiedUser,
|
||||||
members: [String: RoomMemberState],
|
members: [String: RoomMemberState],
|
||||||
|
ownUserID: String,
|
||||||
action: @escaping () -> Void) {
|
action: @escaping () -> Void) {
|
||||||
self.failure = failure
|
self.failure = failure
|
||||||
self.action = action
|
self.action = action
|
||||||
|
|
||||||
let userIDs = failure.affectedUserIDs
|
let userIDs = failure.affectedUserIDs
|
||||||
memberDisplayName = userIDs.first.map { members[$0]?.displayName ?? $0 } ?? ""
|
memberDisplayName = userIDs.first.map { members[$0]?.displayName ?? $0 } ?? ""
|
||||||
|
isYou = ownUserID == userIDs.first
|
||||||
}
|
}
|
||||||
|
|
||||||
var title: String {
|
var title: String {
|
||||||
switch failure {
|
switch failure {
|
||||||
case .hasUnsignedDevice: L10n.screenTimelineItemMenuSendFailureUnsignedDevice(memberDisplayName)
|
case .hasUnsignedDevice:
|
||||||
case .changedIdentity: L10n.screenTimelineItemMenuSendFailureChangedIdentity(memberDisplayName)
|
isYou ? L10n.screenTimelineItemMenuSendFailureYouUnsignedDevice : L10n.screenTimelineItemMenuSendFailureUnsignedDevice(memberDisplayName)
|
||||||
|
case .changedIdentity:
|
||||||
|
L10n.screenTimelineItemMenuSendFailureChangedIdentity(memberDisplayName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,6 +248,9 @@ struct TimelineItemMenu_Previews: PreviewProvider, TestablePreview {
|
|||||||
static let (unsignedDevicesItem, _) = makeItem(deliveryStatus: .sendingFailed(.verifiedUser(.hasUnsignedDevice(devices: [
|
static let (unsignedDevicesItem, _) = makeItem(deliveryStatus: .sendingFailed(.verifiedUser(.hasUnsignedDevice(devices: [
|
||||||
"@alice:matrix.org": ["DEVICE1", "DEVICE2"]
|
"@alice:matrix.org": ["DEVICE1", "DEVICE2"]
|
||||||
]))))
|
]))))
|
||||||
|
static let (ownUnsignedDevicesItem, _) = makeItem(deliveryStatus: .sendingFailed(.verifiedUser(.hasUnsignedDevice(devices: [
|
||||||
|
RoomMemberProxyMock.mockMe.userID: ["DEVICE1"]
|
||||||
|
]))))
|
||||||
|
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
TimelineItemMenu(item: item, actions: actions)
|
TimelineItemMenu(item: item, actions: actions)
|
||||||
@@ -272,6 +282,10 @@ struct TimelineItemMenu_Previews: PreviewProvider, TestablePreview {
|
|||||||
.environmentObject(viewModel.context)
|
.environmentObject(viewModel.context)
|
||||||
.previewDisplayName("Unsigned Devices")
|
.previewDisplayName("Unsigned Devices")
|
||||||
|
|
||||||
|
TimelineItemMenu(item: ownUnsignedDevicesItem, actions: actions)
|
||||||
|
.environmentObject(viewModel.context)
|
||||||
|
.previewDisplayName("Own Unsigned Devices")
|
||||||
|
|
||||||
TimelineItemMenu(item: identityChangedItem, actions: actions)
|
TimelineItemMenu(item: identityChangedItem, actions: actions)
|
||||||
.environmentObject(viewModel.context)
|
.environmentObject(viewModel.context)
|
||||||
.previewDisplayName("Identity Changed")
|
.previewDisplayName("Identity Changed")
|
||||||
|
|||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:4753c2858ee5ecec25a29b399e7ea80182f687c6a2f841a92a414e8e920b5924
|
||||||
|
size 125882
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:a2d8fb744f1ae503247c5da24b629808edef82b99478834a31f4116d7d5db992
|
||||||
|
size 160093
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:5145981b3a4ec6e66341f81fd7dac4c6229f361c22f2ceb9a2f3b442cecaec76
|
||||||
|
size 90320
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:88602e805a91c4857f0f8101d1dd0856d92b8d3ba1335d2057e1e3cec727ec6b
|
||||||
|
size 137841
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ddc2888bc4e11319006b54091b3a1b48fb2da6973ffb350210a2b17e5aa86b9e
|
||||||
|
size 138532
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:d3160ad5abc34d80f146b47abb9b6f7e4b194824b0043a0e1c70ee443f41ca1e
|
||||||
|
size 144600
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:172fe16471b58c45a4f34cc2c2064cc6f7d2667447773d760254b49a354f0f48
|
||||||
|
size 91682
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:d8a4f3dbb2a4cd191f31f48a95ecf20a082a7f1e7d28755979ec3ca8ef536972
|
||||||
|
size 108127
|
||||||
Reference in New Issue
Block a user