Skip to content

Commit

Permalink
Update paginate messages
Browse files Browse the repository at this point in the history
Changed the ScrollView to a List view, because .onAppear does not work well on ScrollViews
#16
  • Loading branch information
stefanhofman authored and pixlwave committed Feb 6, 2021
1 parent 6f8afb9 commit 8c6d8b4
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 19 deletions.
5 changes: 2 additions & 3 deletions Nio/Conversations/RoomView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,8 @@ struct RoomView: View {
}))
.padding(.horizontal)
.onAppear(perform: {
if !self.firstMessage {
self.firstMessage = true
self.store.pagenate(room: self.room, event: event)
if self.events.renderableEventsWithoutEdited.first!.eventId == event.eventId! {
self.store.paginate(room: self.room, event: event)
}
})
}
Expand Down
5 changes: 4 additions & 1 deletion Nio/Shared Views/ReverseList.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,19 @@ struct ReverseList<Element, Content>: View where Element: Identifiable, Content:
self.items = items
self.reverseItemOrder = reverseItemOrder
self.viewForItem = viewForItem
UITableView.appearance().separatorStyle = .none
}

var body: some View {
ScrollView {
List {
ForEach(reverseItemOrder ? items.reversed() : items) { item in
self.viewForItem(item)
.scaleEffect(x: -1.0, y: 1.0)
.rotationEffect(.degrees(180))
}
}
.environment(\.defaultMinListRowHeight, 0)
.padding(.horizontal, -15)
.scaleEffect(x: -1.0, y: 1.0)
.rotationEffect(.degrees(180))
}
Expand Down
4 changes: 4 additions & 0 deletions NioKit/Models/EventCollection.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public struct EventCollection {
wrapped.filter { Self.renderableEventTypes.contains($0.type) }
}

var renderableEventsWithoutEdited: [MXEvent] {
wrapped.filter { Self.renderableEventTypes.contains($0.type) && !$0.isEdit()}
}

public func relatedEvents(of event: MXEvent) -> [MXEvent] {
wrapped.filter { $0.relatesTo?.eventId == event.eventId }
}
Expand Down
23 changes: 8 additions & 15 deletions NioKit/Session/AccountStore.swift
Original file line number Diff line number Diff line change
Expand Up @@ -180,23 +180,16 @@ public class AccountStore: ObservableObject {

var listenReferenceRoom: Any?

func pagenate(room: NIORoom, event: MXEvent) {
room.room.liveTimeline { timeline in
self.listenReferenceRoom = timeline?.listenToEvents { event, direction, roomState in
print(event)
func paginate(room: NIORoom, event: MXEvent) {
let timeline = room.room.timeline(onEvent: event.eventId)
listenReferenceRoom = timeline?.listenToEvents { event, direction, roomState in
if direction == .backwards {
room.add(event: event, direction: direction, roomState: roomState)
self.objectWillChange.send()
}
timeline?.resetPagination()
let canPage = timeline?.canPaginate(.backwards) ?? false
if canPage {
timeline?.paginate(20, direction: .backwards, onlyFromStore: false) {response in
if response.isSuccess {
print(response.value)
//room.add(event: response.value, direction: .backwards, roomState: nil)
}
}
}
self.objectWillChange.send()
}
timeline?.resetPaginationAroundInitialEvent(withLimit: 40) { _ in
self.objectWillChange.send()
}
}
}

0 comments on commit 8c6d8b4

Please sign in to comment.