Enable facebook_manage_friends, so that we can actually manage friends lists. Fixes #13404.
2 // PurpleFacebookAccount.m
5 // Created by Evan Schoenberg on 1/15/09.
6 // Copyright 2009 Adium X. All rights reserved.
9 #import "PurpleFacebookAccount.h"
10 #import <Adium/AIHTMLDecoder.h>
11 #import <Adium/AIListContact.h>
12 #import <Adium/AIStatus.h>
14 @implementation PurpleFacebookAccount
16 - (const char*)protocolPlugin
18 return "prpl-bigbrownchunx-facebookim";
21 - (NSString *)webProfileStringForContact:(AIListContact *)contact
23 return [NSString stringWithFormat:NSLocalizedString(@"View %@'s Facebook profile", nil),
27 - (void)configurePurpleAccount
29 [super configurePurpleAccount];
31 /* We could add a pref for this, but not without some enhancements to mail notifications. Currently, this being
32 * enabled means ugly nasty "You have new mail!" popups continuously, since that's how 'notifications' are passed
35 purple_account_set_bool(account, "facebook_get_notifications", FALSE);
37 // We do our own history; don't let the server's history get displayed as new messages
38 purple_account_set_bool(account, "facebook_show_history", FALSE);
40 // Use friends list as groups.
41 purple_account_set_bool(account, "facebook_use_groups", TRUE);
43 // Allow for moving through libpurple
44 purple_account_set_bool(account, "facebook_manage_friends", TRUE);
49 return @"login.facebook.com";
52 - (const char *)purpleStatusIDForStatus:(AIStatus *)statusState
53 arguments:(NSMutableDictionary *)arguments
55 if (statusState.statusType == AIOfflineStatusType) {
62 - (void)setSocialNetworkingStatusMessage:(NSAttributedString *)statusMessage
64 NSMutableDictionary *arguments = [NSMutableDictionary dictionary];
65 NSString *encodedStatusMessage = (statusMessage ?
66 [self encodedAttributedString:statusMessage
69 if (encodedStatusMessage) {
70 [arguments setObject:encodedStatusMessage
74 purple_account_set_bool(account, "facebook_set_status_through_pidgin", TRUE);
75 [self setStatusState:nil
76 statusID:"available" /* facebook only supports available */
77 isActive:[NSNumber numberWithBool:YES]
79 purple_account_set_bool(account, "facebook_set_status_through_pidgin", FALSE);
82 - (NSString *)encodedAttributedString:(NSAttributedString *)inAttributedString forListObject:(AIListObject *)inListObject
84 return [AIHTMLDecoder encodeHTML:inAttributedString
87 includingColorTags:YES
90 closeStyleTagsOnFontChange:YES
95 onlyIncludeOutgoingImages:NO
98 allowJavascriptURLs:YES];
102 * @brief Set an alias for a contact
104 * Normally, we consider the name a 'serverside alias' unless it matches the UID's characters
105 * However, the UID in facebook should never be presented to the user if possible; it's for internal use
106 * only. We'll therefore consider any alias a formatted UID such that it will replace the UID when displayed
109 - (void)updateContact:(AIListContact *)theContact toAlias:(NSString *)purpleAlias
111 if (![purpleAlias isEqualToString:theContact.formattedUID] &&
112 ![purpleAlias isEqualToString:theContact.UID]) {
113 [theContact setFormattedUID:purpleAlias
117 [theContact notifyOfChangedPropertiesSilently:silentAndDelayed];