// // RoomsListViewModel.swift // Chat // // Created by Sergey Tarasov on 10.08.2022. // import Foundation import XMPPFramework import XMPPFrameworkSwift final class RoomsListViewModel: NSObject, ObservableObject { let muc: XMPPMUCLight = XMPPMUCLight() @Published var rooms: [Room] = [] var timer: Timer? override init() { super.init() self.muc.activate(XMPPController.shared.xmppStream) self.muc.addDelegate(self, delegateQueue: .main) self.timer = Timer(timeInterval: 2, repeats: true, block: { [weak self] timer in self?.fetchRooms() if !(self?.rooms.isEmpty ?? false) { timer.invalidate() } }) } func fetchRooms() { let success = self.muc.discoverRooms(forServiceNamed: "chat.msg.sharix-app.org") print(success) } } extension RoomsListViewModel: XMPPMUCLightDelegate { func xmppMUCLight(_ sender: XMPPMUCLight, didDiscoverRooms rooms: [DDXMLElement], forServiceNamed serviceName: String) { debugPrint(rooms) self.rooms = rooms.map({ Room(jidString: $0.attributeStringValue(forName: "jid") ?? "", name: $0.attributeStringValue(forName: "name") ?? "") }) } }