From 7c0e9382fb0bff8728307d3c82b57bb98fe8b621 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Thu, 3 May 2018 16:07:02 +0200 Subject: [PATCH] factoize how to mark a chat room as read --- Classes/ChatConversationTableView.m | 5 +--- Classes/ChatConversationView.h | 3 ++- Classes/ChatConversationView.m | 29 ++++++++++++----------- Classes/LinphoneAppDelegate.m | 16 ++++--------- Classes/LinphoneManager.m | 5 +--- Classes/LinphoneUI/UIChatBubbleTextCell.m | 2 +- Classes/PhoneMainView.m | 2 ++ 7 files changed, 26 insertions(+), 36 deletions(-) diff --git a/Classes/ChatConversationTableView.m b/Classes/ChatConversationTableView.m index a703698f7..477546bb1 100644 --- a/Classes/ChatConversationTableView.m +++ b/Classes/ChatConversationTableView.m @@ -139,11 +139,8 @@ index = (int)count - 1; if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) { - linphone_chat_room_mark_as_read(_chatRoom); + [ChatConversationView markAsRead:_chatRoom]; } - TabBarView *tab = (TabBarView *)[PhoneMainView.instance.mainViewController - getCachedController:NSStringFromClass(TabBarView.class)]; - [tab update:YES]; // Scroll to unread if (index < 0) diff --git a/Classes/ChatConversationView.h b/Classes/ChatConversationView.h index 8889246d8..905855946 100644 --- a/Classes/ChatConversationView.h +++ b/Classes/ChatConversationView.h @@ -60,6 +60,8 @@ @property (weak, nonatomic) IBOutlet UIIconButton *infoButton; @property (weak, nonatomic) IBOutlet UILabel *particpantsLabel; ++ (void)markAsRead:(LinphoneChatRoom *)chatRoom; + - (void)configureForRoom:(BOOL)editing; - (IBAction)onBackClick:(id)event; - (IBAction)onEditClick:(id)event; @@ -70,7 +72,6 @@ - (IBAction)onCallClick:(id)sender; - (IBAction)onDeleteClick:(id)sender; - (IBAction)onEditionChangeClick:(id)sender; -- (void)markAsRead; - (void)update; @end diff --git a/Classes/ChatConversationView.m b/Classes/ChatConversationView.m index a549d5702..36618eb72 100644 --- a/Classes/ChatConversationView.m +++ b/Classes/ChatConversationView.m @@ -68,6 +68,19 @@ static UICompositeViewDescription *compositeDescription = nil; return self.class.compositeViewDescription; } + ++ (void)markAsRead:(LinphoneChatRoom *)chatRoom { + if (!chatRoom) + return; + + linphone_chat_room_mark_as_read(chatRoom); + if (IPAD) { + ChatsListView *listView = VIEW(ChatsListView); + [listView.tableController markCellAsRead:chatRoom]; + } + [PhoneMainView.instance updateApplicationBadgeNumber]; +} + #pragma mark - ViewController Functions - (void)viewDidLoad { @@ -197,13 +210,12 @@ static UICompositeViewDescription *compositeDescription = nil; _chatView.hidden = NO; [self update]; - linphone_chat_room_mark_as_read(_chatRoom); - [PhoneMainView.instance updateApplicationBadgeNumber]; + [ChatConversationView markAsRead:_chatRoom]; } - (void)applicationWillEnterForeground:(NSNotification *)notif { if (_chatRoom != nil) { - linphone_chat_room_mark_as_read(_chatRoom); + [ChatConversationView markAsRead:_chatRoom]; TabBarView *tab = (TabBarView *)[PhoneMainView.instance.mainViewController getCachedController:NSStringFromClass(TabBarView.class)]; [tab update:YES]; @@ -215,14 +227,6 @@ static UICompositeViewDescription *compositeDescription = nil; [_backToCallButton update]; } -- (void)markAsRead { - linphone_chat_room_mark_as_read(_chatRoom); - if (IPAD) { - ChatsListView *listView = VIEW(ChatsListView); - [listView.tableController markCellAsRead:_chatRoom]; - } -} - - (void)update { if (_chatRoom == NULL) { LOGW(@"Cannot update chat room header: null contact"); @@ -759,9 +763,6 @@ void on_chat_room_chat_message_received(LinphoneChatRoom *cr, const LinphoneEven return; [view.tableController addEventEntry:(LinphoneEventLog *)event_log]; - if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) - linphone_chat_room_mark_as_read(view.chatRoom); - [NSNotificationCenter.defaultCenter postNotificationName:kLinphoneMessageReceived object:view]; [view.tableController scrollToLastUnread:TRUE]; } diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index c2f2db77e..c7a50ee38 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -623,10 +623,7 @@ didInvalidatePushTokenForType:(NSString *)type { LinphoneAddress *local = linphone_address_new(local_address.UTF8String); LinphoneChatRoom *room = linphone_core_find_chat_room(LC, peer, local); if (room) { - linphone_chat_room_mark_as_read(room); - TabBarView *tab = (TabBarView *)[PhoneMainView.instance.mainViewController getCachedController:NSStringFromClass(TabBarView.class)]; - [tab update:YES]; - [PhoneMainView.instance updateApplicationBadgeNumber]; + [ChatConversationView markAsRead:room]; } linphone_address_unref(peer); linphone_address_unref(local); @@ -783,14 +780,9 @@ didInvalidatePushTokenForType:(NSString *)type { LinphoneAddress *peer = linphone_address_new(peer_address.UTF8String); LinphoneAddress *local = linphone_address_new(local_address.UTF8String); LinphoneChatRoom *room = linphone_core_find_chat_room(LC, peer, local); - if (room) { - if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) - linphone_chat_room_mark_as_read(room); - TabBarView *tab = (TabBarView *)[PhoneMainView.instance.mainViewController - getCachedController:NSStringFromClass(TabBarView.class)]; - [tab update:YES]; - [PhoneMainView.instance updateApplicationBadgeNumber]; - } + if (room && [UIApplication sharedApplication].applicationState == UIApplicationStateActive) + [ChatConversationView markAsRead:room]; + linphone_address_unref(peer); linphone_address_unref(local); } diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 9b654a9b8..1a3f4203f 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -2561,10 +2561,7 @@ static int comp_call_state_paused(const LinphoneCall *call, const void *param) { if (linphone_core_lime_enabled(LC) == LinphoneLimeMandatory && !linphone_chat_room_lime_available(room)) [LinphoneManager.instance alertLIME:room]; - linphone_chat_room_mark_as_read(room); - TabBarView *tab = (TabBarView *)[PhoneMainView.instance.mainViewController getCachedController:NSStringFromClass(TabBarView.class)]; - [tab update:YES]; - [PhoneMainView.instance updateApplicationBadgeNumber]; + [ChatConversationView markAsRead:room]; } - (void)call:(const LinphoneAddress *)iaddr { diff --git a/Classes/LinphoneUI/UIChatBubbleTextCell.m b/Classes/LinphoneUI/UIChatBubbleTextCell.m index 213abcaad..819252698 100644 --- a/Classes/LinphoneUI/UIChatBubbleTextCell.m +++ b/Classes/LinphoneUI/UIChatBubbleTextCell.m @@ -171,7 +171,7 @@ } else { [_messageText setAccessibilityLabel:@"Incoming message"]; if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) { - VIEW(ChatConversationView).markAsRead; + [ChatConversationView markAsRead:VIEW(ChatConversationView).chatRoom]; } } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index e2579dc2a..6ef9cfcb6 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -551,6 +551,8 @@ static RootViewManager *rootViewManagerInstance = nil; count += [LinphoneManager unreadMessageCount]; count += linphone_core_get_calls_nb(LC); [[UIApplication sharedApplication] setApplicationIconBadgeNumber:count]; + TabBarView *view = (TabBarView *)[PhoneMainView.instance.mainViewController getCachedController:NSStringFromClass(TabBarView.class)]; + [view update:TRUE]; } + (CATransition *)getBackwardTransition {