mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +00:00
pr suggestions
This commit is contained in:
@@ -199,6 +199,14 @@ struct HomeScreenRoom: Identifiable, Equatable {
|
||||
|
||||
let isTombstoned: Bool
|
||||
|
||||
var displayedLastMessage: AttributedString? {
|
||||
// If the room is tombstoned, show a specific message, regardless of any last message.
|
||||
guard !isTombstoned else {
|
||||
return AttributedString(L10n.screenRoomlistTombstonedRoomDescription)
|
||||
}
|
||||
return lastMessage
|
||||
}
|
||||
|
||||
static func placeholder() -> HomeScreenRoom {
|
||||
HomeScreenRoom(id: UUID().uuidString,
|
||||
roomID: nil,
|
||||
|
||||
@@ -135,12 +135,8 @@ struct HomeScreenRoomCell: View {
|
||||
|
||||
@ViewBuilder
|
||||
private var lastMessage: some View {
|
||||
// If the room is tombstoned, show a specific message, regardless of any last message.
|
||||
if room.isTombstoned {
|
||||
Text(L10n.screenRoomlistTombstonedRoomDescription)
|
||||
.lastMessageFormatting()
|
||||
} else if let lastMessage = room.lastMessage {
|
||||
Text(lastMessage)
|
||||
if let displayedLastMessage = room.displayedLastMessage {
|
||||
Text(displayedLastMessage)
|
||||
.lastMessageFormatting()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -331,6 +331,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
|
||||
private func handleRoomInfoUpdate(_ roomInfo: RoomInfoProxy) async {
|
||||
state.hasSuccessor = roomInfo.successor != nil
|
||||
|
||||
let pinnedEventIDs = roomInfo.pinnedEventIDs
|
||||
// Only update the loading state of the banner
|
||||
if state.pinnedEventsBannerState.isLoading {
|
||||
|
||||
@@ -79,7 +79,7 @@ enum TimelineViewAction {
|
||||
case hasScrolled(direction: ScrollDirection)
|
||||
case setOpenURLAction(OpenURLAction)
|
||||
|
||||
case seePredecessorTapped
|
||||
case displayPredecessorRoom
|
||||
}
|
||||
|
||||
enum TimelineComposerAction {
|
||||
|
||||
@@ -212,8 +212,10 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
||||
actionsSubject.send(.hasScrolled(direction: direction))
|
||||
case .setOpenURLAction(let action):
|
||||
state.openURL = action
|
||||
case .seePredecessorTapped:
|
||||
guard let predecessorID = roomProxy.predecessorRoom?.roomId else { return }
|
||||
case .displayPredecessorRoom:
|
||||
guard let predecessorID = roomProxy.predecessorRoom?.roomId else {
|
||||
fatalError("Predecessor room should exist if this action is triggered.")
|
||||
}
|
||||
actionsSubject.send(.displayRoom(roomID: predecessorID))
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -15,8 +15,9 @@ struct TimelineStartRoomTimelineView: View {
|
||||
var body: some View {
|
||||
VStack(spacing: 14) {
|
||||
if context?.viewState.hasPredecessor == true {
|
||||
upgrade
|
||||
upgradeDialogue
|
||||
}
|
||||
// We don't display the title for tombstoned DMs
|
||||
if context?.viewState.isDirectOneToOneRoom != true {
|
||||
Text(title)
|
||||
.font(.compound.bodySM)
|
||||
@@ -28,13 +29,13 @@ struct TimelineStartRoomTimelineView: View {
|
||||
}
|
||||
}
|
||||
|
||||
private var upgrade: some View {
|
||||
private var upgradeDialogue: some View {
|
||||
VStack(spacing: 16) {
|
||||
Text(L10n.screenRoomTimelineUpgradedRoomMessage)
|
||||
.font(.compound.bodyMD)
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
Button {
|
||||
context?.send(viewAction: .seePredecessorTapped)
|
||||
context?.send(viewAction: .displayPredecessorRoom)
|
||||
} label: {
|
||||
Text(L10n.screenRoomTimelineUpgradedRoomAction)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
||||
Reference in New Issue
Block a user