150 lines
5.3 KiB
Swift
150 lines
5.3 KiB
Swift
//
|
|
// GroupSettingVC.swift
|
|
// QuickLocation
|
|
//
|
|
// Created by 八条 on 2026/6/9.
|
|
//
|
|
|
|
import UIKit
|
|
import RxSwift
|
|
import RxCocoa
|
|
import RxDataSources
|
|
import ObjectMapper
|
|
|
|
class GroupSettingVC: BaseViewController {
|
|
|
|
fileprivate var rootView: GroupSettingView!
|
|
|
|
override func loadView() {
|
|
rootView = GroupSettingView(frame: UIScreen.main.bounds)
|
|
view = rootView
|
|
}
|
|
|
|
private var viewModel: GroupSettingViewModel
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
// Do any additional setup after loading the view.
|
|
reactiveAction()
|
|
requestGroupInfo()
|
|
}
|
|
|
|
// MARK: - Actions
|
|
private func reactiveAction() {
|
|
// 更换名称
|
|
rootView.groupNameView.rx.tapGesture.subscribe { _ in
|
|
guard let model = self.viewModel.groupModel, model.is_owner else { return }
|
|
let vc = TextInputViewController(title: "圈子名称", maxLength: 10, initialText: model.name) { text in
|
|
self.requestEditName(text)
|
|
}
|
|
self.present(vc, animated: true, completion: nil)
|
|
}.disposed(by: disposeBag)
|
|
|
|
// 修改描述
|
|
rootView.groupDescView.rx.tapGesture.subscribe { _ in
|
|
guard let model = self.viewModel.groupModel, model.is_owner else { return }
|
|
let vc = TextInputViewController(title: "圈子描述", maxLength: 40, initialText: model.description) { text in
|
|
self.requestEditDesc(text)
|
|
}
|
|
self.present(vc, animated: true, completion: nil)
|
|
}.disposed(by: disposeBag)
|
|
|
|
// 更换图标
|
|
rootView.groupIconView.rx.tapGesture.subscribe { _ in
|
|
guard let model = self.viewModel.groupModel, model.is_owner else { return }
|
|
let vc = GroupIconListVC(iconIndex: "\(model.icon_index)")
|
|
vc.onSelectIcon = { index in
|
|
self.requestChangeIcon(index)
|
|
}
|
|
self.navigationController?.pushViewController(vc, animated: true)
|
|
}.disposed(by: disposeBag)
|
|
|
|
// 审核开关
|
|
rootView.switchBtn.rx.isOn
|
|
.subscribe(onNext: { isOn in
|
|
guard let model = self.viewModel.groupModel, model.is_owner else { return }
|
|
self.requestChangeReview(isOn)
|
|
})
|
|
.disposed(by: disposeBag)
|
|
|
|
// 标签
|
|
rootView.tagView.rx.tapGesture.subscribe { _ in
|
|
guard let model = self.viewModel.groupModel, model.is_owner else { return }
|
|
GroupTagListView.show(selectedTagList: model.labels) { tagList in
|
|
guard let model = self.viewModel.groupModel,
|
|
model.is_owner,
|
|
let list = tagList else { return }
|
|
self.requestEditLabels(labels: list)
|
|
}
|
|
}.disposed(by: disposeBag)
|
|
|
|
// 邀请成员
|
|
rootView.inviteView.rx.tapGesture.subscribe(onNext: { _ in
|
|
guard let model = self.viewModel.groupModel else { return }
|
|
AppRouter.push(Route.inviteJoin, userInfo: ["groupInfo": model.toJSON()])
|
|
}).disposed(by: disposeBag)
|
|
}
|
|
|
|
// MARK: - API
|
|
private func requestGroupInfo() {
|
|
DLToast.showLoading()
|
|
GroupService.groupInfoByKey(viewModel.groupId).subscribe { response in
|
|
DLToast.dismiss()
|
|
guard let model = response.model else { return }
|
|
self.viewModel.groupModel = model
|
|
self.rootView.setupData(model)
|
|
}.disposed(by: disposeBag)
|
|
}
|
|
|
|
private func requestChangeIcon(_ iconIndex: Int) {
|
|
DLToast.showLoading()
|
|
GroupService.changeIcon(requestData: ["group_key": viewModel.groupId, "icon_index": iconIndex]).subscribe { response in
|
|
DLToast.dismiss()
|
|
self.requestGroupInfo()
|
|
}.disposed(by: disposeBag)
|
|
}
|
|
|
|
private func requestChangeReview(_ review: Bool) {
|
|
DLToast.showLoading()
|
|
GroupService.changeReview(requestData: ["group_key": viewModel.groupId, "review": review]).subscribe { response in
|
|
DLToast.dismiss()
|
|
self.requestGroupInfo()
|
|
}.disposed(by: disposeBag)
|
|
}
|
|
|
|
private func requestEditName(_ name: String) {
|
|
DLToast.showLoading()
|
|
GroupService.editName(requestData: ["group_key": viewModel.groupId, "group_name": name]).subscribe { response in
|
|
DLToast.dismiss()
|
|
self.requestGroupInfo()
|
|
}.disposed(by: disposeBag)
|
|
}
|
|
|
|
private func requestEditDesc(_ desc: String) {
|
|
DLToast.showLoading()
|
|
GroupService.editDesc(requestData: ["group_key": viewModel.groupId, "description": desc]).subscribe { response in
|
|
DLToast.dismiss()
|
|
self.requestGroupInfo()
|
|
}.disposed(by: disposeBag)
|
|
}
|
|
|
|
private func requestEditLabels(labels: [String]) {
|
|
DLToast.showLoading()
|
|
GroupService.editLabels(requestData: ["group_key": viewModel.groupId, "labels": labels]).subscribe { response in
|
|
DLToast.dismiss()
|
|
self.requestGroupInfo()
|
|
}.disposed(by: disposeBag)
|
|
}
|
|
|
|
// MARK: - Init
|
|
init(groupId: String) {
|
|
self.viewModel = GroupSettingViewModel(groupId: groupId)
|
|
super.init(nibName: nil, bundle: nil)
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|