Commit 106fae0d by pierce

战队完整功能、UI未改色

parent c6778031
Showing with 84 additions and 54 deletions
......@@ -357,6 +357,7 @@ open class GDPublicAchievementView: BaseView {
strokeColor: UIColor?) {}
open func cleanFansGroupMedalView() {}
open func setupFightTeamMedal(with name: String, medalUrl: String?){}
open func cleanFightTeamMedal() { }
open func updateFrame() {}
open func clean() {}
}
......@@ -10,18 +10,9 @@ import UIKit
import GDToolBox
import GDRouter
class GDFightTeamZoneRequestModel: BaseModel, NetworkModelType {
extension GDFightTeamZoneRequestModel: NetworkModelType {
/// 是否是成员
var ismember : Bool = false
/// 角色身份 :-1无 0普通 1管理 2队长
var role : GDFightTeamRole = .none
var memberlist : [GDFightTeamMemberModel] = []
var richteam : GDFightTeamZoneModel?
var surplusTime: Int = 0
var applyPendingCount: Int = 0
static func createFrom(_ json: JSON) -> Self {
public static func createFrom(_ json: JSON) -> Self {
let model = GDFightTeamZoneRequestModel()
model.ismember = json["data"]["ismember"].boolValue
model.role = GDFightTeamRole.create(for: json["data"]["role"].intValue)
......
......@@ -100,15 +100,6 @@ class GDFightTeamZoneViewModel: BaseViewModel {
self?.refreshState.accept(.idle)
FTIndicator.showToastMessage(error.msg)
}
// GDFightTeamHttpHelper.shared.getFightTeamDetail(with: uid, tid: tid, page: page).subscribe {[weak self] model in
//
//
//
// } onFailure: {[weak self] error in
//
// }.disposed(by: disposeBag)
}
func operateUser(as manage: Bool, uid: String) {
......
......@@ -8,8 +8,9 @@
import UIKit
import GDToolBox
import GDRouter
class GDFightTeamMemberLevelView: BaseView {
class GDFightTeamMemberLevelView: GDPublicFightTeamMemberLevelView {
init() {
super.init(frame: .init(x: 0, y: 0, width: 40.5, height: 17))
......@@ -19,7 +20,7 @@ class GDFightTeamMemberLevelView: BaseView {
fatalError("init(coder:) has not been implemented")
}
var teamLevel: Int = 0 {
override var teamLevel: Int {
didSet {
switch teamLevel {
case 1:
......
......@@ -11,9 +11,7 @@ import Lottie
import GDToolBox
import GDRouter
class GDLiveFightTeamView: BaseView {
var dismissHandler: EmptyClosure?
class GDLiveFightTeamView: GDPublicLiveFightTeamView {
// MARK: Init
// MARK: Init
......@@ -227,7 +225,7 @@ class GDLiveFightTeamView: BaseView {
}
// MARK: Method
func show(on view: UIView, animate: Bool = true) {
override func show(on view: UIView, animate: Bool = true) {
guard self.superview == nil else { return }
view.addSubview(self)
// 记录已读的最后一条
......@@ -245,7 +243,7 @@ class GDLiveFightTeamView: BaseView {
}
}
func dismiss(animate: Bool = true) {
override func dismiss(animate: Bool = true) {
// 记录已读的最后一条
UserDefaults.standard.setValue( GDFightTeamCenter.shared.msgList.value.last?.msgid ?? "", forKey: GDFightTeamUDKeys.lastReadFightTeamMsgid + (GDRouter.UserRouter?.uid ?? ""))
GDFightTeamCenter.shared.hadUnreadMsg.accept(false)
......@@ -263,6 +261,15 @@ class GDLiveFightTeamView: BaseView {
dismissHandler?()
}
}
override func refreshEntranceShowData() {
self.mainView?.enterShowView?.viewModel.refreshEntranceShowData(with: 1)
}
override func insertChannelContent(content:String) {
self.mainView?.channelView?.insertContent(content: content)
}
deinit {
GDlog.verbose()
......
......@@ -75,6 +75,27 @@ public class GDFightTeamRouterModule: NSObject, GDFightTeamSwiftRouter {
public func fightTeamEnterShowView(frame:CGRect, resUrl:String, teamLogo:String?, enterMsg:String?) -> GDPublicFightTeamEnterShowView {
GDFightTeamEnterShowView(with: frame, resUrl: resUrl, teamLogo: teamLogo, enterMsg: enterMsg)
}
public func liveFightTeamView(uid:String, tid:String?) -> GDPublicLiveFightTeamView {
GDLiveFightTeamView(with: uid, tid: tid)
}
public func fightTeamMemberLevelView() -> GDPublicFightTeamMemberLevelView {
return GDFightTeamMemberLevelView()
}
public func inviteUserToJoinFightTeam(fid: String) -> Single<JSON> {
GDFightTeamHttpHelper.shared.inviteUserToJoinFightTeam(fid: fid)
}
public func getFightTeamCallInfo() -> Single<JSON> {
GDFightTeamHttpHelper.shared.getFightTeamCallInfo()
}
public func getFightTeamDetail(with uid: String, tid: String?, page: Int, success: ((GDFightTeamZoneRequestModel) -> Void)?, failure: ((GDMoyaError) -> Void)?) {
GDFightTeamCenter.shared.getFightTeamDetail(with: uid, tid: tid, page: page, success: success, failure: failure)
}
}
extension GDFightTeamRouterModule: GDRouterProtocol {
......
......@@ -443,9 +443,7 @@ class GDMyPageController: BaseViewController {
arr.append(.subfunction)
} else {
arr.append(.diamondAndCoin)
if GDRouter.BaseBusinessRouter?.isCurrentVersionVerified.value == false {
arr.append(.function)
}
arr.append(.function)
if dailySignSwitch {
arr.append(.dailySign)
}
......@@ -558,7 +556,7 @@ extension GDMyPageController: UITableViewDelegate, UITableViewDataSource {
$0.modulekey != kMyPageFunctionStore
&& $0.modulekey != kMyPageFunctionTurnplate
&& $0.modulekey != kMyPageFunctionFansGroup
// && $0.modulekey != kMyPageFunctionFightTeam
&& $0.modulekey != kMyPageFunctionFightTeam
}.count ?? 0)
if GDRouter.DataRouter?.dailySignSwitch.value == false {
itemCount += 1
......@@ -602,7 +600,7 @@ extension GDMyPageController: UITableViewDelegate, UITableViewDataSource {
}.map { $0.filter { $0.modulekey != kMyPageFunctionStore
&& $0.modulekey != kMyPageFunctionTurnplate
&& $0.modulekey != kMyPageFunctionFansGroup
// && $0.modulekey != kMyPageFunctionFightTeam
&& $0.modulekey != kMyPageFunctionFightTeam
}}
.map({ arr in
var arr = arr
......
......@@ -1080,7 +1080,7 @@ class GDLiveFunctionView: BaseView {
}).disposed(by: disposeBag)
GDSocketPublisher.FightTeam.enterShow.subscribe(onNext: {[weak self] json in
GDShowRoomSocketPublisher.enterFightTeamShow.subscribe(onNext: {[weak self] json in
guard let self = self else { return }
guard self.fightTeamEnterShowView?.superview == nil else { return }
......@@ -1097,6 +1097,7 @@ class GDLiveFunctionView: BaseView {
self.fightTeamEnterShowView?.dismiss()
self.fightTeamEnterShowView = GDRouter.FightTeamRouter?.fightTeamEnterShowView(frame: GDScreen.frame, resUrl: model.res ?? "", teamLogo: logoUrl, enterMsg: enterMsg)
self.fightTeamEnterShowView?.show(on: self, animate: true, repeatCount: 1)
self.entranceEffectView.clean()
......@@ -1779,7 +1780,7 @@ extension GDLiveFunctionView: LiveFunctionType {
}
func refreshFightTeamEntershowData() {
fightTeamView?.mainView?.enterShowView?.viewModel.refreshEntranceShowData(with: 1)
fightTeamView?.refreshEntranceShowData()
}
}
......@@ -1867,7 +1868,7 @@ extension GDLiveFunctionView {
let model = notification.userInfo?[GDLiveNotificationKey.userModel] as? GDUserInfoCardModel
let isHideman = notification.userInfo?[GDLiveNotificationKey.isHideMan] as? Bool ?? false
let isOtherRoom = notification.userInfo?[GDLiveNotificationKey.isOtherRoom] as? Bool ?? false
// let isFightTeam = notification.userInfo?[GDLiveNotificationKey.isFightTeam] as? Bool ?? false
let isFightTeam = notification.userInfo?[GDLiveNotificationKey.isFightTeam] as? Bool ?? false
target.endEditing(true)
......@@ -2301,7 +2302,7 @@ extension GDLiveFunctionView {
GDLiveHelper.shared.liveVC?.setupIsToggleViewOnShow(onShow: true)
self.fightTeamView?.removeFromSuperview()
self.fightTeamView = GDLiveFightTeamView(with: GDRouter.UserRouter?.uid, tid: nil)
self.fightTeamView = GDRouter.FightTeamRouter?.liveFightTeamView(uid: GDRouter.UserRouter?.uid ?? "", tid: nil)
self.fightTeamView?.show(on: self)
self.fightTeamView?.dismissHandler = {[weak self] in
......
......@@ -484,7 +484,7 @@ class GDLiveChatModel: BaseModel {
/// FIXME: 战队徽章
if isValidString(self.richteamname) {
let fightTeamMedal = GDFightTeamMedalView()
let fightTeamMedal = GDRouter.FightTeamRouter?.getFightTeamMedalView() ?? GDPublicFightTeamMedalView()
let teamName = self.richteamname ?? ""
let teamMedalUrl = self.richteammedal
fightTeamMedal.setupFightTeam(with: teamName, url: teamMedalUrl, completionHandler: nil)
......
......@@ -153,7 +153,7 @@ extension NSMutableAttributedString {
}
case "1003":// 战队徽章
let fightTeamMedal = GDFightTeamMedalView()
let fightTeamMedal = GDRouter.FightTeamRouter?.getFightTeamMedalView() ?? GDPublicFightTeamMedalView()
let teamName = json["data"]["richteamname"].gd_stringValue
let teamMedalUrl = json["data"]["richteammedal"].gd_stringValue
fightTeamMedal.setupFightTeam(with: teamName, url: teamMedalUrl, completionHandler: nil)
......
......@@ -296,7 +296,8 @@ class GDLiveAnchorPanelView: BaseView {
model.isRead.bind(to: btn.unreadView.rx.isHidden).disposed(by: disposeBag)
case .fightTeam:
Observable.combineLatest(GDRouter.FightTeamRouter?.hadUnreadMsg, GDRouter.FightTeamRouter?.hadFightTeamInvite, GDRouter.FightTeamRouter?.applyCount).subscribe(onNext: { hadUnreadMsg, hadFightTeamInvite, applyCount in
guard let fightTeamRouter = GDRouter.FightTeamRouter else { break }
Observable.combineLatest(fightTeamRouter.hadUnreadMsg, fightTeamRouter.hadFightTeamInvite, fightTeamRouter.applyCount).subscribe(onNext: { hadUnreadMsg, hadFightTeamInvite, applyCount in
if hadUnreadMsg == false && hadFightTeamInvite == false && applyCount <= 0 {
btn.unreadView.isHidden = true
......
......@@ -283,7 +283,8 @@ class GDLiveAudiencePanelView: BaseView {
}).disposed(by: disposeBag)
case .fightTeam:
Observable.combineLatest( GDRouter.FightTeamRouter?.hadUnreadMsg, GDRouter.FightTeamRouter?.hadFightTeamInvite, GDRouter.FightTeamRouter?.applyCount).subscribe(onNext: { hadUnreadMsg, hadFightTeamInvite, applyCount in
guard let fightTeamRouter = GDRouter.FightTeamRouter else { break }
Observable.combineLatest(fightTeamRouter.hadUnreadMsg, fightTeamRouter.hadFightTeamInvite, fightTeamRouter.applyCount).subscribe(onNext: { hadUnreadMsg, hadFightTeamInvite, applyCount in
if hadUnreadMsg == false && hadFightTeamInvite == false && applyCount <= 0 {
itemView.unreadView.isHidden = true
......
......@@ -162,8 +162,9 @@ class GDLiveChatInputView: BaseView {
func refreshFightTeamUnread(for unreadView: UIView) {
guard let fightTeamRouter = GDRouter.FightTeamRouter else { return }
if GDLiveHelper.shared.liveConfig.value.liveMoreButon.filter({ $0.isRead.value == false }).count <= 0
&& GDRouter.FightTeamRouter?.hadUnreadMsg.value == false && GDRouter.FightTeamRouter?.hadFightTeamInvite.value == false && GDRouter.FightTeamRouter?.applyCount.value <= 0
&& fightTeamRouter.hadUnreadMsg.value == false && fightTeamRouter.hadFightTeamInvite.value == false && fightTeamRouter.applyCount.value <= 0
&& (GDRouter.UserRouter?.rewardCount.value ?? 0) <= 0 {
unreadView.isHidden = true
} else {
......@@ -206,10 +207,11 @@ class GDLiveChatInputView: BaseView {
make.right.equalToSuperview()
}
func refreshFightTeamUnread(for unreadView: UIView) {
guard let fightTeamRouter = GDRouter.FightTeamRouter else { return }
if GDLiveHelper.shared.liveConfig.value.liveMoreButon.filter({ $0.isRead.value == false }).count <= 0
&& GDRouter.FightTeamRouter?.hadUnreadMsg.value == false && GDRouter.FightTeamRouter?.hadFightTeamInvite.value == false && GDRouter.FightTeamRouter?.applyCount.value <= 0
&& fightTeamRouter.hadUnreadMsg.value == false && fightTeamRouter.hadFightTeamInvite.value == false && fightTeamRouter.applyCount.value <= 0
{
unreadView.isHidden = true
} else {
......
......@@ -660,7 +660,7 @@ class GDUserInfoCardView: BaseView {
/// - animate: 是否动画展示,默认true
func show(on view: UIView, for uid: String, model: GDUserInfoCardModel? = nil, animate: Bool = true, isHideMan: Bool = false, isOtherRoom: Bool = false, isFightTeam: Bool) {
GDRouter.FightTeamRouter?.getFightTeamDetail(with: GDRouter.UserRouter?.uid, tid: nil, page: 1) {[weak self] _ in
GDRouter.FightTeamRouter?.getFightTeamDetail(with: GDRouter.UserRouter?.uid ?? "", tid: nil, page: 1) {[weak self] _ in
guard let self = self else { return }
......@@ -974,7 +974,7 @@ class GDUserInfoCardView: BaseView {
if let functionView = GDLiveHelper.shared.liveVC?.functionView as? GDLiveFunctionView {
if functionView.fightTeamView?.superview != nil {
functionView.fightTeamView?.mainView?.channelView?.insertContent(content: "@\(nickname) ")
functionView.fightTeamView?.insertChannelContent(content: "@\(nickname) ")
} else {
functionView.insertInputText(content: "@\(nickname) ")
}
......
......@@ -122,7 +122,7 @@ class GDLiveChatListViewModel: BaseViewModel {
.map{ (roomid: $0.roomid, model: $0.messageModel) }
.buffer(timeSpan: .milliseconds(500), count: 50, scheduler: MainScheduler.instance)
GDSocketPublisher.FightTeam.message
GDShowRoomSocketPublisher.fightTeamMessage
.subscribe(onNext: {[weak self] msgModel in
guard GDLiveHelper.shared.liveState.value == .living else { return }
// 只展示召集消息
......@@ -131,13 +131,13 @@ class GDLiveChatListViewModel: BaseViewModel {
guard let msgid = msgModel.msgid else { return }
var recordDict =
UserDefaults.standard.object(forKey: GDUserDefault.Data.fightTeamCallMsgRecord + (GDRouter.UserRouter?.uid ?? "")) as? [String: Bool] ?? [:]
UserDefaults.standard.object(forKey: GDShowRoomUDKeys.fightTeamCallMsgRecord + (GDRouter.UserRouter?.uid ?? "")) as? [String: Bool] ?? [:]
if recordDict[msgid] == true {
return
}
recordDict[msgid] = true
UserDefaults.standard.setValue(recordDict, forKey: GDUserDefault.Data.fightTeamCallMsgRecord + (GDRouter.UserRouter?.uid ?? ""))
UserDefaults.standard.setValue(recordDict, forKey: GDShowRoomUDKeys.fightTeamCallMsgRecord + (GDRouter.UserRouter?.uid ?? ""))
let model = GDLiveChatModel.createFightTeamMessage(for: msgModel)
self?.addMessages([model])
......@@ -190,7 +190,7 @@ class GDLiveChatListViewModel: BaseViewModel {
}
// 拉取是否有战队消息
GDShowRoomHttpHelper.shared.getFightTeamCallInfo().subscribe {[weak self] dataJson in
GDRouter.FightTeamRouter?.getFightTeamCallInfo().subscribe {[weak self] dataJson in
_ = dataJson["data"].arrayValue.map {[weak self] json in
......@@ -203,13 +203,13 @@ class GDLiveChatListViewModel: BaseViewModel {
let msgid = json["msgid"].gd_stringValue
var recordDict = UserDefaults.standard.object(forKey: GDUserDefault.Data.fightTeamCallMsgRecord + (GDRouter.UserRouter?.uid ?? "")) as? [String: Bool] ?? [:]
var recordDict = UserDefaults.standard.object(forKey: GDShowRoomUDKeys.fightTeamCallMsgRecord + (GDRouter.UserRouter?.uid ?? "")) as? [String: Bool] ?? [:]
if recordDict[msgid] == true {
return
}
recordDict[msgid] = true
UserDefaults.standard.setValue(recordDict, forKey: GDUserDefault.Data.fightTeamCallMsgRecord + (GDRouter.UserRouter?.uid ?? ""))
UserDefaults.standard.setValue(recordDict, forKey: GDShowRoomUDKeys.fightTeamCallMsgRecord + (GDRouter.UserRouter?.uid ?? ""))
let fightTeamMsg = GDFightTeamMessageModel.createModelFrom(json)
......
......@@ -238,9 +238,9 @@ class GDUserInfoCardViewModel: BaseViewModel, ViewModelType {
func inviteToJoinFightTeam() {
guard let uid = currentUID.value else { return }
GDShowRoomHttpHelper.shared.inviteUserToJoinFightTeam(fid: uid).subscribe { json in
GDRouter.FightTeamRouter?.inviteUserToJoinFightTeam(fid: uid).subscribe { json in
FTIndicator.showToastMessage("邀请成功")
} onError: { error in
} onFailure: { error in
guard let error = error as? GDMoyaError else {
FTIndicator.showToastMessage(GDMoyaError.networkError().msg)
return
......
......@@ -32,6 +32,9 @@ struct GDShowRoomUDKeys {
static let fansGroupGuideAnchorList = "fansGroupGuideAnchorList"
/// 累计时长奖励计时
static let showWatchTimeGuideTime = "showWatchTimeGuideTime_"
/// 战队消息是否已经显示过的记录
static let fightTeamCallMsgRecord = "fightTeamCallMsgRecord_"
}
// 通知名
......
......@@ -251,6 +251,18 @@ struct GDShowRoomSocketPublisher {
.listenTo(GDShowRoomSocketCID.anchorRecieveInvitableUser)
.mapToModel(GDLiveAnchorInviteSocketModel.self)
/// 战队入场秀
static let enterFightTeamShow: Observable<JSON> = GDSocketCenter.publisher
.listenTo(GDPublicFightTeamCid.enterFightTeamShow)
.mapToJSON()
static let fightTeamMessage: Observable<GDFightTeamMessageModel> = GDSocketCenter.publisher
.reply()
.listenTo(GDPublicFightTeamCid.fightTeamMsg)
.mapToModel(GDFightTeamMessageModel.self)
// MARK: PK
struct PK {
/// 收到PK邀请
......
......@@ -86,7 +86,7 @@ class GDAchievementView: GDPublicAchievementView {
}
}
func cleanFightTeamMedal() {
override func cleanFightTeamMedal() {
fightTeamMedalView.isHidden = true
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment