Changeset 3665

Show
Ignore:
Timestamp:
06/25/07 23:09:47 (1 year ago)
Author:
rinoa
Message:

Fixes the issue where user mode prefix would still be showing as part of the nickname, causing Colloquy to fail in removing them when the user parted and prevents normal user actions. #1060

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Chat Core/MVIRCChatConnection.m

    r3662 r3665  
    14141414                                        if( [modesTable count] ) [_serverInformation setObject:modesTable forKey:@"roomMemberModeTable"]; 
    14151415                                        [_serverInformation setObject:[NSCharacterSet characterSetWithCharactersInString:modes] forKey:@"roomMemberModes"]; 
    1416  
    1417                                         NSString *prefixes = [feature substringFromIndex:[scanner scanLocation]]; 
    1418                                         if( [prefixes length] ) { 
    1419                                                 NSMutableDictionary *prefixTable = [[NSMutableDictionary allocWithZone:nil] initWithCapacity:[modes length]]; 
    1420                                                 unsigned length = [prefixes length]; 
    1421                                                 unsigned i = 0; 
    1422                                                 for( i = 0; i < length; i++ ) { 
    1423                                                         MVChatRoomMemberMode mode = MVChatRoomMemberNoModes; 
    1424                                                         switch( [prefixes characterAtIndex:i] ) { 
    1425                                                                 case '+': mode = MVChatRoomMemberVoicedMode; break; 
    1426                                                                 case '%': mode = MVChatRoomMemberHalfOperatorMode; break; 
    1427                                                                 case '@': mode = MVChatRoomMemberOperatorMode; break; 
    1428                                                                 case '&': mode = MVChatRoomMemberAdministratorMode; break; 
    1429                                                                 case '!': mode = MVChatRoomMemberAdministratorMode; break; 
    1430                                                                 case '*': mode = MVChatRoomMemberAdministratorMode; break; 
    1431                                                                 case '~': mode = MVChatRoomMemberFounderMode; break; 
    1432                                                                 case '.': mode = MVChatRoomMemberFounderMode; break; 
    1433                                                                 default: break; 
    1434                                                         } 
    1435  
    1436                                                         if( mode != MVChatRoomMemberNoModes ) { 
    1437                                                                 NSString *key = [[NSString allocWithZone:nil] initWithFormat:@"%c", [prefixes characterAtIndex:i]]; 
    1438                                                                 [prefixTable setObject:[NSNumber numberWithUnsignedLong:mode] forKey:key]; 
    1439                                                                 [key release]; 
    1440                                                         } 
     1416                                } 
     1417 
     1418                                NSString *prefixes = [feature substringFromIndex:[scanner scanLocation]]; 
     1419                                if( [prefixes length] ) { 
     1420                                        NSMutableDictionary *prefixTable = [[NSMutableDictionary allocWithZone:nil] initWithCapacity:[modes length]]; 
     1421                                        unsigned length = [prefixes length]; 
     1422                                        unsigned i = 0; 
     1423                                        for( i = 0; i < length; i++ ) { 
     1424                                                MVChatRoomMemberMode mode = MVChatRoomMemberNoModes; 
     1425                                                switch( [prefixes characterAtIndex:i] ) { 
     1426                                                        case '+': mode = MVChatRoomMemberVoicedMode; break; 
     1427                                                        case '%': mode = MVChatRoomMemberHalfOperatorMode; break; 
     1428                                                        case '@': mode = MVChatRoomMemberOperatorMode; break; 
     1429                                                        case '&': mode = MVChatRoomMemberAdministratorMode; break; 
     1430                                                        case '!': mode = MVChatRoomMemberAdministratorMode; break; 
     1431                                                        case '*': mode = MVChatRoomMemberAdministratorMode; break; 
     1432                                                        case '~': mode = MVChatRoomMemberFounderMode; break; 
     1433                                                        case '.': mode = MVChatRoomMemberFounderMode; break; 
     1434                                                        default: break; 
    14411435                                                } 
    14421436 
    1443                                                 if( [prefixTable count] ) [_serverInformation setObject:prefixTable forKey:@"roomMemberPrefixTable"]; 
    1444                                                 [_serverInformation setObject:[NSCharacterSet characterSetWithCharactersInString:prefixes] forKey:@"roomMemberPrefixes"]; 
     1437                                                if( mode != MVChatRoomMemberNoModes ) { 
     1438                                                        NSString *key = [[NSString allocWithZone:nil] initWithFormat:@"%c", [prefixes characterAtIndex:i]]; 
     1439                                                        [prefixTable setObject:[NSNumber numberWithUnsignedLong:mode] forKey:key]; 
     1440                                                        [key release]; 
     1441                                                } 
    14451442                                        } 
     1443 
     1444                                        if( [prefixTable count] ) [_serverInformation setObject:prefixTable forKey:@"roomMemberPrefixTable"]; 
     1445                                        [_serverInformation setObject:[NSCharacterSet characterSetWithCharactersInString:prefixes] forKey:@"roomMemberPrefixes"]; 
    14461446                                } 
    14471447                        } 
     
    22212221                                                        break; 
    22222222                                                default: { 
    2223                                                         if( _serverInformation ) { 
    2224                                                                NSMutableDictionary *supportedModes = [_serverInformation objectForKey:@"roomMemberModeTable"]; 
     2223                                                        NSMutableDictionary *supportedModes = [_serverInformation objectForKey:@"roomMemberModeTable"]; 
     2224                                                        if( [supportedModes count] ) { 
    22252225                                                                value = [[supportedModes objectForKey:[NSString stringWithFormat:@"%c", chr]] unsignedLongValue]; 
    22262226                                                                if( value ) goto queue; 
     
    24792479 
    24802480                                MVChatRoomMemberMode modes = MVChatRoomMemberNoModes; 
    2481                                 if( _serverInformation ) { 
    2482                                        NSMutableDictionary *prefixes = [_serverInformation objectForKey:@"roomMemberPrefixTable"]; 
     2481                                NSMutableDictionary *prefixes = [_serverInformation objectForKey:@"roomMemberPrefixTable"]; 
     2482                                if( [prefixes count] ) { 
    24832483                                        NSString *key = [[NSString allocWithZone:nil] initWithFormat:@"%c", [memberName characterAtIndex:0]]; 
    24842484                                        modes = [[prefixes objectForKey:key] unsignedLongValue];