Untested Attenion from legacy network -> XMPP
This commit is contained in:
parent
fb420ef125
commit
67c1817031
5 changed files with 53 additions and 1 deletions
|
@ -913,6 +913,14 @@ static void buddyTypingStopped(PurpleAccount *account, const char *who, gpointer
|
|||
np->handleBuddyStoppedTyping(np->m_accounts[account], w);
|
||||
}
|
||||
|
||||
static void gotAttention(PurpleAccount *account, const char *who, PurpleConversation *conv, guint type) {
|
||||
std::string w = who;
|
||||
size_t pos = w.find("/");
|
||||
if (pos != std::string::npos)
|
||||
w.erase((int) pos, w.length() - (int) pos);
|
||||
np->handleAttention(np->m_accounts[account], w, "");
|
||||
}
|
||||
|
||||
static bool initPurple(Config &cfg) {
|
||||
bool ret;
|
||||
|
||||
|
@ -958,6 +966,7 @@ static bool initPurple(Config &cfg) {
|
|||
purple_signal_connect(purple_conversations_get_handle(), "buddy-typing", &conversation_handle, PURPLE_CALLBACK(buddyTyping), NULL);
|
||||
purple_signal_connect(purple_conversations_get_handle(), "buddy-typed", &conversation_handle, PURPLE_CALLBACK(buddyTyped), NULL);
|
||||
purple_signal_connect(purple_conversations_get_handle(), "buddy-typing-stopped", &conversation_handle, PURPLE_CALLBACK(buddyTypingStopped), NULL);
|
||||
purple_signal_connect(purple_conversations_get_handle(), "got-attention", &conversation_handle, PURPLE_CALLBACK(gotAttention), NULL);
|
||||
purple_signal_connect(purple_connections_get_handle(), "signed-on", &blist_handle,PURPLE_CALLBACK(signed_on), NULL);
|
||||
// purple_signal_connect(purple_blist_get_handle(), "buddy-removed", &blist_handle,PURPLE_CALLBACK(buddyRemoved), NULL);
|
||||
// purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", &blist_handle,PURPLE_CALLBACK(buddySignedOn), NULL);
|
||||
|
|
|
@ -66,6 +66,8 @@ class NetworkPlugin {
|
|||
|
||||
void handleAuthorization(const std::string &user, const std::string &buddyName);
|
||||
|
||||
void handleAttention(const std::string &user, const std::string &buddyName, const std::string &message);
|
||||
|
||||
virtual void handleLoginRequest(const std::string &user, const std::string &legacyName, const std::string &password) = 0;
|
||||
virtual void handleLogoutRequest(const std::string &user, const std::string &legacyName) = 0;
|
||||
virtual void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message) = 0;
|
||||
|
|
|
@ -69,6 +69,7 @@ class NetworkPluginServer {
|
|||
void handleVCardPayload(const std::string &payload);
|
||||
void handleChatStatePayload(const std::string &payload, Swift::ChatState::ChatStateType type);
|
||||
void handleAuthorizationPayload(const std::string &payload);
|
||||
void handleAttentionPayload(const std::string &payload);
|
||||
|
||||
void handleUserCreated(User *user);
|
||||
void handleRoomJoined(User *user, const std::string &room, const std::string &nickname, const std::string &password);
|
||||
|
|
|
@ -73,7 +73,20 @@ void NetworkPlugin::handleMessage(const std::string &user, const std::string &le
|
|||
m.SerializeToString(&message);
|
||||
|
||||
WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_CONV_MESSAGE);
|
||||
// std::cout << "SENDING MESSAGE\n";
|
||||
|
||||
send(message);
|
||||
}
|
||||
|
||||
void NetworkPlugin::handleAttention(const std::string &user, const std::string &buddyName, const std::string &msg) {
|
||||
pbnetwork::ConversationMessage m;
|
||||
m.set_username(user);
|
||||
m.set_buddyname(buddyName);
|
||||
m.set_message(msg);
|
||||
|
||||
std::string message;
|
||||
m.SerializeToString(&message);
|
||||
|
||||
WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_ATTENTION);
|
||||
|
||||
send(message);
|
||||
}
|
||||
|
|
|
@ -400,6 +400,30 @@ void NetworkPluginServer::handleConvMessagePayload(const std::string &data, bool
|
|||
conv->handleMessage(msg, payload.nickname());
|
||||
}
|
||||
|
||||
void NetworkPluginServer::handleAttentionPayload(const std::string &data) {
|
||||
pbnetwork::ConversationMessage payload;
|
||||
if (payload.ParseFromString(data) == false) {
|
||||
// TODO: ERROR
|
||||
return;
|
||||
}
|
||||
|
||||
User *user = m_userManager->getUser(payload.username());
|
||||
if (!user)
|
||||
return;
|
||||
|
||||
boost::shared_ptr<Swift::Message> msg(new Swift::Message());
|
||||
msg->setBody(payload.message());
|
||||
msg->addPayload(boost::make_shared<Swift::AttentionPayload>());
|
||||
|
||||
NetworkConversation *conv = (NetworkConversation *) user->getConversationManager()->getConversation(payload.buddyname());
|
||||
if (!conv) {
|
||||
conv = new NetworkConversation(user->getConversationManager(), payload.buddyname());
|
||||
conv->onMessageToSend.connect(boost::bind(&NetworkPluginServer::handleMessageReceived, this, _1, _2));
|
||||
}
|
||||
|
||||
conv->handleMessage(msg);
|
||||
}
|
||||
|
||||
void NetworkPluginServer::handleDataRead(Client *c, const Swift::SafeByteArray &data) {
|
||||
c->data.insert(c->data.end(), data.begin(), data.end());
|
||||
while (c->data.size() != 0) {
|
||||
|
@ -463,6 +487,9 @@ void NetworkPluginServer::handleDataRead(Client *c, const Swift::SafeByteArray &
|
|||
case pbnetwork::WrapperMessage_Type_TYPE_AUTH_REQUEST:
|
||||
handleAuthorizationPayload(wrapper.payload());
|
||||
break;
|
||||
case pbnetwork::WrapperMessage_Type_TYPE_ATTENTION:
|
||||
handleAttentionPayload(wrapper.payload());
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue