Skip to content

Commit

Permalink
Merge pull request #1723 from planetary-social/bdm/119-feed-relays-ed…
Browse files Browse the repository at this point in the history
…iting

fixed: adding/removing relays not reflected on feed filter #119
  • Loading branch information
joshuatbrown authored Jan 6, 2025
2 parents 48d5ad5 + 96d20a0 commit 3dcea55
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 27 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Release Notes

- Fixed: adding/removing relays not reflected on feed filter. [#119](https://github.com/verse-pbc/issues/issues/119)

### Internal Changes

## [1.1] - 2025-01-03Z

### Release Notes
Expand Down
62 changes: 35 additions & 27 deletions Nos/Controller/FeedController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import SwiftUI

let author: Author

var enabledSources: [FeedSource] = [.following]
private(set) var enabledSources: [FeedSource] = [.following]

private(set) var selectedList: AuthorList?
private(set) var selectedRelay: Relay?
Expand Down Expand Up @@ -37,6 +37,38 @@ import SwiftUI
}
}

@ObservationIgnored private lazy var listsPublisher = {
let request = NSFetchRequest<AuthorList>(entityName: "AuthorList")
request.sortDescriptors = [NSSortDescriptor(keyPath: \Event.createdAt, ascending: false)]
request.predicate = NSPredicate(
format: "kind = %i AND author = %@ AND title != nil",
EventKind.followSet.rawValue,
author
)

let listWatcher = NSFetchedResultsController(
fetchRequest: request,
managedObjectContext: persistenceController.viewContext,
sectionNameKeyPath: nil,
cacheName: "FeedController.listWatcher"
)

return FetchedResultsControllerPublisher(fetchedResultsController: listWatcher)
}()

@ObservationIgnored private lazy var relaysPublisher = {
let request = Relay.relays(for: author)

let relayWatcher = NSFetchedResultsController(
fetchRequest: request,
managedObjectContext: persistenceController.viewContext,
sectionNameKeyPath: nil,
cacheName: "FeedController.relayWatcher"
)

return FetchedResultsControllerPublisher(fetchedResultsController: relayWatcher)
}()

private var cancellables = Set<AnyCancellable>()

init(author: Author) {
Expand All @@ -54,22 +86,7 @@ import SwiftUI
}

private func observeLists() {
let request = NSFetchRequest<AuthorList>(entityName: "AuthorList")
request.sortDescriptors = [NSSortDescriptor(keyPath: \Event.createdAt, ascending: false)]
request.predicate = NSPredicate(
format: "kind = %i AND author = %@ AND title != nil",
EventKind.followSet.rawValue,
author
)

let listWatcher = NSFetchedResultsController(
fetchRequest: request,
managedObjectContext: persistenceController.viewContext,
sectionNameKeyPath: nil,
cacheName: "FeedController.listWatcher"
)

FetchedResultsControllerPublisher(fetchedResultsController: listWatcher)
listsPublisher
.publisher
.receive(on: DispatchQueue.main)
.sink(receiveValue: { [weak self] lists in
Expand All @@ -79,16 +96,7 @@ import SwiftUI
}

private func observeRelays() {
let request = Relay.relays(for: author)

let relayWatcher = NSFetchedResultsController(
fetchRequest: request,
managedObjectContext: persistenceController.viewContext,
sectionNameKeyPath: nil,
cacheName: "FeedController.relayWatcher"
)

FetchedResultsControllerPublisher(fetchedResultsController: relayWatcher)
relaysPublisher
.publisher
.receive(on: DispatchQueue.main)
.sink(receiveValue: { [weak self] relays in
Expand Down

0 comments on commit 3dcea55

Please sign in to comment.