| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- //
- // LNFeedManager.swift
- // Gami
- //
- // Created by OneeChan on 2026/3/4.
- //
- import Foundation
- protocol LNFeedManagerNotify {
- func onFeedCommentCountChanged(id: String, count: Int)
- func onFeedLikedChanged(id: String, liked: Bool)
- func onFeedDelete(id: String)
- func onPostFeedSuccess()
- }
- extension LNFeedManagerNotify {
- func onFeedDelete(id: String) { }
- func onFeedCommentCountChanged(id: String, count: Int) { }
- func onFeedLikedChanged(id: String, liked: Bool) { }
- func onPostFeedSuccess() { }
- }
- class LNFeedManager {
- static let shared = LNFeedManager()
- static let feedMaxIntput = 500
- static let feedCommentMaxInput = 200
- static var videoMute = true
-
- func likeFeed(id: String, queue: DispatchQueue = .main, handler: ((LNFeedLikeResponse?) -> Void)? = nil) {
- LNHttpManager.shared.likeFeed(id: id) { [weak self] res, err in
- queue.asyncIfNotGlobal {
- handler?(res)
- }
-
- if let self, let res, err == nil {
- notifyFeedLikeChanged(id: id, liked: res.like)
- }
- }
- }
-
- func getFeedList(uid: String, next: String?, queue: DispatchQueue = .main, handler: @escaping (LNFeedListResponse?) -> Void) {
- LNHttpManager.shared.getFeedList(uid: uid, size: 30, next: next ?? "") { list, err in
- queue.asyncIfNotGlobal {
- handler(list)
- }
- }
- }
-
- func getFeedDetail(id: String, queue: DispatchQueue = .main, handler: @escaping (LNFeedDetailVO?) -> Void) {
- LNHttpManager.shared.getFeedDetail(id: id) { detail, err in
- queue.asyncIfNotGlobal {
- handler(detail)
- }
- }
- }
-
- func postFeed(item: LNPostFeedItem, queue: DispatchQueue = .main, handler: @escaping (Bool) -> Void) {
- LNHttpManager.shared.postFeed(item: item) { [weak self] err in
- queue.asyncIfNotGlobal {
- handler(err == nil)
- }
-
- if let self, err == nil {
- notifyPostFeedSuccess()
- }
- }
- }
-
- func sendFeedComment(id: String, content: String, queue: DispatchQueue = .main, handler: @escaping (Bool) -> Void) {
- LNHttpManager.shared.sendFeedComment(id: id, content: content) { err in
- queue.asyncIfNotGlobal {
- handler(err == nil)
- }
- }
- }
-
- func getFeedCommentList(id: String, next: String?, queue: DispatchQueue = .main, handler: @escaping (LNFeedCommentListResponse?) -> Void) {
- LNHttpManager.shared.getFeedCommentList(id: id, size: 30, next: next ?? "") { list, err in
- queue.asyncIfNotGlobal {
- handler(list)
- }
- }
- }
-
- func listFeedComment(id: String, queue: DispatchQueue = .main, handler: @escaping (Bool) -> Void) {
- LNHttpManager.shared.listFeedComment(id: id) { err in
- queue.asyncIfNotGlobal {
- handler(err == nil)
- }
- }
- }
-
- func deleteFeed(id: String, queue: DispatchQueue = .main, handler: @escaping (Bool) -> Void) {
- LNHttpManager.shared.deleteFeed(id: id) { [weak self] err in
- queue.asyncIfNotGlobal {
- handler(err == nil)
- }
-
- if let self, err == nil {
- notifyFeedDelete(id: id)
- }
- }
- }
- }
- extension LNFeedManager {
- func notifyFeedCommentChanged(id: String, count: Int) {
- LNEventDeliver.notifyEvent { ($0 as? LNFeedManagerNotify)?.onFeedCommentCountChanged(id: id, count: count) }
- }
-
- func notifyPostFeedSuccess() {
- LNEventDeliver.notifyEvent { ($0 as? LNFeedManagerNotify)?.onPostFeedSuccess() }
- }
-
- func notifyFeedDelete(id: String) {
- LNEventDeliver.notifyEvent { ($0 as? LNFeedManagerNotify)?.onFeedDelete(id: id) }
- }
-
- func notifyFeedLikeChanged(id: String, liked: Bool) {
- LNEventDeliver.notifyEvent { ($0 as? LNFeedManagerNotify)?.onFeedLikedChanged(id: id, liked: liked) }
- }
- }
|