diff options
Diffstat (limited to 'FacebookRM/contacts.cpp')
-rw-r--r-- | FacebookRM/contacts.cpp | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/FacebookRM/contacts.cpp b/FacebookRM/contacts.cpp index de01800..1f0a007 100644 --- a/FacebookRM/contacts.cpp +++ b/FacebookRM/contacts.cpp @@ -68,7 +68,7 @@ HANDLE FacebookProto::ContactIDToHContact(std::string user_id) return 0;
}
-HANDLE FacebookProto::AddToContactList(facebook_user* fbu, bool dont_check)
+HANDLE FacebookProto::AddToContactList(facebook_user* fbu, bool dont_check, const char *new_name)
{
HANDLE hContact;
@@ -98,7 +98,13 @@ HANDLE FacebookProto::AddToContactList(facebook_user* fbu, bool dont_check) DBWriteContactSettingTString(hContact,"CList","Group",dbv.ptszVal);
DBFreeVariant(&dbv);
}
-
+
+ if (strlen(new_name) > 0) {
+ DBWriteContactSettingUTF8String(hContact, m_szModuleName, FACEBOOK_KEY_NAME, new_name);
+ DBWriteContactSettingUTF8String(hContact, m_szModuleName, FACEBOOK_KEY_NICK, new_name);
+ DBWriteContactSettingByte(hContact, m_szModuleName, FACEBOOK_KEY_CONTACT_TYPE, 1); // We suppose he is not on server list
+ }
+
if (getByte(FACEBOOK_KEY_DISABLE_STATUS_NOTIFY, 0))
CallService(MS_IGNORE_IGNORE, (WPARAM)hContact, (LPARAM)IGNOREEVENT_USERONLINE);
@@ -154,10 +160,46 @@ void FacebookProto::DeleteContactFromServer(void *data) if (resp.code != HTTP_CODE_OK) {
facy.handle_error( "DeleteContactFromServer" );
}
+
+ NotifyEvent(TranslateT("Deleting contact"), TranslateT("Contact was sucessfully removed from server."), NULL, FACEBOOK_EVENT_OTHER, NULL);
+
+ delete data;
+}
+
+void FacebookProto::AddContactToServer(void *data)
+{
+ facy.handle_entry( "AddContactToServer" );
+
+ if ( data == NULL )
+ return;
+
+ std::string *id = (std::string*)data;
+ std::string query = "action=add_friend&how_found=profile_button&ref_param=ts&outgoing_id=&unwanted=&logging_location=&no_flyout_on_click=false&ego_log_data=&post_form_id_source=AsyncRequest&lsd=&fb_dtsg=";
+ query += facy.dtsg_;
+ query += "&post_form_id=";
+ query += facy.post_form_id_;
+ query += "&to_friend=";
+ query += *id;
+ query += "&__user=";
+ query += facy.self_.user_id;
+
+ // Get unread inbox threads
+ http::response resp = facy.flap( FACEBOOK_REQUEST_ADD_FRIEND, &query );
+
+ // Process result data
+ facy.validate_response(&resp);
+
+ if (resp.code != HTTP_CODE_OK || resp.data.find("\"success\":true") == std::string::npos) {
+ facy.handle_error( "AddContactToServer" );
+ }
+// RM TODO: better notify...
+ NotifyEvent(TranslateT("Adding contact"), TranslateT("Request for friendship was sent successfully."), NULL, FACEBOOK_EVENT_OTHER, NULL);
+
delete data;
}
+
HANDLE FacebookProto::GetAwayMsg(HANDLE hContact)
{
return 0; // Status messages are disabled
@@ -169,7 +211,7 @@ int FacebookProto::OnContactDeleted(WPARAM wparam,LPARAM) if (IsMyContact(hContact))
{
- if (!DBGetContactSettingByte(hContact,m_szModuleName,FACEBOOK_KEY_DELETE_NEXT,0)) {
+// if (!DBGetContactSettingByte(hContact,m_szModuleName,FACEBOOK_KEY_DELETE_NEXT,0)) {
if (MessageBox( 0, TranslateT("Do you want to delete this contact also from server list?"), m_tszUserName, MB_ICONWARNING | MB_YESNO | MB_DEFBUTTON2 ) == IDYES) {
DBVARIANT dbv;
if( !DBGetContactSettingString(hContact,m_szModuleName,FACEBOOK_KEY_ID,&dbv) )
@@ -179,16 +221,17 @@ int FacebookProto::OnContactDeleted(WPARAM wparam,LPARAM) ForkThread( &FacebookProto::DeleteContactFromServer, this, ( void* )id );
DBFreeVariant(&dbv);
} else {
- facebook_user fbu;
+/* facebook_user fbu;
fbu.user_id = dbv.pszVal;
hContact = AddToContactList(&fbu);
DBWriteContactSettingByte(hContact,m_szModuleName,FACEBOOK_KEY_DELETE_NEXT,1);
- facy.client_notify(TranslateT("Contact will be deleted at next login."));
+ facy.client_notify(TranslateT("Contact will be deleted at next login."));*/
+ NotifyEvent(TranslateT("Deleting contact"), TranslateT("Contact wasn't deleted, because you are not connected."), NULL, FACEBOOK_EVENT_OTHER, NULL);
}
}
}
- }
+// }
ScopedLock s(facy.buddies_lock_);
|