/* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include namespace Swift { ChatStateTracker::ChatStateTracker() { currentState_ = ChatState::Gone; } void ChatStateTracker::handleMessageReceived(std::shared_ptr message) { if (message->getType() == Message::Error) { return; } std::shared_ptr statePayload = message->getPayload(); if (statePayload) { changeState(statePayload->getChatState()); } } void ChatStateTracker::handlePresenceChange(std::shared_ptr newPresence) { if (newPresence->getType() == Presence::Unavailable) { onChatStateChange(ChatState::Gone); } } void ChatStateTracker::changeState(ChatState::ChatStateType state) { if (state != currentState_) { currentState_ = state; onChatStateChange(state); } } }