11import UIKit
22
33protocol ReaderDiscoverHeaderViewDelegate : AnyObject {
4- func readerDiscoverHeaderView( _ view: ReaderDiscoverHeaderView , didChangeSelection selection: ReaderDiscoverTag )
4+ func readerDiscoverHeaderView( _ view: ReaderDiscoverHeaderView , didChangeSelection selection: ReaderDiscoverChannel )
55}
66
77final class ReaderDiscoverHeaderView : UIView {
88 private let titleView = ReaderStreamTitleView ( )
9- private let tagsStackView = UIStackView ( spacing: 8 , [ ] )
10- private var tagViews : [ ReaderDiscoverTagView ] = [ ]
9+ private let channelsStackView = UIStackView ( spacing: 8 , [ ] )
10+ private var channelViews : [ ReaderDiscoverChannelView ] = [ ]
1111
12- private var selectedTag : ReaderDiscoverTag ?
12+ private var selectedChannel : ReaderDiscoverChannel ?
1313
1414 weak var delegate : ReaderDiscoverHeaderViewDelegate ?
1515
1616 override init ( frame: CGRect ) {
1717 super. init ( frame: frame)
1818
1919 let scrollView = UIScrollView ( )
20- scrollView. addSubview ( tagsStackView )
20+ scrollView. addSubview ( channelsStackView )
2121 scrollView. showsHorizontalScrollIndicator = false
2222 scrollView. clipsToBounds = false
23- tagsStackView . pinEdges ( )
24- scrollView. heightAnchor. constraint ( equalTo: tagsStackView . heightAnchor) . isActive = true
23+ channelsStackView . pinEdges ( )
24+ scrollView. heightAnchor. constraint ( equalTo: channelsStackView . heightAnchor) . isActive = true
2525
2626 let stackView = UIStackView ( axis: . vertical, spacing: 8 , [ titleView, scrollView] )
2727 addSubview ( stackView)
@@ -35,50 +35,50 @@ final class ReaderDiscoverHeaderView: UIView {
3535 fatalError ( " init(coder:) has not been implemented " )
3636 }
3737
38- func configure( tags : [ ReaderDiscoverTag ] ) {
39- for view in tagViews {
38+ func configure( channels : [ ReaderDiscoverChannel ] ) {
39+ for view in channelViews {
4040 view. removeFromSuperview ( )
4141 }
42- tagViews = tags . map ( makeTagView )
43- for view in tagViews {
44- tagsStackView . addArrangedSubview ( view)
42+ channelViews = channels . map ( makeChannelView )
43+ for view in channelViews {
44+ channelsStackView . addArrangedSubview ( view)
4545 }
4646 }
4747
48- func setSelectedTag ( _ tag : ReaderDiscoverTag ) {
49- selectedTag = tag
50- refreshTagViews ( )
48+ func setSelectedChannel ( _ channel : ReaderDiscoverChannel ) {
49+ selectedChannel = channel
50+ refreshChannelViews ( )
5151 }
5252
53- private func makeTagView ( _ tag : ReaderDiscoverTag ) -> ReaderDiscoverTagView {
54- let view = ReaderDiscoverTagView ( tag : tag )
53+ private func makeChannelView ( _ channel : ReaderDiscoverChannel ) -> ReaderDiscoverChannelView {
54+ let view = ReaderDiscoverChannelView ( channel : channel )
5555 view. button. addAction ( UIAction { [ weak self] _ in
56- self ? . didSelectTag ( tag )
56+ self ? . didSelectChannel ( channel )
5757 } , for: . primaryActionTriggered)
5858 return view
5959 }
6060
61- private func didSelectTag ( _ tag : ReaderDiscoverTag ) {
62- guard selectedTag != tag else {
61+ private func didSelectChannel ( _ channel : ReaderDiscoverChannel ) {
62+ guard selectedChannel != channel else {
6363 return
6464 }
65- selectedTag = tag
66- delegate? . readerDiscoverHeaderView ( self , didChangeSelection: tag )
67- refreshTagViews ( )
65+ selectedChannel = channel
66+ delegate? . readerDiscoverHeaderView ( self , didChangeSelection: channel )
67+ refreshChannelViews ( )
6868 }
6969
70- private func refreshTagViews ( ) {
71- for view in tagViews {
72- view. isSelected = view. discoverTag == selectedTag
70+ private func refreshChannelViews ( ) {
71+ for view in channelViews {
72+ view. isSelected = view. channel == selectedChannel
7373 }
7474 }
7575}
7676
77- private final class ReaderDiscoverTagView : UIView {
77+ private final class ReaderDiscoverChannelView : UIView {
7878 private let textLabel = UILabel ( )
7979 private let backgroundView = UIView ( )
8080 let button = UIButton ( type: . system)
81- let discoverTag : ReaderDiscoverTag
81+ let channel : ReaderDiscoverChannel
8282
8383 var isSelected : Bool = false {
8484 didSet {
@@ -87,13 +87,13 @@ private final class ReaderDiscoverTagView: UIView {
8787 }
8888 }
8989
90- init ( tag : ReaderDiscoverTag ) {
91- self . discoverTag = tag
90+ init ( channel : ReaderDiscoverChannel ) {
91+ self . channel = channel
9292
9393 super. init ( frame: . zero)
9494
9595 textLabel. font = UIFont . preferredFont ( forTextStyle: . subheadline) . withWeight ( . medium)
96- textLabel. text = discoverTag . localizedTitle
96+ textLabel. text = channel . localizedTitle
9797
9898 backgroundView. clipsToBounds = true
9999
@@ -129,12 +129,10 @@ private final class ReaderDiscoverTagView: UIView {
129129 }
130130}
131131
132- enum ReaderDiscoverTag : Hashable {
132+ enum ReaderDiscoverChannel : Hashable {
133133 /// The default channel showing your selected tags.
134134 case recommended
135135
136- // case firstPosts
137-
138136 /// Latest post from your selected tags.
139137 case latest
140138
0 commit comments