def refreshChat(self):
     x = {
         "for": "refreshChat",
         "data": {
             "userId": self.userId,
             "toUserId": self.toUserId,
             "lastMsgId": self.lastMsgId
         }
     }
     dataRes = sendMsg.sendData(x)
     if (dataRes["answer"] == "True"):
         self.setChat(dataRes["data"])
    def UI(self, userId, toUserId, toName):
        self.userId = userId
        self.toUserId = toUserId
        x = {
            "for": "openChat",
            "data": {
                "userId": userId,
                "toUserId": toUserId
            }
        }

        dataRes = sendMsg.sendData(x)
        if toName:
            self.toName = toName
        else:
            self.toName = ""
        try:
            self.toName = dataRes['data']['toName']
        except:
            pass
        self.setWindowTitle(f"{self.toName}'s Chat")

        self.messagesListWidget = QListWidget(self)
        self.messagesListWidget.itemClicked.connect(self.messageClicked)

        self.setChat(dataRes["data"])

        formLayout = QFormLayout()
        backBtn = QPushButton("Back")
        backBtn.clicked.connect(self.backToMain)
        formLayout.addRow(backBtn)

        self.message_input = QLineEdit()
        formLayout.addRow(self.message_input)

        sendBtn = QPushButton("Send")
        sendBtn.clicked.connect(self.sendMessage)
        # formLayout.addRow(sendBtn)

        refreshBtn = QPushButton("Refresh")
        refreshBtn.clicked.connect(self.refreshChat)
        formLayout.addRow(sendBtn, refreshBtn)

        formLayout.addRow(self.messagesListWidget)

        self.setLayout(formLayout)
        # self.userId = userId
        self.show()
 def login(self):
     if (len(self.login_username_input.text()) >= 3
             and len(self.login_password_input.text()) >= 3):
         x = {
             "for": "login",
             "data": {
                 "username": self.login_username_input.text(),
                 "password": self.login_password_input.text()
             }
         }
         dataRes = sendMsg.sendData(x)
         if (dataRes["for"] == "login"):
             if (dataRes["answer"] == "True"):
                 # self.hide()
                 self.chats(dataRes["data"]["userId"])
     else:
         self.loginErrorLabel.setText(
             "Please fill all 3 inputs below with at least 3 char")
    def UI(self, userId):
        self.searchUsers = []
        x = {
            "for": "getChats",
            "data":
            {
                "userId": userId
            }
        }

        dataRes = sendMsg.sendData(x)

        self.chatList = dataRes["data"]["users"]
        self.savedUsers = self.chatList
        chatListNames = []

        for user in self.chatList:
            chatListNames.append(user["name"])

        name = dataRes["data"]["name"]
        self.setWindowTitle(f"Hi, {name}")

        self.namesListWidget = QListWidget(self)
        self.namesListWidget.addItems(chatListNames)
        self.namesListWidget.itemClicked.connect(self.openChat)

        formLayout = QFormLayout()

        self.searchInput = QLineEdit()
        self.searchBtn = QPushButton("search")
        self.searchBtn.clicked.connect(self.searchUser)
        self.allUsersBtn = QPushButton("Show all my chatss")
        self.allUsersBtn.clicked.connect(self.backToAllUsers)

        hbox = QHBoxLayout()
        hbox.addWidget(self.searchInput)
        hbox.addWidget(self.searchBtn)
        hbox.addWidget(self.allUsersBtn)
        formLayout.addRow(hbox)
        formLayout.addRow(self.namesListWidget)

        self.setLayout(formLayout)
        self.userId = userId
        self.show()
    def register(self):
        if (len(self.reg_name_input.text()) >= 3
                and len(self.reg_userName_input.text()) >= 3
                and len(self.reg_pass_input.text()) >= 3):
            x = {
                "for": "register",
                "data": {
                    "name": self.reg_name_input.text(),
                    "username": self.reg_userName_input.text(),
                    "password": self.reg_pass_input.text()
                }
            }

            dataRes = sendMsg.sendData(x)
            if (dataRes["answer"] == "True"):
                self.chats(dataRes["data"]["userId"])
        else:
            self.registerErrorLabel.setText(
                "Please fill all 3 inputs below with at least 3 char")
    def searchUser(self):
        if (self.searchInput.text() != ""):
            x = {
                "for": "searchUsers",
                "data": {
                    "txt": self.searchInput.text(),
                    "userId": self.userId
                }
            }
            dataRes = sendMsg.sendData(x)
            if(dataRes["answer"][0].lower() == "t"):
                self.chatList = dataRes["data"]["users"]
                self.isInSearch = True
                self.namesListWidget.clear()
                for user in self.chatList:
                    self.namesListWidget.addItem(user["name"])

        else:
            print("")
    def sendMessage(self):
        self.refreshChat()
        if (self.message_input.text() != ""):
            x = {
                "for": "sendMessage",
                "data": {
                    "userId": self.userId,
                    "toUserId": self.toUserId,
                    "text": self.message_input.text()
                }
            }

            dataRes = sendMsg.sendData(x)
            if (dataRes["answer"] == "True"):
                text = self.message_input.text()
                time = str(dataRes['data']['time'])
                self.messagesListWidget.insertItem(
                    0, f"you: {text}\n{time[11:-3]}")
                self.message_input.setText("")
                self.lastMsgId = dataRes["data"]["msgId"]