From 81cb552e5a96b888c48502feadcc514b5d8069d3 Mon Sep 17 00:00:00 2001 From: sje Date: Tue, 10 Jul 2007 15:47:41 +0000 Subject: use undocumented 'buddy message 200' (which official client ignores) for miranda & myspace plugin version info implement adding a 'sent message' so you can see when you send a zap git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@270 4f64403b-2f21-0410-a795-97e2b3489a10 --- MySpace/server_con.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'MySpace/server_con.cpp') diff --git a/MySpace/server_con.cpp b/MySpace/server_con.cpp index 71ebe09..c79ecd3 100644 --- a/MySpace/server_con.cpp +++ b/MySpace/server_con.cpp @@ -265,7 +265,7 @@ void try_login(NetMessage &msg, HANDLE connection) { } } -void ParseStatusMessage(HANDLE hContact, PipedStringList &l) { +int ParseStatusMessage(HANDLE hContact, PipedStringList &l) { int stat = stat_myspace_to_mir(l.get_int(1)); if(stat == ID_STATUS_IDLE) { DBWriteContactSettingDword(hContact, MODULE, "IdleTS", (DWORD)time(0)); @@ -276,6 +276,7 @@ void ParseStatusMessage(HANDLE hContact, PipedStringList &l) { char smsg[512]; if(l.get_string(3, smsg, 512)) DBWriteContactSettingStringUtf(hContact, MODULE, "StatusMsg", smsg); + return stat; } void __cdecl CheckMailThreadFunc(void*) { @@ -458,6 +459,17 @@ void __cdecl ServerThreadFunc(void*) { // start mail checking thread mir_forkthread(CheckMailThreadFunc, 0); + } else if(msg.get_int("bm") == 200) { // action message + int uid = msg.get_int("f"); + if(uid) { + HANDLE hContact = FindContact(uid); + if(hContact) { + char cmv[256]; + if(msg.get_string("msg", cmv, 256)) { + DBWriteContactSettingStringUtf(hContact, MODULE, "MirVer", cmv); + } + } + } } else if(msg.get_int("bm") == 100) { // status message int uid = msg.get_int("f"); if(uid) { @@ -467,7 +479,16 @@ void __cdecl ServerThreadFunc(void*) { LookupUID(uid); } PipedStringList l = msg.get_list("msg"); - ParseStatusMessage(hContact, l); + if(ParseStatusMessage(hContact, l) == ID_STATUS_ONLINE && status != ID_STATUS_INVISIBLE) { + ClientNetMessage msg; + msg.add_int("bm", 200); + msg.add_int("sesskey", sesskey); + msg.add_int("t", DBGetContactSettingDword(hContact, MODULE, "UID", 0)); + msg.add_int("f", my_uid); + msg.add_int("cv", CLIENT_VER); + msg.add_string("msg", mir_ver); + SendMessage(msg); + } } } else if(msg.get_int("bm") == 121) { // action message int uid = msg.get_int("f"); @@ -495,6 +516,7 @@ void __cdecl ServerThreadFunc(void*) { pre.flags = PREF_UTF; pre.szMessage = rmsg; pre.timestamp = (DWORD)time(0); + pre.lParam = EVENTTYPE_ZAP; CCSDATA css = {0}; css.hContact = hContact; @@ -528,6 +550,7 @@ void __cdecl ServerThreadFunc(void*) { pre.flags = PREF_UTF; pre.szMessage = text; pre.timestamp = (DWORD)time(0); + pre.lParam = EVENTTYPE_MESSAGE; CCSDATA css = {0}; css.hContact = hContact; -- cgit v1.2.3