Pinned events banner goes backwards (#3128)

This commit is contained in:
Mauro
2024-08-07 16:01:01 +02:00
committed by GitHub
parent 3d112a5683
commit 91a42538ac
6 changed files with 25 additions and 21 deletions
@@ -329,20 +329,24 @@ struct PinnedEventsState: Equatable {
var selectedPinContent: AttributedString {
var content = AttributedString(" ")
if let selectedPinEventID,
var pinnedEventContent = pinnedEventContents[selectedPinEventID] {
let pinnedEventContent = pinnedEventContents[selectedPinEventID] {
content = pinnedEventContent
}
content.font = .compound.bodyMD
return content
}
mutating func nextPin() {
mutating func previousPin() {
guard !pinnedEventContents.isEmpty else {
return
}
let currentIndex = selectedPinIndex
let nextIndex = (currentIndex + 1) % pinnedEventContents.count
selectedPinEventID = pinnedEventContents.keys[nextIndex]
let nextIndex = currentIndex - 1
if nextIndex == -1 {
selectedPinEventID = pinnedEventContents.keys.last
} else {
selectedPinEventID = pinnedEventContents.keys[nextIndex % pinnedEventContents.count]
}
}
}
@@ -415,10 +419,10 @@ enum PinnedEventsBannerState: Equatable {
return finalString
}
mutating func nextPin() {
mutating func previousPin() {
switch self {
case .loaded(var state):
state.nextPin()
state.previousPin()
self = .loaded(state: state)
default:
break
@@ -228,7 +228,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
if let eventID = state.pinnedEventsBannerState.selectedPinEventID {
Task { await focusOnEvent(eventID: eventID) }
}
state.pinnedEventsBannerState.nextPin()
state.pinnedEventsBannerState.previousPin()
case .viewAllPins:
// TODO: Implement
break
@@ -723,7 +723,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
private func buildPinnedEventContent(timelineItems: [TimelineItemProxy]) {
var pinnedEventContents = OrderedDictionary<String, AttributedString>()
for item in timelineItems.reversed() {
for item in timelineItems {
// Only remote events are pinned
if case let .event(event) = item,
let eventID = event.id.eventID {