diff --git a/Forji/Forji/Helpers/PaginationState.swift b/Forji/Forji/Helpers/PaginationState.swift index af74840..3653449 100644 --- a/Forji/Forji/Helpers/PaginationState.swift +++ b/Forji/Forji/Helpers/PaginationState.swift @@ -15,10 +15,10 @@ final class PaginationState { let pageSize: Int var cacheName: String? - /// Optional key extractor enabling cross-page de-duplication. Merged views set - /// this because they combine paginated results from several instances, where - /// the same item can resurface on a later page (overlapping involvement - /// queries) and the merged page size no longer matches `pageSize`. + /// Optional key extractor enabling cross-page de-duplication. Views that + /// combine several paginated sources set this (merged multi-instance lists, + /// or the per-flag involvement queries), because the same item can resurface + /// on a later page and the combined page size no longer matches `pageSize`. @ObservationIgnored var dedupeKey: ((Item) -> AnyHashable)? @ObservationIgnored private var seenKeys = Set() diff --git a/Forji/Forji/Views/SearchableOverviewView.swift b/Forji/Forji/Views/SearchableOverviewView.swift index e912f30..f746bc3 100644 --- a/Forji/Forji/Views/SearchableOverviewView.swift +++ b/Forji/Forji/Views/SearchableOverviewView.swift @@ -59,6 +59,7 @@ struct SearchableOverviewView: View { let state = PaginationState() state.cacheName = issueType + state.dedupeKey = { $0.id } state.loadFromCache() _pagination = State(initialValue: state) }