Adium

Changeset 15677

Show
Ignore:
Timestamp:
04/07/2006 06:11:44 PM (3 years ago)
Author:
evands
Message:

We no longer send HTML to ICQ and mobile contacts over joscar. Fixes #3517

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Plugins/joscar Service/RAFjoscarAccount.m

    r15633 r15677  
    239239                        if (shouldReconnect) { 
    240240                                [self autoReconnectAfterDelay:3.0]; 
    241                                  
    242                         } else { 
    243                                 //Clear our desire to be online. 
    244                                 [self setShouldBeOnline:NO]; 
    245241                        } 
    246242                } 
     
    614610 
    615611/* 
    616  * @encode Encode a message to HTML 
     612 * @brief Should HTML be sent in messages to this contact? 
     613 * 
     614 * We don't want to send HTML to ICQ users or mobile phone users 
     615 */ 
     616BOOL shouldSendHTMLToObject(AIListObject *inListObject) 
     617
     618        char            firstCharacter = [[inListObject UID] characterAtIndex:0]; 
     619         
     620        return ((firstCharacter < '0' || firstCharacter > '9') && firstCharacter != '+'); 
     621
     622 
     623 
     624/* 
     625 * @encode Encode a message to HTML if appropriate 
    617626 * 
    618627 * We take this opportunity to process the HTML message, looking for IMG tags to send via DirectIM 
     
    621630{ 
    622631        NSAttributedString      *message = [inContentMessage message]; 
    623         NSString                        *htmlMessage; 
    624  
    625         if([message containsAttachments]) { 
    626                 NSRange limitRange; 
    627                 NSRange effectiveRange; 
    628                 id attributeValue; 
     632        NSString                        *encodedMessage; 
     633 
     634        if (shouldSendHTMLToObject([inContentMessage destination])) { 
     635                if([message containsAttachments]) { 
     636                        NSRange limitRange; 
     637                        NSRange effectiveRange; 
     638                        id attributeValue; 
     639                         
     640                        limitRange = NSMakeRange(0, [message length]); 
     641                         
     642                        while (limitRange.length > 0) { 
     643                                attributeValue = [message attribute:NSAttachmentAttributeName 
     644                                                                                        atIndex:limitRange.location  
     645                                                          longestEffectiveRange:&effectiveRange 
     646                                                                                        inRange:limitRange]; 
     647                                if([attributeValue respondsToSelector:@selector(setImageClass:)]) 
     648                                        [(AITextAttachmentExtension *)attributeValue setImageClass:@"scaledToFitImage"]; 
     649                                limitRange = NSMakeRange(NSMaxRange(effectiveRange), 
     650                                                                                 NSMaxRange(limitRange) - NSMaxRange(effectiveRange)); 
     651                        } 
     652                } 
    629653                 
    630                 limitRange = NSMakeRange(0, [message length]); 
     654                static AIHTMLDecoder *messageEncoder = nil; 
     655                if (!messageEncoder) { 
     656                        messageEncoder = [[AIHTMLDecoder alloc] init]; 
     657                        [messageEncoder setIncludesHeaders:YES]; 
     658                        [messageEncoder setIncludesFontTags:YES]; 
     659                        [messageEncoder setClosesFontTags:NO]; 
     660                        [messageEncoder setIncludesStyleTags:YES]; 
     661                        [messageEncoder setIncludesColorTags:YES]; 
     662                        [messageEncoder setEncodesNonASCII:NO]; 
     663                        [messageEncoder setPreservesAllSpaces:NO]; 
     664                        [messageEncoder setUsesAttachmentTextEquivalents:NO]; 
     665                        [messageEncoder setOnlyConvertImageAttachmentsToIMGTagsWhenSendingAMessage:YES]; 
     666                        [messageEncoder setOnlyUsesSimpleTags:NO]; 
     667                        [messageEncoder setAllowAIMsubprofileLinks:YES]; 
     668                } 
    631669                 
    632                 while (limitRange.length > 0) { 
    633                         attributeValue = [message attribute:NSAttachmentAttributeName 
    634                                                           atIndex:limitRange.location  
    635                                 longestEffectiveRange:&effectiveRange 
    636                                                           inRange:limitRange]; 
    637                         if([attributeValue respondsToSelector:@selector(setImageClass:)]) 
    638                                 [(AITextAttachmentExtension *)attributeValue setImageClass:@"scaledToFitImage"]; 
    639                         limitRange = NSMakeRange(NSMaxRange(effectiveRange), 
    640                                                                          NSMaxRange(limitRange) - NSMaxRange(effectiveRange)); 
     670                id      joscarDataForThisMessage = nil; 
     671                encodedMessage = [joscarAdapter processOutgoingMessage:[messageEncoder encodeHTML:message 
     672                                                                                                                                                           imagesPath:NSTemporaryDirectory()] 
     673                                                                                                        joscarData:&joscarDataForThisMessage]; 
     674                if (joscarDataForThisMessage) { 
     675                        [inContentMessage setEncodedMessageAccountData:joscarDataForThisMessage]; 
    641676                } 
    642         } 
    643          
    644         static AIHTMLDecoder *messageEncoder = nil; 
    645         if (!messageEncoder) { 
    646                 messageEncoder = [[AIHTMLDecoder alloc] init]; 
    647                 [messageEncoder setIncludesHeaders:YES]; 
    648                 [messageEncoder setIncludesFontTags:YES]; 
    649                 [messageEncoder setClosesFontTags:NO]; 
    650                 [messageEncoder setIncludesStyleTags:YES]; 
    651                 [messageEncoder setIncludesColorTags:YES]; 
    652                 [messageEncoder setEncodesNonASCII:NO]; 
    653                 [messageEncoder setPreservesAllSpaces:NO]; 
    654                 [messageEncoder setUsesAttachmentTextEquivalents:NO]; 
    655                 [messageEncoder setOnlyConvertImageAttachmentsToIMGTagsWhenSendingAMessage:YES]; 
    656                 [messageEncoder setOnlyUsesSimpleTags:NO]; 
    657                 [messageEncoder setAllowAIMsubprofileLinks:YES]; 
    658         } 
    659  
    660         id      joscarDataForThisMessage = nil; 
    661         htmlMessage = [joscarAdapter processOutgoingMessage:[messageEncoder encodeHTML:message 
    662                                                                                                                                                 imagesPath:NSTemporaryDirectory()] 
    663                                                                                          joscarData:&joscarDataForThisMessage]; 
    664         if (joscarDataForThisMessage) { 
    665                 [inContentMessage setEncodedMessageAccountData:joscarDataForThisMessage]; 
    666         } 
    667          
    668         return htmlMessage; 
     677 
     678        } else { 
     679                encodedMessage = [[message attributedStringByConvertingLinksToStrings] string]; 
     680        } 
     681         
     682        return encodedMessage; 
    669683} 
    670684