summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MySpace/proto.cpp5
-rw-r--r--MySpace/server_con.cpp80
-rw-r--r--MySpace/server_con.h3
-rw-r--r--MySpace/version.h4
4 files changed, 68 insertions, 24 deletions
diff --git a/MySpace/proto.cpp b/MySpace/proto.cpp
index 3fd3287..5d38d07 100644
--- a/MySpace/proto.cpp
+++ b/MySpace/proto.cpp
@@ -263,6 +263,9 @@ int AddToList(WPARAM wParam, LPARAM lParam) {
hContact = CreateContact(mpsr->uid, mpsr->psr.nick, mpsr->psr.email, temp ? false : true);
} else {
if(!temp) {
+ AddBuddyOnServer(mpsr->uid);
+
+ /*
ClientNetMessage msg_add;
msg_add.add_string("addbuddy", "");
msg_add.add_int("sesskey", sesskey);
@@ -270,7 +273,7 @@ int AddToList(WPARAM wParam, LPARAM lParam) {
msg_add.add_string("reason", "");
SendMessage(msg_add);
-
+ */
}
}
diff --git a/MySpace/server_con.cpp b/MySpace/server_con.cpp
index 2b524e7..4c295c0 100644
--- a/MySpace/server_con.cpp
+++ b/MySpace/server_con.cpp
@@ -133,6 +133,58 @@ int LookupUID(int uid) {
return ret;
}
+void AddAllContactsToServer() {
+ char *proto;
+ int uid;
+ HANDLE hContact = ( HANDLE )CallService( MS_DB_CONTACT_FINDFIRST, 0, 0 );
+ while ( hContact != NULL )
+ {
+ proto = ( char* )CallService( MS_PROTO_GETCONTACTBASEPROTO, ( WPARAM )hContact,0 );
+ if ( proto && !strcmp( MODULE, proto)) {
+ uid = DBGetContactSettingDword(hContact, MODULE, "UID", (DWORD)0);
+ AddBuddyOnServer(uid);
+ }
+ hContact = ( HANDLE )CallService( MS_DB_CONTACT_FINDNEXT,( WPARAM )hContact, 0 );
+ }
+}
+
+void AddBuddyOnServer(int uid) {
+ ClientNetMessage msg_add;
+ msg_add.add_string("addbuddy", "");
+ msg_add.add_int("sesskey", sesskey);
+ msg_add.add_int("newprofileid", uid);
+ msg_add.add_string("reason", "");
+
+ SendMessage(msg_add);
+
+ // update block list
+ ClientNetMessage msg_block;
+ msg_block.add_string("blocklist", "");
+ msg_block.add_int("sesskey", sesskey);
+
+ char idlist[1024];
+ mir_snprintf(idlist, 1024, "b-|%d|a+|%d", uid, uid);
+ msg_block.add_string("idlist", idlist);
+
+ SendMessage(msg_block);
+
+ // update server side list?
+ ClientNetMessage msg_srvlist;
+ msg_srvlist.add_int("persist", 1);
+ msg_srvlist.add_int("sesskey", sesskey);
+ msg_srvlist.add_int("cmd", 514);
+ msg_srvlist.add_int("dsn", 0);
+ msg_srvlist.add_int("uid", my_uid);
+ msg_srvlist.add_int("lid", 9);
+ msg_srvlist.add_int("rid", 31);
+
+ char body[1024];
+ mir_snprintf(body, 1024, "ContactID=%d", uid);
+ msg_srvlist.add_string("body", body);
+
+ SendMessage(msg_srvlist);
+}
+
HANDLE CreateContact(int uid, char *nick, char *email, bool add_buddy) {
HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_ADD, 0, 0);
@@ -146,27 +198,7 @@ HANDLE CreateContact(int uid, char *nick, char *email, bool add_buddy) {
}
- if(add_buddy) {
- ClientNetMessage msg_add;
- msg_add.add_string("addbuddy", "");
- msg_add.add_int("sesskey", sesskey);
- msg_add.add_int("newprofileid", uid);
- msg_add.add_string("reason", "");
-
- SendMessage(msg_add);
- }
-
- /*
- ClientNetMessage msg_block;
- msg_block.add_string("blocklist", "");
- msg_block.add_int("sesskey", sesskey);
-
- char idlist[1024];
- mir_snprintf(idlist, 1024, "b-|%d|a+|%d", mpsr->uid, mpsr->uid);
- msg_block.add_string("idlist", idlist);
-
- SendMessage(msg_block);
- */
+ if(add_buddy) AddBuddyOnServer(uid);
/*
// update contact details?
@@ -474,6 +506,12 @@ void __cdecl ServerThreadFunc(void*) {
msg_setinfo.add_dict("info", ld);
SendMessage(msg_setinfo);
*/
+
+ // add all contacts to server (old versions didn't do it :| )
+ if(DBGetContactSettingByte(0, MODULE, "ContactsOnServer", 0) == 0) {
+ AddAllContactsToServer();
+ DBWriteContactSettingByte(0, MODULE, "ContactsOnServer", 1);
+ }
// start mail checking thread
mir_forkthread(CheckMailThreadFunc, 0);
diff --git a/MySpace/server_con.h b/MySpace/server_con.h
index c81ce07..be73a6a 100644
--- a/MySpace/server_con.h
+++ b/MySpace/server_con.h
@@ -16,6 +16,9 @@ void SetServerStatusMessage(char *msg);
HANDLE FindContact(int uid);
HANDLE CreateContact(int uid, char *nick, char *email, bool add_buddy);
int LookupUID(int uid);
+void AddBuddyOnServer(int uid);
+
+void AddAllContactsToServer();
void SendMessage(ClientNetMessage &msg);
void DownloadAvatar(HANDLE hContact, char *url);
diff --git a/MySpace/version.h b/MySpace/version.h
index 87968ca..d6f3c11 100644
--- a/MySpace/version.h
+++ b/MySpace/version.h
@@ -4,8 +4,8 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 0
-#define __RELEASE_NUM 6
-#define __BUILD_NUM 3
+#define __RELEASE_NUM 7
+#define __BUILD_NUM 0
#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM
#define __FILEVERSION_STRING_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM