104 lines
3.1 KiB
Swift
104 lines
3.1 KiB
Swift
//
|
||
// LockDistractVC.swift
|
||
// QuickLocation
|
||
//
|
||
|
||
import UIKit
|
||
import RxSwift
|
||
import RxCocoa
|
||
|
||
final class LockDistractVC: BaseViewController {
|
||
|
||
private var rootView: LockDistractView!
|
||
private var groupModel: GroupModel?
|
||
private var members: [GroupMemberModel] = []
|
||
private var selectedIndex = 0
|
||
|
||
override var isNavigationBarHidden: Bool { true }
|
||
|
||
override func loadView() {
|
||
rootView = LockDistractView(frame: UIScreen.main.bounds)
|
||
view = rootView
|
||
}
|
||
|
||
override func viewDidLoad() {
|
||
super.viewDidLoad()
|
||
view.backgroundColor = UIColor(hexStr: "#FAFAFA")
|
||
bind()
|
||
loadGroupMembers()
|
||
}
|
||
|
||
private func bind() {
|
||
rootView.navView.onBackTapped = { [weak self] in
|
||
self?.navigationController?.popViewController(animated: true)
|
||
}
|
||
|
||
rootView.switchGroupBtn.rx.tap
|
||
.subscribe(onNext: { [weak self] in
|
||
self?.switchGroup()
|
||
})
|
||
.disposed(by: disposeBag)
|
||
|
||
rootView.memberPrevBtn.rx.tap
|
||
.subscribe(onNext: { [weak self] in
|
||
self?.stepMember(-1)
|
||
})
|
||
.disposed(by: disposeBag)
|
||
|
||
rootView.memberNextBtn.rx.tap
|
||
.subscribe(onNext: { [weak self] in
|
||
self?.stepMember(1)
|
||
})
|
||
.disposed(by: disposeBag)
|
||
|
||
// 未获取 / 锁定:本期不接业务
|
||
rootView.notFetchedView.rx.tapGesture
|
||
.subscribe(onNext: { _ in
|
||
/// TODO
|
||
}).disposed(by: disposeBag)
|
||
}
|
||
|
||
private func loadGroupMembers() {
|
||
GroupService.groupInfo().subscribe(onNext: { [weak self] response in
|
||
guard let self, let model = response.model else { return }
|
||
self.groupModel = model
|
||
self.members = model.select_group_employee
|
||
self.selectedIndex = 0
|
||
self.refreshMember()
|
||
self.rootView.setTodayLockCount(0)
|
||
}).disposed(by: disposeBag)
|
||
}
|
||
|
||
private func stepMember(_ delta: Int) {
|
||
guard !members.isEmpty else { return }
|
||
let count = members.count
|
||
selectedIndex = (selectedIndex + delta + count) % count
|
||
refreshMember()
|
||
}
|
||
|
||
private func refreshMember() {
|
||
guard members.indices.contains(selectedIndex) else {
|
||
rootView.configureMember(name: " ", avatar: nil)
|
||
return
|
||
}
|
||
let m = members[selectedIndex]
|
||
rootView.configureMember(name: m.nick_name, avatar: m.userIcon)
|
||
}
|
||
|
||
private func switchGroup() {
|
||
guard let groupModel else {
|
||
loadGroupMembers()
|
||
return
|
||
}
|
||
GroupListPopView.show(groupModel: groupModel) { [weak self] groupKey in
|
||
guard let self, let key = groupKey else { return }
|
||
GroupService.operate(opType: "setdefault", requestData: ["group_key": key])
|
||
.subscribe(onNext: { [weak self] _ in
|
||
NotificationCenter.default.post(name: .RefreshGroupInfoNotification, object: nil)
|
||
self?.loadGroupMembers()
|
||
})
|
||
.disposed(by: self.disposeBag)
|
||
}
|
||
}
|
||
}
|