| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- //
- // LNFeedLikeView.swift
- // Gami
- //
- // Created by OneeChan on 2026/3/4.
- //
- import Foundation
- import UIKit
- import SnapKit
- class LNFeedLikeView: UIView, LNFeedManagerNotify {
- let likeIc = UIImageView()
- let likeLabel = UILabel()
-
- var uiColor: UIColor = .text_4 {
- didSet {
- likeLabel.textColor = uiColor
- if !isLiked {
- likeIc.image = .icLikeEmpty.withTintColor(uiColor, renderingMode: .alwaysOriginal)
- }
- }
- }
-
- private var curId: String?
- private var isLiked = false
- private var likeCount: Int = 0
-
- override init(frame: CGRect) {
- super.init(frame: frame)
-
- likeIc.isUserInteractionEnabled = false
- likeIc.image = .icLikeEmpty.withTintColor(.text_4, renderingMode: .alwaysOriginal)
- addSubview(likeIc)
- likeIc.snp.makeConstraints { make in
- make.leading.equalToSuperview()
- make.verticalEdges.equalToSuperview()
- }
-
- likeLabel.isUserInteractionEnabled = false
- likeLabel.font = .heading_h5
- likeLabel.textColor = .text_4
- addSubview(likeLabel)
- likeLabel.snp.makeConstraints { make in
- make.centerY.equalToSuperview()
- make.trailing.equalToSuperview()
- make.leading.equalTo(likeIc.snp.trailing).offset(2)
- }
-
- onTap { [weak self] in
- guard let self, let curId else { return }
- LNFeedManager.shared.likeFeed(id: curId)
- }
-
- LNEventDeliver.addObserver(self)
- }
-
- func update(id: String, liked: Bool, count: Int) {
- curId = id
- isLiked = liked
- likeCount = count
-
- _updateUI()
- }
-
- func onFeedLikedChanged(id: String, liked: Bool) {
- guard id == curId else { return }
- isLiked = liked
- likeCount += liked ? 1 : -1
-
- _updateUI()
- }
-
- private func _updateUI() {
- likeIc.image = isLiked ? .icLikeFilled : .icLikeEmpty.withTintColor(uiColor, renderingMode: .alwaysOriginal)
- likeLabel.text = likeCount == 0 ? .init(key: "A00301") : "\(likeCount.formattedAsShortNumber())"
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- }
|