From e94c705bb01c662d934c0096480bc9a732d0e1ec Mon Sep 17 00:00:00 2001 From: watcherhd Date: Thu, 19 Jan 2012 12:21:27 +0000 Subject: FacebookRM: Version bump Version 0.0.7.0 + Support for group chats (EXPERIMENTAL!) - enable it in options ! Fixed loading contact list ! Fixed potential freeze. Total downloads: (None or statistics not available yet) Version 0.0.6.1a Reuploaded. Total downloads: (None or statistics not available yet) Version 0.0.6.1 + Returned option to close chat windows (on website) + New option to map non-standard statuses to Invisible (insetad of Online) + New option to load contacts, which have "On the Phone" status ! Fixed changing chat visibility ! Very long messages are no longer received duplicitely ! Changes and fixes related to multiuser messages and messages from people, which are not in server-list Total downloads: (None or statistics not available yet) git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@261 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- FacebookRM/contacts.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 6 deletions(-) (limited to 'FacebookRM/contacts.cpp') 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_); -- cgit v1.2.3