Working IRC room join + proper 110 status code sending
This commit is contained in:
parent
0a33a3100e
commit
6699a898fb
9 changed files with 49 additions and 3 deletions
|
@ -52,6 +52,8 @@ class IRCNetworkPlugin : public NetworkPlugin {
|
|||
return;
|
||||
m_sessions[user]->addAutoJoinChannel(QString::fromStdString(room));
|
||||
m_sessions[user]->join(QString::fromStdString(room), QString::fromStdString(password));
|
||||
// update nickname, because we have nickname per session, no nickname per room.
|
||||
handleRoomChanged(user, room, m_sessions[user]->nick().toStdString());
|
||||
}
|
||||
|
||||
std::map<std::string, MyIrcSession *> m_sessions;
|
||||
|
|
|
@ -1445,7 +1445,7 @@ DOT_IMAGE_FORMAT = png
|
|||
# The tag DOT_PATH can be used to specify the path where the dot tool can be
|
||||
# found. If left blank, it is assumed the dot tool can be found in the path.
|
||||
|
||||
DOT_PATH = "/usr/bin"
|
||||
DOT_PATH = ""
|
||||
|
||||
# The DOTFILE_DIRS tag can be used to specify one or more directories that
|
||||
# contain dot files that are included in the documentation (see the
|
||||
|
|
|
@ -50,6 +50,8 @@ class NetworkPlugin {
|
|||
|
||||
void handleMessage(const std::string &user, const std::string &legacyName, const std::string &message);
|
||||
|
||||
void handleRoomChanged(const std::string &user, const std::string &room, const std::string &nickname);
|
||||
|
||||
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;
|
||||
|
|
|
@ -56,6 +56,7 @@ class NetworkPluginServer {
|
|||
void handleBuddyChangedPayload(const std::string &payload);
|
||||
void handleConvMessagePayload(const std::string &payload);
|
||||
void handleParticipantChangedPayload(const std::string &payload);
|
||||
void handleRoomChangedPayload(const std::string &payload);
|
||||
|
||||
void handleUserCreated(User *user);
|
||||
void handleRoomJoined(User *user, const std::string &room, const std::string &nickname, const std::string &password);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[service]
|
||||
jid = icq.localhost
|
||||
jid = localhost
|
||||
password = secret
|
||||
server = 127.0.0.1
|
||||
port = 5222
|
||||
|
|
|
@ -53,7 +53,11 @@ void Conversation::handleMessage(boost::shared_ptr<Swift::Message> &message) {
|
|||
}
|
||||
}
|
||||
|
||||
void Conversation::handleParticipantChanged(const std::string &nickname, int flag) {
|
||||
void Conversation::handleParticipantChanged(const std::string &nick, int flag) {
|
||||
std::string nickname = nick;
|
||||
if (nickname.find("@") == 0) {
|
||||
nickname = nickname.substr(1);
|
||||
}
|
||||
Swift::Presence::ref presence = Swift::Presence::create();
|
||||
presence->setFrom(Swift::JID(m_legacyName, m_conversationManager->getComponent()->getJID().toBare(), nickname));
|
||||
presence->setTo(m_conversationManager->getUser()->getJID().toString());
|
||||
|
|
|
@ -119,6 +119,21 @@ void NetworkPlugin::handleParticipantChanged(const std::string &user, const std:
|
|||
send(message);
|
||||
}
|
||||
|
||||
void NetworkPlugin::handleRoomChanged(const std::string &user, const std::string &r, const std::string &nickname) {
|
||||
pbnetwork::Room room;
|
||||
room.set_username(user);
|
||||
room.set_nickname(nickname);
|
||||
room.set_room(r);
|
||||
room.set_password("");
|
||||
|
||||
std::string message;
|
||||
room.SerializeToString(&message);
|
||||
|
||||
WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_ROOM_NICKNAME_CHANGED);
|
||||
|
||||
send(message);
|
||||
}
|
||||
|
||||
void NetworkPlugin::handleConnected(bool error) {
|
||||
if (error) {
|
||||
std::cout << "Connecting error\n";
|
||||
|
|
|
@ -225,6 +225,24 @@ void NetworkPluginServer::handleParticipantChangedPayload(const std::string &dat
|
|||
std::cout << payload.nickname() << "\n";
|
||||
}
|
||||
|
||||
void NetworkPluginServer::handleRoomChangedPayload(const std::string &data) {
|
||||
pbnetwork::Room payload;
|
||||
if (payload.ParseFromString(data) == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
User *user = m_userManager->getUser(payload.username());
|
||||
if (!user)
|
||||
return;
|
||||
|
||||
NetworkConversation *conv = (NetworkConversation *) user->getConversationManager()->getConversation(payload.room());
|
||||
if (!conv) {
|
||||
return;
|
||||
}
|
||||
|
||||
conv->setNickname(payload.nickname());
|
||||
}
|
||||
|
||||
void NetworkPluginServer::handleConvMessagePayload(const std::string &data) {
|
||||
pbnetwork::ConversationMessage payload;
|
||||
// std::cout << "payload...\n";
|
||||
|
@ -292,6 +310,9 @@ void NetworkPluginServer::handleDataRead(boost::shared_ptr<Swift::Connection> c,
|
|||
case pbnetwork::WrapperMessage_Type_TYPE_PARTICIPANT_CHANGED:
|
||||
handleParticipantChangedPayload(wrapper.payload());
|
||||
break;
|
||||
case pbnetwork::WrapperMessage_Type_TYPE_ROOM_NICKNAME_CHANGED:
|
||||
handleRoomChangedPayload(wrapper.payload());
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -68,6 +68,7 @@ message WrapperMessage {
|
|||
TYPE_PART_ROOM = 12;
|
||||
TYPE_PARTICIPANT_CHANGED = 13;
|
||||
TYPE_PARTICIPANT_LEFT = 14;
|
||||
TYPE_ROOM_NICKNAME_CHANGED = 15;
|
||||
}
|
||||
required Type type = 1;
|
||||
optional bytes payload = 2;
|
||||
|
|
Loading…
Add table
Reference in a new issue