From 373dcb4a58edb8f8a19a1e81161780b066d2e5f9 Mon Sep 17 00:00:00 2001 From: Jaidyn Ann Date: Sun, 8 Aug 2021 21:01:42 -0500 Subject: [PATCH] Protocol message tweaks, bump API version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some chat protocol messages' names have been changed to more fitting or consistent names― e.g., "IM_AVATAR_SET" to "IM_USER_AVATAR_SET", or "IM_CONTACT_LIST_*" to "IM_ROSTER_*" (to agree with Cardie's usage of the word). The API version has been bumped― for the forseeable future (at least several months, I promise!) no compatibility-breaking changes will be introduced. Until then, any new feautures or message slots will be additive and optional. --- application/ChatProtocol.h | 2 +- application/ChatProtocolMessages.h | 86 +++++++++++++----------- application/Server.cpp | 12 ++-- application/views/RosterView.cpp | 6 +- application/windows/MainWindow.cpp | 6 +- application/windows/RosterEditWindow.cpp | 6 +- protocols/irc/IrcMain.cpp | 2 +- protocols/purple/PurpleApp.cpp | 18 ++--- protocols/purple/PurpleProtocol.cpp | 2 +- protocols/purple/PurpleProtocol.h | 1 - protocols/xmpp/JabberHandler.cpp | 18 ++--- protocols/xmpp/JabberMain.cpp | 2 +- 12 files changed, 82 insertions(+), 79 deletions(-) diff --git a/application/ChatProtocol.h b/application/ChatProtocol.h index 49add61..30d100c 100644 --- a/application/ChatProtocol.h +++ b/application/ChatProtocol.h @@ -18,7 +18,7 @@ class BBitmap; #define APP_VERSION_1_PRE_ALPHA_1 0x00000001 #define APP_VERSION_1_ALPHA_1 0x00000100 -#define APP_VERSION APP_VERSION_1_PRE_ALPHA_1 +#define APP_VERSION APP_VERSION_1_ALPHA_1 class ChatProtocolMessengerInterface { diff --git a/application/ChatProtocolMessages.h b/application/ChatProtocolMessages.h index f34db38..6fe2653 100644 --- a/application/ChatProtocolMessages.h +++ b/application/ChatProtocolMessages.h @@ -30,29 +30,29 @@ enum im_what_code { */ //! Request a server-side contact list from protocol →Protocol - IM_GET_CONTACT_LIST = 1, + IM_GET_ROSTER = 1, /*! Server-side contact list received →App Requires: Stringlist "user_id" */ - IM_CONTACT_LIST = 2, + IM_ROSTER = 2, /*! Add a contact to the roster →Protocol The slots for this message are determined by the protocol's "roster" template (ChatProtocol::SettingsTemplate("roster")) */ - IM_CONTACT_LIST_ADD_CONTACT = 3, + IM_ROSTER_ADD_CONTACT = 3, /*! Remove a contact →Protocol Requires: String "user_id" */ - IM_CONTACT_LIST_REMOVE_CONTACT = 4, + IM_ROSTER_REMOVE_CONTACT = 4, /*! Contact(s) removed from the server-side list →App Requires: String "user_id" */ - IM_CONTACT_LIST_CONTACT_REMOVED = 5, + IM_ROSTER_CONTACT_REMOVED = 5, /*! Edit some data on contact →Protocol The slots for this message are determined by the protocol's "roster" template (ChatProtocol::SettingsTemplate("roster")) */ - IM_CONTACT_LIST_EDIT_CONTACT = 6, + IM_ROSTER_EDIT_CONTACT = 6, /* @@ -79,39 +79,29 @@ enum im_what_code { Accepts: in64s "when" */ IM_LOGS_RECEIVED = 23, - /*! User started typing →App - Requires: String "chat_id", String "user_id" */ - IM_USER_STARTED_TYPING = 24, - - /*! User stopped typing →App - Requires: String "chat_id", String "user_id" */ - IM_USER_STOPPED_TYPING = 25, - /* - * Messages related to contact changes. + * Messages related changes in general users. */ - //! Change contact's status →Protocol - IM_SET_NICKNAME = 40, + /*! User's nick has changed →App */ + IM_USER_NICKNAME_SET = 40, - //! Contact's status has changed →App - IM_NICKNAME_SET = 41, + /*! Received new status for user →App + Requires: String "user_id", int32/UserStatus "status" */ + IM_USER_STATUS_SET = 41, + + /*! User's avatar icon was changed →App + Requires: String "user_id", Ref "ref" */ + IM_USER_AVATAR_SET = 42, /* * Messages related to contact's information received from protocols. */ - /*! Received contact new status →App - Requires: String "user_id", int32/UserStatus "status" */ - IM_STATUS_SET = 60, - - /*! User's avatar icon was changed →App - Requires: String "user_id", Ref "ref" */ - IM_AVATAR_SET = 61, - - //! Get contact information →Protocol + /*! Get contact information →Protocol + Requires: String "user_id" */ IM_GET_CONTACT_INFO = 62, /*! Received contact information →App @@ -120,13 +110,14 @@ enum im_what_code { int32/UserStatus "status" */ IM_CONTACT_INFO = 63, - //! Request contact information →Protocol + /*! Request contact information →Protocol + Requires: String "user_id" */ IM_GET_EXTENDED_CONTACT_INFO = 64, /*! Received contact information →App Requires: String "user_id", non-standard slots used by "roster" template - Accepts: String "user_name", String "full_name" */ + Accepts: String "user_name" */ IM_EXTENDED_CONTACT_INFO = 65, @@ -169,10 +160,10 @@ enum im_what_code { * Contacts registration. */ - //! Start listening to changes in these contact's statuses + //! Start listening to changes in these contact's statuses [unused] IM_REGISTER_CONTACTS = 100, - //! Stop listening to status changes from these contacts + //! Stop listening to status changes from these contacts [unused] IM_UNREGISTER_CONTACTS = 101, @@ -180,19 +171,19 @@ enum im_what_code { * Authorization. */ - //! Ask authorization to contact + //! Ask authorization to contact [unused] IM_ASK_AUTHORIZATION = 120, - //! Authorization response received from contact + //! Authorization response received from contact [unused] IM_AUTHORIZATION_RECEIVED = 121, - //! Authorization request received from contact + //! Authorization request received from contact [unused] IM_AUTHORIZATION_REQUEST = 122, - //! Authorization response given to contact + //! Authorization response given to contact [unused] IM_AUTHORIZATION_RESPONSE = 123, - //! Contact has been authorized + //! Contact has been authorized [unused] IM_CONTACT_AUTHORIZED = 124, @@ -388,6 +379,19 @@ enum im_what_code { IM_ROOM_UNDEAFEN_PARTICIPANT = 199, + /* + * Misc. room-related messages + */ + + /*! User started typing →App [unused] + Requires: String "chat_id", String "user_id" */ + IM_ROOM_PARTICIPANT_STARTED_TYPING = 210, + + /*! User stopped typing →App [unused] + Requires: String "chat_id", String "user_id" */ + IM_ROOM_PARTICIPANT_STOPPED_TYPING = 211, + + /* * Misc. UI messages */ @@ -403,10 +407,10 @@ enum im_what_code { * Special messages */ - //! Special message forwarded to protocol; Unused + //! Special message forwarded to protocol [unused] IM_SPECIAL_TO_PROTOCOL = 1000, - //! Special message forwarded from protocol; Unused + //! Special message forwarded from protocol [unused] IM_SPECIAL_FROM_PROTOCOL = 1001, /*! Protocol is ready →App @@ -417,8 +421,8 @@ enum im_what_code { This requests that the app delete the ChatProtocol and its ProtocolLooper― so invoking ChatProtocol::Shutdown(). This should be sent by the protocol after connection errors or a - disconnect, when the addon doesn't have anything left to do (other - than yearn for the sweet hand of death). */ + disconnect, when the addon doesn't have anything left to do other + than yearn for the sweet hand of death. */ IM_PROTOCOL_DISABLE = 1003 }; diff --git a/application/Server.cpp b/application/Server.cpp index becfd96..2d146f0 100644 --- a/application/Server.cpp +++ b/application/Server.cpp @@ -248,7 +248,7 @@ Server::ImMessage(BMessage* msg) int32 im_what = msg->FindInt32("im_what"); switch (im_what) { - case IM_CONTACT_LIST: + case IM_ROSTER: { int i = 0; BString id; @@ -257,7 +257,7 @@ Server::ImMessage(BMessage* msg) result = B_SKIP_MESSAGE; break; } - case IM_CONTACT_LIST_CONTACT_REMOVED: + case IM_ROSTER_CONTACT_REMOVED: { Contact* contact = _EnsureContact(msg); ProtocolLooper* looper = _LooperFromMessage(msg); @@ -297,7 +297,7 @@ Server::ImMessage(BMessage* msg) contact->SetNotifyName(nick.String()); break; } - case IM_STATUS_SET: + case IM_USER_STATUS_SET: { int32 status; @@ -382,7 +382,7 @@ Server::ImMessage(BMessage* msg) } break; } - case IM_AVATAR_SET: + case IM_USER_AVATAR_SET: { User* user = _EnsureUser(msg); if (!user) @@ -531,8 +531,8 @@ Server::ImMessage(BMessage* msg) invite->Go(); break; } - case IM_USER_STARTED_TYPING: - case IM_USER_STOPPED_TYPING: + case IM_ROOM_PARTICIPANT_STARTED_TYPING: + case IM_ROOM_PARTICIPANT_STOPPED_TYPING: { // User* user = _EnsureUser(); // Conversation* chat = _EnsureConversation(); diff --git a/application/views/RosterView.cpp b/application/views/RosterView.cpp index c2350c9..acc6481 100644 --- a/application/views/RosterView.cpp +++ b/application/views/RosterView.cpp @@ -112,7 +112,7 @@ RosterView::ImMessage(BMessage* msg) { int32 im_what = msg->FindInt32("im_what"); switch (im_what) { - case IM_STATUS_SET: + case IM_USER_STATUS_SET: { int32 status; int64 instance; @@ -181,7 +181,7 @@ RosterView::ImMessage(BMessage* msg) } break; } - case IM_CONTACT_LIST_CONTACT_REMOVED: + case IM_ROSTER_CONTACT_REMOVED: { int32 status = -1; int64 instance; @@ -197,7 +197,7 @@ RosterView::ImMessage(BMessage* msg) if (rosterItem) fListView->RemoveItem(rosterItem); } - case IM_AVATAR_SET: + case IM_USER_AVATAR_SET: case IM_CONTACT_INFO: case IM_EXTENDED_CONTACT_INFO: { diff --git a/application/windows/MainWindow.cpp b/application/windows/MainWindow.cpp index 78a4b43..65f0aca 100644 --- a/application/windows/MainWindow.cpp +++ b/application/windows/MainWindow.cpp @@ -308,11 +308,11 @@ MainWindow::ImMessage(BMessage* msg) delete item->GetConversation(); break; } - case IM_AVATAR_SET: - case IM_STATUS_SET: + case IM_USER_AVATAR_SET: + case IM_USER_STATUS_SET: case IM_CONTACT_INFO: case IM_EXTENDED_CONTACT_INFO: - case IM_CONTACT_LIST_CONTACT_REMOVED: { + case IM_ROSTER_CONTACT_REMOVED: { if (fRosterWindow != NULL) fRosterWindow->PostMessage(msg); if (RosterEditWindow::Check() == true) diff --git a/application/windows/RosterEditWindow.cpp b/application/windows/RosterEditWindow.cpp index fcc7c13..ede46e0 100644 --- a/application/windows/RosterEditWindow.cpp +++ b/application/windows/RosterEditWindow.cpp @@ -163,7 +163,7 @@ RosterEditWindow::MessageReceived(BMessage* message) } BMessage* edit = new BMessage(IM_MESSAGE); - edit->AddInt32("im_what", IM_CONTACT_LIST_EDIT_CONTACT); + edit->AddInt32("im_what", IM_ROSTER_EDIT_CONTACT); const char* title; if (ritem == NULL) @@ -186,7 +186,7 @@ RosterEditWindow::MessageReceived(BMessage* message) case kAddMember: { BMessage* add = new BMessage(IM_MESSAGE); - add->AddInt32("im_what", IM_CONTACT_LIST_ADD_CONTACT); + add->AddInt32("im_what", IM_ROSTER_ADD_CONTACT); TemplateWindow* win = new TemplateWindow(B_TRANSLATE(kAddTitle), "roster", add, fServer); @@ -202,7 +202,7 @@ RosterEditWindow::MessageReceived(BMessage* message) User* user = ritem->GetContact(); BMessage* rem = new BMessage(IM_MESSAGE); - rem->AddInt32("im_what", IM_CONTACT_LIST_REMOVE_CONTACT); + rem->AddInt32("im_what", IM_ROSTER_REMOVE_CONTACT); rem->AddString("user_id", user->GetId()); user->GetProtocolLooper()->PostMessage(rem); diff --git a/protocols/irc/IrcMain.cpp b/protocols/irc/IrcMain.cpp index 056285c..3dada05 100644 --- a/protocols/irc/IrcMain.cpp +++ b/protocols/irc/IrcMain.cpp @@ -46,7 +46,7 @@ friendly_signature() uint32 version() { - return APP_VERSION_1_PRE_ALPHA_1; + return APP_VERSION_1_ALPHA_1; } diff --git a/protocols/purple/PurpleApp.cpp b/protocols/purple/PurpleApp.cpp index f4a41d6..e578f9c 100644 --- a/protocols/purple/PurpleApp.cpp +++ b/protocols/purple/PurpleApp.cpp @@ -284,7 +284,7 @@ PurpleApp::ImMessage(BMessage* msg) SendMessage(purple_conversation_get_account(conv), parts); break; } - case IM_GET_CONTACT_LIST: + case IM_GET_ROSTER: { PurpleAccount* account = _AccountFromMessage(msg); @@ -297,12 +297,12 @@ PurpleApp::ImMessage(BMessage* msg) } BMessage roster(IM_MESSAGE); - roster.AddInt32("im_what", IM_CONTACT_LIST); + roster.AddInt32("im_what", IM_ROSTER); roster.AddStrings("user_id", user_ids); SendMessage(_AccountFromMessage(msg), roster); break; } - case IM_CONTACT_LIST_ADD_CONTACT: + case IM_ROSTER_ADD_CONTACT: { PurpleAccount* account = _AccountFromMessage(msg); BString user_id = msg->FindString("user_id"); @@ -317,7 +317,7 @@ PurpleApp::ImMessage(BMessage* msg) update_buddy(buddy_cache(buddy), user_id, BString(user_name)); break; } - case IM_CONTACT_LIST_REMOVE_CONTACT: + case IM_ROSTER_REMOVE_CONTACT: { PurpleAccount* account = _AccountFromMessage(msg); BString user_id = msg->FindString("user_id"); @@ -331,7 +331,7 @@ PurpleApp::ImMessage(BMessage* msg) BEntry(buddy_cache(buddy)).Remove(); break; } - case IM_CONTACT_LIST_EDIT_CONTACT: + case IM_ROSTER_EDIT_CONTACT: { PurpleAccount* account = _AccountFromMessage(msg); BString user_id = msg->FindString("user_id"); @@ -1186,7 +1186,7 @@ signal_blist_node_added(PurpleBlistNode* node) return; BMessage add(IM_MESSAGE); - add.AddInt32("im_what", IM_CONTACT_LIST); + add.AddInt32("im_what", IM_ROSTER); add.AddString("user_id", purple_buddy_get_name(buddy)); ((PurpleApp*)be_app)->SendMessage(purple_buddy_get_account(buddy), add); @@ -1215,7 +1215,7 @@ signal_blist_node_removed(PurpleBlistNode* node) return; BMessage rem(IM_MESSAGE); - rem.AddInt32("im_what", IM_CONTACT_LIST_CONTACT_REMOVED); + rem.AddInt32("im_what", IM_ROSTER_CONTACT_REMOVED); rem.AddString("user_id", purple_buddy_get_name(buddy)); ((PurpleApp*)be_app)->SendMessage(purple_buddy_get_account(buddy), rem); } @@ -1226,7 +1226,7 @@ signal_buddy_status_changed(PurpleBuddy* buddy, PurpleStatus* old_status, PurpleStatus* status) { BMessage note(IM_MESSAGE); - note.AddInt32("im_what", IM_STATUS_SET); + note.AddInt32("im_what", IM_USER_STATUS_SET); note.AddInt32("status", purple_status_to_cardie(status)); note.AddString("user_id", purple_buddy_get_name(buddy)); ((PurpleApp*)be_app)->SendMessage(purple_buddy_get_account(buddy), note); @@ -1242,7 +1242,7 @@ signal_buddy_icon_changed(PurpleBuddy* buddy) return; BMessage avatar(IM_MESSAGE); - avatar.AddInt32("im_what", IM_AVATAR_SET); + avatar.AddInt32("im_what", IM_USER_AVATAR_SET); avatar.AddString("user_id", purple_buddy_get_name(buddy)); avatar.AddRef("ref", &ref); ((PurpleApp*)be_app)->SendMessage(purple_buddy_get_account(buddy), avatar); diff --git a/protocols/purple/PurpleProtocol.cpp b/protocols/purple/PurpleProtocol.cpp index 8d26139..69fa9ff 100644 --- a/protocols/purple/PurpleProtocol.cpp +++ b/protocols/purple/PurpleProtocol.cpp @@ -85,7 +85,7 @@ friendly_signature() uint32 version() { - return APP_VERSION_1_PRE_ALPHA_1; + return APP_VERSION_1_ALPHA_1; } diff --git a/protocols/purple/PurpleProtocol.h b/protocols/purple/PurpleProtocol.h index f11d753..e690dc5 100644 --- a/protocols/purple/PurpleProtocol.h +++ b/protocols/purple/PurpleProtocol.h @@ -101,5 +101,4 @@ private: BObjectList fCommands; }; - #endif // _PURPLE_PROTOCOL_H diff --git a/protocols/xmpp/JabberHandler.cpp b/protocols/xmpp/JabberHandler.cpp index 5868441..b4c76cb 100644 --- a/protocols/xmpp/JabberHandler.cpp +++ b/protocols/xmpp/JabberHandler.cpp @@ -265,7 +265,7 @@ JabberHandler::Process(BMessage* msg) fVCardManager->fetchVCard(gloox::JID(user_id.String()), this); break; } - case IM_CONTACT_LIST_ADD_CONTACT: + case IM_ROSTER_ADD_CONTACT: { BString user_name = msg->FindString("user_name"); BString user_id; @@ -278,7 +278,7 @@ JabberHandler::Process(BMessage* msg) fClient->rosterManager()->synchronize(); break; } - case IM_CONTACT_LIST_REMOVE_CONTACT: + case IM_ROSTER_REMOVE_CONTACT: { BString user_id; if (msg->FindString("user_id", &user_id) != B_OK) @@ -288,12 +288,12 @@ JabberHandler::Process(BMessage* msg) fClient->rosterManager()->synchronize(); BMessage rm(IM_MESSAGE); - rm.AddInt32("im_what", IM_CONTACT_LIST_CONTACT_REMOVED); + rm.AddInt32("im_what", IM_ROSTER_CONTACT_REMOVED); rm.AddString("user_id", user_id); _SendMessage(&rm); break; } - case IM_CONTACT_LIST_EDIT_CONTACT: + case IM_ROSTER_EDIT_CONTACT: { BString user_id; BString user_name = msg->FindString("user_name"); @@ -1001,7 +1001,7 @@ JabberHandler::_StatusSetMsg(const char* user_id, gloox::Presence::PresenceType const char* message, const char* resource) { BMessage msg(IM_MESSAGE); - msg.AddInt32("im_what", IM_STATUS_SET); + msg.AddInt32("im_what", IM_USER_STATUS_SET); msg.AddString("user_id", user_id); msg.AddInt32("status", _GlooxStatusToApp(type)); @@ -1147,7 +1147,7 @@ JabberHandler::_AvatarChanged(const char* id, const char* filename) if (fJid.bare() == id) msg.AddInt32("im_what", IM_OWN_AVATAR_SET); else { - msg.AddInt32("im_what", IM_AVATAR_SET); + msg.AddInt32("im_what", IM_USER_AVATAR_SET); msg.AddString("user_id", id); } msg.AddRef("ref", &ref); @@ -1467,7 +1467,7 @@ JabberHandler::handleRoster(const gloox::Roster& roster) std::list msgs; BMessage contactListMsg(IM_MESSAGE); - contactListMsg.AddInt32("im_what", IM_CONTACT_LIST); + contactListMsg.AddInt32("im_what", IM_ROSTER); gloox::Roster::const_iterator it = roster.begin(); for (; it != roster.end(); ++it) { @@ -1591,10 +1591,10 @@ JabberHandler::handleChatState(const gloox::JID& from, gloox::ChatStateType stat switch (state) { case gloox::ChatStateComposing: - msg.AddInt32("im_what", IM_USER_STARTED_TYPING); + msg.AddInt32("im_what", IM_PARTICIPANT_STARTED_TYPING); break; case gloox::ChatStatePaused: - msg.AddInt32("im_what", IM_USER_STOPPED_TYPING); + msg.AddInt32("im_what", IM_PARTICIPANT_STOPPED_TYPING); break; case gloox::ChatStateGone: // TODO diff --git a/protocols/xmpp/JabberMain.cpp b/protocols/xmpp/JabberMain.cpp index ed3d56a..3cc2c52 100644 --- a/protocols/xmpp/JabberMain.cpp +++ b/protocols/xmpp/JabberMain.cpp @@ -51,7 +51,7 @@ friendly_signature() uint32 version() { - return APP_VERSION_1_PRE_ALPHA_1; + return APP_VERSION_1_ALPHA_1; }