jsdw_ios/QuickLocation/Section/LockDistract/LockDistractVC.swift

104 lines
3.1 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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)
}
}
}