mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2025-02-05 13:27:45 +01:00
Merge branch 'ios-release'
This commit is contained in:
commit
21e79250db
@ -23,6 +23,9 @@ class MasterTimelineTableViewCell: VibrantTableViewCell {
|
|||||||
return NonIntrinsicImageView(image: AppAssets.timelineStarImage)
|
return NonIntrinsicImageView(image: AppAssets.timelineStarImage)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
private var unreadIndicatorPropertyAnimator: UIViewPropertyAnimator?
|
||||||
|
private var starViewPropertyAnimator: UIViewPropertyAnimator?
|
||||||
|
|
||||||
var cellData: MasterTimelineCellData! {
|
var cellData: MasterTimelineCellData! {
|
||||||
didSet {
|
didSet {
|
||||||
updateSubviews()
|
updateSubviews()
|
||||||
@ -35,7 +38,12 @@ class MasterTimelineTableViewCell: VibrantTableViewCell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func prepareForReuse() {
|
override func prepareForReuse() {
|
||||||
|
unreadIndicatorPropertyAnimator?.stopAnimation(true)
|
||||||
|
unreadIndicatorPropertyAnimator = nil
|
||||||
unreadIndicatorView.isHidden = true
|
unreadIndicatorView.isHidden = true
|
||||||
|
|
||||||
|
starViewPropertyAnimator?.stopAnimation(true)
|
||||||
|
starViewPropertyAnimator = nil
|
||||||
starView.isHidden = true
|
starView.isHidden = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,10 +211,15 @@ private extension MasterTimelineTableViewCell {
|
|||||||
|
|
||||||
func updateUnreadIndicator() {
|
func updateUnreadIndicator() {
|
||||||
if !unreadIndicatorView.isHidden && cellData.read && !cellData.starred {
|
if !unreadIndicatorView.isHidden && cellData.read && !cellData.starred {
|
||||||
UIView.animate(withDuration: 0.66, animations: { self.unreadIndicatorView.alpha = 0 }) { _ in
|
unreadIndicatorPropertyAnimator = UIViewPropertyAnimator(duration: 0.66, curve: .easeInOut) { [weak self] in
|
||||||
self.unreadIndicatorView.isHidden = true
|
self?.unreadIndicatorView.alpha = 0
|
||||||
self.unreadIndicatorView.alpha = 1
|
|
||||||
}
|
}
|
||||||
|
unreadIndicatorPropertyAnimator?.addCompletion { [weak self] _ in
|
||||||
|
self?.unreadIndicatorView.isHidden = true
|
||||||
|
self?.unreadIndicatorView.alpha = 1
|
||||||
|
self?.unreadIndicatorPropertyAnimator = nil
|
||||||
|
}
|
||||||
|
unreadIndicatorPropertyAnimator?.startAnimation()
|
||||||
} else {
|
} else {
|
||||||
showOrHideView(unreadIndicatorView, cellData.read || cellData.starred)
|
showOrHideView(unreadIndicatorView, cellData.read || cellData.starred)
|
||||||
}
|
}
|
||||||
@ -214,10 +227,15 @@ private extension MasterTimelineTableViewCell {
|
|||||||
|
|
||||||
func updateStarView() {
|
func updateStarView() {
|
||||||
if !starView.isHidden && cellData.read && !cellData.starred {
|
if !starView.isHidden && cellData.read && !cellData.starred {
|
||||||
UIView.animate(withDuration: 0.66, animations: { self.starView.alpha = 0 }) { _ in
|
starViewPropertyAnimator = UIViewPropertyAnimator(duration: 0.66, curve: .easeInOut) { [weak self] in
|
||||||
self.starView.isHidden = true
|
self?.starView.alpha = 0
|
||||||
self.starView.alpha = 1
|
|
||||||
}
|
}
|
||||||
|
starViewPropertyAnimator?.addCompletion { [weak self] _ in
|
||||||
|
self?.starView.isHidden = true
|
||||||
|
self?.starView.alpha = 1
|
||||||
|
self?.starViewPropertyAnimator = nil
|
||||||
|
}
|
||||||
|
starViewPropertyAnimator?.startAnimation()
|
||||||
} else {
|
} else {
|
||||||
showOrHideView(starView, !cellData.starred)
|
showOrHideView(starView, !cellData.starred)
|
||||||
}
|
}
|
||||||
|
@ -76,11 +76,14 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
private var expandedTable = Set<ContainerIdentifier>()
|
private var expandedTable = Set<ContainerIdentifier>()
|
||||||
private var readFilterEnabledTable = [FeedIdentifier: Bool]()
|
private var readFilterEnabledTable = [FeedIdentifier: Bool]()
|
||||||
private var shadowTable = [[Node]]()
|
private var shadowTable = [[Node]]()
|
||||||
|
|
||||||
|
private(set) var preSearchTimelineFeed: Feed?
|
||||||
private var lastSearchString = ""
|
private var lastSearchString = ""
|
||||||
private var lastSearchScope: SearchScope? = nil
|
private var lastSearchScope: SearchScope? = nil
|
||||||
private var isSearching: Bool = false
|
private var isSearching: Bool = false
|
||||||
private var savedSearchArticles: ArticleArray? = nil
|
private var savedSearchArticles: ArticleArray? = nil
|
||||||
private var savedSearchArticleIds: Set<String>? = nil
|
private var savedSearchArticleIds: Set<String>? = nil
|
||||||
|
|
||||||
var isTimelineViewControllerPending = false
|
var isTimelineViewControllerPending = false
|
||||||
var isArticleViewControllerPending = false
|
var isArticleViewControllerPending = false
|
||||||
|
|
||||||
@ -859,6 +862,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
|
|
||||||
func beginSearching() {
|
func beginSearching() {
|
||||||
isSearching = true
|
isSearching = true
|
||||||
|
preSearchTimelineFeed = timelineFeed
|
||||||
savedSearchArticles = articles
|
savedSearchArticles = articles
|
||||||
savedSearchArticleIds = Set(articles.map { $0.articleID })
|
savedSearchArticleIds = Set(articles.map { $0.articleID })
|
||||||
setTimelineFeed(nil, animated: true)
|
setTimelineFeed(nil, animated: true)
|
||||||
@ -866,9 +870,9 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func endSearching() {
|
func endSearching() {
|
||||||
if let ip = currentFeedIndexPath, let node = nodeFor(ip), let feed = node.representedObject as? Feed {
|
if let oldTimelineFeed = preSearchTimelineFeed {
|
||||||
emptyTheTimeline()
|
emptyTheTimeline()
|
||||||
timelineFeed = feed
|
timelineFeed = oldTimelineFeed
|
||||||
masterTimelineViewController?.reinitializeArticles(resetScroll: true)
|
masterTimelineViewController?.reinitializeArticles(resetScroll: true)
|
||||||
replaceArticles(with: savedSearchArticles!, animated: true)
|
replaceArticles(with: savedSearchArticles!, animated: true)
|
||||||
} else {
|
} else {
|
||||||
@ -877,6 +881,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
|
|
||||||
lastSearchString = ""
|
lastSearchString = ""
|
||||||
lastSearchScope = nil
|
lastSearchScope = nil
|
||||||
|
preSearchTimelineFeed = nil
|
||||||
savedSearchArticleIds = nil
|
savedSearchArticleIds = nil
|
||||||
savedSearchArticles = nil
|
savedSearchArticles = nil
|
||||||
isSearching = false
|
isSearching = false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user