Skip to content

Instantly share code, notes, and snippets.

@Krishna21Soni13
Krishna21Soni13 / ChatDetailsTableView.swift
Created January 3, 2020 11:04
Configure the MessageViewModel
private func configureViewModel() {
messageViewModel.arrMessage.subscribe { [weak self] (result: [Message]) in
guard let self = self else {
return
}
self.reloadData()
self.scrollToBottom(animated: false)
@Krishna21Soni13
Krishna21Soni13 / ChatListTableView.swift
Created January 3, 2020 10:59
Configure chat view model.
private func configureViewModel() {
guard let name = nickName else {
return
}
chatViewModel.arrUsers.subscribe {[weak self] (result: [User]) in
guard let self = self else {
return
@Krishna21Soni13
Krishna21Soni13 / ChatViewModel.swift
Created January 3, 2020 10:57
ChatViewModel- To fetch the participant list
func fetchParticipantList(_ name: String) {
SocketHelper.shared.participantList {[weak self] (result: [User]?) in
guard let self = self,
let users = result else{
return
}
var filterUsers: [User] = users
@Krishna21Soni13
Krishna21Soni13 / ChatListViewController.swift
Created January 3, 2020 10:54
Configure chat list table view.
private func configureTableView() {
guard let tblChatList = tblChatList else {
return
}
tblChatList.onDidSelect = { [weak self] (user: User) in
guard let self = self,
let name = self.nickName else {
@objc func exitButtonCLK() {
guard let name = nickName else {
return
}
SocketHelper.shared.leaveChatRoom(nickname: name) { [weak self] in
guard let self = self else {
return
}
@Krishna21Soni13
Krishna21Soni13 / JoinChatViewController.swift
Created January 3, 2020 10:39
JoinChatViewController- Join chat
SocketHelper.shared.joinChatRoom(nickname: nickName) { [weak self] in
guard let nickName = textfield.text,
let self = self else{
return
}
self.moveToNextScreen(nickName)
}
@Krishna21Soni13
Krishna21Soni13 / SocketHelper.swift
Created January 3, 2020 10:32
To get the messages.
func getMessage(completion: @escaping (_ messageInfo: Message?) -> Void) {
guard let socket = manager?.defaultSocket else {
return
}
socket.on("newChatMessage") { (dataArray, socketAck) -> Void in
var messageInfo = [String: Any]()
@Krishna21Soni13
Krishna21Soni13 / SocketHelper.swift
Created January 3, 2020 10:31
To send the message.
func sendMessage(message: String, withNickname nickname: String) {
guard let socket = manager?.defaultSocket else {
return
}
socket.emit("chatMessage", nickname, message)
}
@Krishna21Soni13
Krishna21Soni13 / SocketHelper.swift
Created January 3, 2020 10:28
To get the participant list.
func participantList(completion: @escaping (_ userList: [User]?) -> Void) {
guard let socket = manager?.defaultSocket else {
return
}
socket.on(kUserList) { [weak self] (result, ack) -> Void in
guard result.count > 0,
let _ = self,
@Krishna21Soni13
Krishna21Soni13 / SocketHelper.swift
Created January 3, 2020 10:27
Leave the chat room.
func leaveChatRoom(nickname: String, completion: () -> Void) {
guard let socket = manager?.defaultSocket else{
return
}
socket.emit(kExitUser, nickname)
completion()
}