// // HomeViewModel.swift // QuickLocation // // Created by 八条 on 2026/5/30. // import RxSwift import RxDataSources import ObjectMapper typealias GroupMemberListSectionModel = SectionModel class HomeViewModel { struct Output { var sectionedItems: Observable<[GroupMemberListSectionModel]> } let output: Output private var disposeBag = DisposeBag() private let sectionedItems = PublishSubject<[GroupMemberListSectionModel]>() lazy var cellAction: Action = { this in return Action { model in return .empty() } }(self) var groupModel: GroupModel? { didSet { guard let model = groupModel else { return } loadGroupMemberList(model.select_group_employee) } } // 当前选中的圈子 var groupInfo: [String: Any] { get { guard let model = groupModel, let groupInfoModel = model.groups.first(where: { $0.group_key == model.default_group_key }) else { return [:] } return groupInfoModel.toJSON() } } // 圈子名字 var groupName: String { get { guard let model = groupModel else { return "我的圈子" } return model.groups.first(where: { $0.group_key == model.default_group_key })?.name ?? "" } } // 圈子成员数 var memberCount: Int { get { guard let model = groupModel else { return 0 } return model.select_group_employee.count } } // 圈子成员在线数 var memberOnlineCount: Int { get { guard let model = groupModel else { return 0 } return model.select_group_employee.filter { $0.is_online == true}.count } } // 是否当前用户 func isCurrentUser(id: String) -> Bool { id == AppContextManager.shared.userId } // 是否圈主 func isGroupOwn(id: String) -> Bool { guard let model = groupModel else { return false } return model.default_group_key.contains(id) } func loadGroupMemberList(_ list: [GroupMemberModel]) { // 调整圈子成为位置 圈主 -> 本人 -> 成员 var tempList = list tempList.moveToFirst { isGroupOwn(id: $0.user_id) } sectionedItems.onNext(tempList.mapSection()) } // MARK: - Init init() { output = Output( sectionedItems: sectionedItems.asObservable() ) } }