Compare commits
2 Commits
e264e8842c
...
6881441671
Author | SHA1 | Date |
---|---|---|
Shadowfacts | 6881441671 | |
Shadowfacts | 57cc5ac5a5 |
|
@ -77,7 +77,7 @@
|
|||
</CommandLineArgument>
|
||||
<CommandLineArgument
|
||||
argument = "-com.apple.CoreData.SQLDebug 1"
|
||||
isEnabled = "YES">
|
||||
isEnabled = "NO">
|
||||
</CommandLineArgument>
|
||||
</CommandLineArguments>
|
||||
<EnvironmentVariables>
|
||||
|
|
|
@ -45,7 +45,15 @@ class AppSplitViewController: UISplitViewController {
|
|||
setViewController(sidebarNav, for: .primary)
|
||||
|
||||
secondaryNav = UINavigationController()
|
||||
#if targetEnvironment(macCatalyst)
|
||||
secondaryNav.isNavigationBarHidden = true
|
||||
#else
|
||||
// the toggle sidebar button only appears if there's a navigation bar
|
||||
// so we just make always transparent, rather than disabling it
|
||||
let secondaryNavBarAppearance = UINavigationBarAppearance()
|
||||
secondaryNavBarAppearance.configureWithTransparentBackground()
|
||||
secondaryNav.navigationBar.standardAppearance = secondaryNavBarAppearance
|
||||
#endif
|
||||
secondaryNav.view.backgroundColor = .appBackground
|
||||
setViewController(secondaryNav, for: .secondary)
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ private let signposter = OSSignposter(subsystem: "net.shadowfacts.Reader", categ
|
|||
|
||||
class HomeCollectionViewCell: UICollectionViewListCell {
|
||||
|
||||
private var currentItemListType: ItemListType?
|
||||
private var currentItemCountTask: Task<Void, Never>?
|
||||
private var itemCount: Int?
|
||||
|
||||
#if !targetEnvironment(macCatalyst)
|
||||
|
@ -31,12 +31,11 @@ class HomeCollectionViewCell: UICollectionViewListCell {
|
|||
|
||||
override func prepareForReuse() {
|
||||
super.prepareForReuse()
|
||||
currentItemCountTask?.cancel()
|
||||
itemCount = nil
|
||||
}
|
||||
|
||||
func updateUI(item: ItemListType, persistentContainer: PersistentContainer) {
|
||||
self.currentItemListType = item
|
||||
|
||||
var config = UIListContentConfiguration.valueCell()
|
||||
config.text = item.title
|
||||
if let itemCount {
|
||||
|
@ -45,10 +44,10 @@ class HomeCollectionViewCell: UICollectionViewListCell {
|
|||
config.secondaryTextProperties.color = .tintColor
|
||||
self.contentConfiguration = config
|
||||
|
||||
Task(priority: .userInitiated) {
|
||||
let state = signposter.beginInterval("fetch count", id: signposter.makeSignpostID())
|
||||
currentItemCountTask = Task(priority: .userInitiated) {
|
||||
let state = signposter.beginInterval("fetch count", id: signposter.makeSignpostID(), "\(String(item.hashValue, radix: 16), privacy: .public)")
|
||||
if let count = await fetchCount(item: item, in: persistentContainer),
|
||||
self.currentItemListType == item {
|
||||
!Task.isCancelled {
|
||||
self.itemCount = count
|
||||
config.secondaryText = count.formatted(.number)
|
||||
self.contentConfiguration = config
|
||||
|
@ -62,9 +61,12 @@ class HomeCollectionViewCell: UICollectionViewListCell {
|
|||
return nil
|
||||
}
|
||||
return await withCheckedContinuation({ continuation in
|
||||
let context = persistentContainer.backgroundContext
|
||||
context.perform {
|
||||
let state = signposter.beginInterval("waiting to perform", id: signposter.makeSignpostID(), "\(String(item.hashValue, radix: 16), privacy: .public)")
|
||||
persistentContainer.performBackgroundTask { context in
|
||||
signposter.endInterval("waiting to perform", state)
|
||||
let state = signposter.beginInterval("count", id: signposter.makeSignpostID(), "\(String(item.hashValue, radix: 16), privacy: .public)")
|
||||
let count = try? context.count(for: request)
|
||||
signposter.endInterval("count", state)
|
||||
continuation.resume(returning: count)
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue