Sort combined events in repository.query

This commit is contained in:
Jon Staab
2025-01-02 16:49:12 -08:00
parent d4ee2396a2
commit aab3974879
2 changed files with 9 additions and 3 deletions
+1 -1
View File
@@ -74,7 +74,7 @@
padding: 0.5rem 1rem; padding: 0.5rem 1rem;
text-align: left; text-align: left;
transition-duration: 100ms; transition-duration: 100ms;
transition-property: color background-color; transition-property: color, background-color;
background-color: var(--tiptap-object-bg); background-color: var(--tiptap-object-bg);
color: var(--tiptap-object-fg); color: var(--tiptap-object-fg);
} }
+8 -2
View File
@@ -125,7 +125,7 @@ export class Repository<E extends HashedEvent = TrustedEvent> extends Emitter {
const applied = this._applyAnyFilter(originalFilter) const applied = this._applyAnyFilter(originalFilter)
const filter = applied?.filter || originalFilter const filter = applied?.filter || originalFilter
const events = applied ? this._getEvents(applied!.ids) : this.dump() const events = applied ? this._getEvents(applied!.ids) : this.dump()
const sorted = shouldSort ? sortBy((e: E) => -e.created_at, events) : events const sorted = this._sortEvents(shouldSort && Boolean(filter.limit), events)
const chunk: E[] = [] const chunk: E[] = []
for (const event of sorted) { for (const event of sorted) {
@@ -145,7 +145,10 @@ export class Repository<E extends HashedEvent = TrustedEvent> extends Emitter {
result.push(chunk) result.push(chunk)
} }
return uniq(flatten(result)) // Only re-sort if we had multiple filters, or if our single filter wasn't sorted
const shouldSortAll = shouldSort && (filters.length > 1 || !filters[0]?.limit)
return this._sortEvents(shouldSortAll, uniq(flatten(result)))
} }
publish = (event: E, {shouldNotify = true} = {}): boolean => { publish = (event: E, {shouldNotify = true} = {}): boolean => {
@@ -229,6 +232,9 @@ export class Repository<E extends HashedEvent = TrustedEvent> extends Emitter {
// Utilities // Utilities
_sortEvents = (shouldSort: boolean, events: E[]) =>
shouldSort ? sortBy(e => -e.created_at, events) : events
_updateIndex = <K>(m: Map<K, E[]>, k: K, add?: E, remove?: E) => { _updateIndex = <K>(m: Map<K, E[]>, k: K, add?: E, remove?: E) => {
let a = m.get(k) || [] let a = m.get(k) || []