-1

I have the following code: ( Inside: ServerApiManager.sharedInstance.fetchMessages is a function for call api ).

The result returned is:

====didRequestReloadThread ATC Chat Thread

DispatchQueue.global

633

fetchMessages

DispatchQueue.global

633

fetchMessages

ServerApiManager.sharedInstance.fetchMessage

DispatchQueue

DispatchQueue messagesCollectionView

ServerApiManager.sharedInstance.fetchMessage

DispatchQueue

DispatchQueue messagesCollectionView

==> Wrong result because of duplicate.

Expected results are:

====didRequestReloadThread ATC Chat Thread

DispatchQueue.global

633

fetchMessages

ServerApiManager.sharedInstance.fetchMessage

DispatchQueue

DispatchQueue messagesCollectionView

Can anyone help ?

DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + 5) {

            print("DispatchQueue.global")
            if(self.messages.count > 0){
                let lastMessage = self.messages[self.messages.count-1]
                print(633)
                ServerApiManager.sharedInstance.fetchMessages(channel: self.channel, minId: lastMessage.id ?? 0, loggedInUser: self.user, onSuccess: { (messages) -> () in
                    self.messages.append(contentsOf: messages)
                    print("ServerApiManager.sharedInstance.fetchMessage")
                    MessageStorage.sharedInstance.messageDic[self.channel.id] = self.messages
                    print("DispatchQueue")
                    DispatchQueue.main.async {
                        print("DispatchQueue messagesCollectionView" )
                        self.messagesCollectionView.reloadData()
                        self.messagesCollectionView.scrollToBottom()
                    }

                }, onFailure: { (msg, logged) -> () in

                });
            }
}
Keshu R.
  • 5,045
  • 1
  • 18
  • 38

1 Answers1

0

As the logs shows us, this code block called two times. So, you should check where you call this code and find why it is called it two times. You can use break ponits to check stack trace to find where this method called second time.

Ekrem Duvarbasi
  • 189
  • 1
  • 7