Fix certain chats now showing up when opening through Adium dialougue.

This commit is contained in:
mjentsch 2015-09-05 17:48:17 +02:00
parent 6ad121bb88
commit 6dd94bc3bc
3 changed files with 28 additions and 15 deletions

View file

@ -171,7 +171,6 @@
}
#pragma mark Group Chats
void chat_buddy_joined (PurpleConversation *conv, const char *name,
PurpleConvChatBuddyFlags flags,
gboolean new_arrival, void *data) {
@ -188,7 +187,6 @@ void chat_buddy_joined (PurpleConversation *conv, const char *name,
service:nil];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_MSEC), dispatch_get_main_queue(), ^{
NSLog(@"Injecting chat participant alias: %s", P->print_name);
[chat setAlias:[NSString stringWithUTF8String:P->print_name]
forContact:dummy];
[chat resortParticipants];

View file

@ -95,12 +95,15 @@ static void tgl_peer_iterator_cb (tgl_peer_t *peer, void *extra) {
PurpleConnection *gc = purple_account_get_connection(pa);
if (gc && PURPLE_CONNECTION_IS_CONNECTED(gc)) {
connection_data *conn = purple_connection_get_protocol_data (gc);
NSString *link = [textField_joinByLink stringValue];
// Join by link
NSString *link = [textField_joinByLink stringValue];
if ([link length]) {
import_chat_link_checked (conn->TLS, [link UTF8String]);
return;
}
// Create a new chat with provided participants
NSString *createChatName = [textField_createChatName stringValue];
NSArray *tokens = [tokenField_createChatUsers objectValue];
if ([createChatName length] && [tokens count]) {
@ -114,14 +117,17 @@ static void tgl_peer_iterator_cb (tgl_peer_t *peer, void *extra) {
return;
}
NSString *room = [[popupButton_existingChat selectedItem] title];
NSDictionary *chatCreationInfo = [NSDictionary
dictionaryWithObjectsAndKeys:room, @"subject", nil];
[self doJoinChatWithName:room
onAccount:inAccount
chatCreationInfo:chatCreationInfo
invitingContacts:@[]
withInvitationMessage:@""];
// Pass the joining to the prpl
const char *name = [[[popupButton_existingChat selectedItem] title] UTF8String];
PurpleChat *purpleChat = purple_blist_find_chat (conn->pa, name);
if (purpleChat) {
serv_join_chat (conn->gc, purple_chat_get_components (purpleChat));
} else {
GHashTable *chatCreationInfo = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free);
g_hash_table_insert (chatCreationInfo, "subject", g_strdup (name));
serv_join_chat (conn->gc, chatCreationInfo);
g_hash_table_destroy (chatCreationInfo);
}
}
}

View file

@ -93,16 +93,18 @@
return NO;
}
- (AIServiceImportance)serviceImportance{
return AIServiceSecondary;
- (AIServiceImportance)serviceImportance
{
return AIServiceSecondary;
}
- (NSCharacterSet *)allowedCharacters{
return [[NSCharacterSet illegalCharacterSet] invertedSet];
}
- (NSCharacterSet *)allowedCharactersForAccountName
{
return ([NSCharacterSet characterSetWithCharactersInString: @"+1234567890"]);
return ([NSCharacterSet characterSetWithCharactersInString: @"+1234567890"]);
}
- (NSUInteger)allowedLengthForAccountName
@ -131,7 +133,8 @@
return [[NSBundle bundleForClass:[self class]] pathForImageResource:@"telegram"];
}
- (void)registerStatuses {
- (void)registerStatuses
{
#define ADDSTATUS(name, type) \
[adium.statusController registerStatus:name \
withDescription:[adium.statusController localizedDescriptionForCoreStatusName:name] \
@ -144,4 +147,10 @@ ofType:type forService:self]
ADDSTATUS(STATUS_NAME_OFFLINE, AIOfflineStatusType);
}
- (NSString *)normalizeChatName:(NSString *)inChatName
{
// prevent Adium from normalizing chat names, which would break searching chats by user names
return inChatName;
}
@end