From 50ad17e7bc081a61325b957f3e02f997dc9b5283 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 21 Sep 2015 10:47:00 +0200 Subject: [PATCH] ChatRoomViewController.m: call linphone_send_message only after having added the message to the list to avoid error log --- Classes/ChatRoomViewController.m | 5 +++-- Classes/LinphoneUI/UIChatRoomCell.m | 4 ++-- TestsUI/ChatTester.m | 7 +++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 2f93b6eb9..452e5392a 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -278,8 +278,6 @@ static void message_status(LinphoneChatMessage *msg, LinphoneChatMessageState st linphone_chat_message_set_external_body_url(msg, [[externalUrl absoluteString] UTF8String]); } - linphone_chat_room_send_message2(chatRoom, msg, message_status, (__bridge void *)(self)); - if (internalUrl) { // internal url is saved in the appdata for display and later save [LinphoneManager setValueInMessageAppData:[internalUrl absoluteString] forKey:@"localimage" inMessage:msg]; @@ -287,6 +285,9 @@ static void message_status(LinphoneChatMessage *msg, LinphoneChatMessageState st [tableController addChatEntry:msg]; [tableController scrollToBottom:true]; + + linphone_chat_room_send_message2(chatRoom, msg, message_status, (__bridge void *)(self)); + return TRUE; } diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index 8bae63bb2..37ee3f8fc 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -453,7 +453,6 @@ static UIFont *CELL_FONT = nil; #pragma mark - State changed handling static void message_status(LinphoneChatMessage *msg, LinphoneChatMessageState state) { UIChatRoomCell *thiz = (__bridge UIChatRoomCell *)linphone_chat_message_get_user_data(msg); - LOGI(@"State for message [%p] changed to %s", msg, linphone_chat_message_state_to_string(state)); if (linphone_chat_message_get_file_transfer_information(msg) != NULL) { if (state == LinphoneChatMessageStateDelivered || state == LinphoneChatMessageStateNotDelivered) { // we need to refresh the tableview because the filetransfer delegate unreffed @@ -470,8 +469,9 @@ static void message_status(LinphoneChatMessage *msg, LinphoneChatMessageState st // This is breaking interface too much, it must be fixed in file transfer cb.. meanwhile, disabling it. if (thiz->ftd) { - [thiz->ftd stopAndDestroy]; + FileTransferDelegate *c = thiz->ftd; thiz->ftd = nil; + [c stopAndDestroy]; } } } diff --git a/TestsUI/ChatTester.m b/TestsUI/ChatTester.m index 7616bc62a..4ecb45ed4 100644 --- a/TestsUI/ChatTester.m +++ b/TestsUI/ChatTester.m @@ -321,6 +321,13 @@ ASSERT_EQ([[[LinphoneManager instance] fileTransferDelegates] count], 0); } +- (void)testTransferDestroyRoomWhileUploading { + [self startChatWith:[self me]]; + [self uploadImageWithQuality:@"Maximum"]; + [self goBackFromChat]; + [self removeAllRooms]; +} + - (void)testTransferDownloadImage { [self downloadImage]; [tester waitForAbsenceOfViewWithAccessibilityLabel:@"Cancel transfer"];