diff --git a/Classes/ChatConversationView.h b/Classes/ChatConversationView.h
index 71b50bd43..d9a760bcf 100644
--- a/Classes/ChatConversationView.h
+++ b/Classes/ChatConversationView.h
@@ -40,6 +40,7 @@
@property(nonatomic) LinphoneChatRoom *chatRoom;
@property(nonatomic) LinphoneChatRoomCbs *chatRoomCbs;
+@property(nonatomic) Boolean markAsRead;
@property(weak, nonatomic) IBOutlet UIIconButton *backButton;
@property(nonatomic, strong) IBOutlet ChatConversationTableView *tableController;
diff --git a/Classes/ChatConversationView.m b/Classes/ChatConversationView.m
index f8f854fb3..7c77d67f7 100644
--- a/Classes/ChatConversationView.m
+++ b/Classes/ChatConversationView.m
@@ -84,7 +84,7 @@ static UICompositeViewDescription *compositeDescription = nil;
- (void)viewDidLoad {
[super viewDidLoad];
-
+ _markAsRead = TRUE;
// if we use fragments, remove back button
if (IPAD) {
_backButton.hidden = YES;
@@ -208,8 +208,10 @@ static UICompositeViewDescription *compositeDescription = nil;
}
- (void)applicationWillEnterForeground:(NSNotification *)notif {
- if (_chatRoom)
+ if (_chatRoom && _markAsRead)
[ChatConversationView markAsRead:_chatRoom];
+
+ _markAsRead = TRUE;
}
- (void)callUpdateEvent:(NSNotification *)notif {
diff --git a/Classes/ChatsListTableView.m b/Classes/ChatsListTableView.m
index b3fbf754f..4264087b9 100644
--- a/Classes/ChatsListTableView.m
+++ b/Classes/ChatsListTableView.m
@@ -141,16 +141,19 @@ static int sorted_history_comparison(LinphoneChatRoom *to_insert, LinphoneChatRo
while (sorted) {
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
LinphoneChatRoom *cr = sorted->data;
- const LinphoneAddress *address = linphone_chat_room_get_peer_address(cr);
+ const LinphoneAddress *peer_address = linphone_chat_room_get_peer_address(cr);
+ const LinphoneAddress *local_address = linphone_chat_room_get_local_address(cr);
NSString *display;
- [dict setObject:[[NSString stringWithUTF8String:linphone_address_as_string_uri_only(address)] substringFromIndex:4]
- forKey:@"address"];
+ [dict setObject:[NSString stringWithUTF8String:linphone_address_as_string_uri_only(peer_address)]
+ forKey:@"peer"];
+ [dict setObject:[NSString stringWithUTF8String:linphone_address_as_string_uri_only(local_address)]
+ forKey:@"local"];
if (linphone_chat_room_get_conference_address(cr))
display = [NSString stringWithUTF8String:linphone_chat_room_get_subject(cr)];
else {
- display = [NSString stringWithUTF8String:linphone_address_get_display_name(address)?:linphone_address_get_username(address)];
- if ([FastAddressBook imageForAddress:address])
- [dict setObject:UIImageJPEGRepresentation([UIImage resizeImage:[FastAddressBook imageForAddress:address]
+ display = [NSString stringWithUTF8String:linphone_address_get_display_name(peer_address)?:linphone_address_get_username(peer_address)];
+ if ([FastAddressBook imageForAddress:peer_address])
+ [dict setObject:UIImageJPEGRepresentation([UIImage resizeImage:[FastAddressBook imageForAddress:peer_address]
withMaxWidth:200
andMaxHeight:200],
1)
diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m
index f7d5a4e8c..0d097876c 100644
--- a/Classes/LinphoneAppDelegate.m
+++ b/Classes/LinphoneAppDelegate.m
@@ -344,20 +344,35 @@
NSString *sipUri = [[url resourceSpecifier] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"/"]];
[VIEW(DialerView) setAddress:sipUri];
} else if ([scheme isEqualToString:@"linphone-widget"]) {
- printf("cparla\n");
if ([[url host] isEqualToString:@"call_log"] &&
[[url path] isEqualToString:@"/show"]) {
[VIEW(HistoryDetailsView) setCallLogId:[url query]];
[PhoneMainView.instance changeCurrentView:HistoryDetailsView.compositeViewDescription];
- } else if ([[url host] isEqualToString:@"chatroom"] &&
- [[url path] isEqualToString:@"/show"]) {
- LinphoneChatRoom *cr = linphone_core_get_chat_room_from_uri(LC, url.query.UTF8String);
+ } else if ([[url host] isEqualToString:@"chatroom"] && [[url path] isEqualToString:@"/show"]) {
+ NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:url
+ resolvingAgainstBaseURL:NO];
+ NSArray *queryItems = urlComponents.queryItems;
+ NSString *peerAddress = [self valueForKey:@"peer" fromQueryItems:queryItems];
+ NSString *localAddress = [self valueForKey:@"local" fromQueryItems:queryItems];
+ LinphoneAddress *peer = linphone_address_new(peerAddress.UTF8String);
+ LinphoneAddress *local = linphone_address_new(localAddress.UTF8String);
+ LinphoneChatRoom *cr = linphone_core_find_chat_room(LC, peer, local);
+ linphone_address_unref(peer);
+ linphone_address_unref(local);
+ // TODO : Find a better fix
+ VIEW(ChatConversationView).markAsRead = FALSE;
[PhoneMainView.instance goToChatRoom:cr];
}
}
return YES;
}
+- (NSString *)valueForKey:(NSString *)key fromQueryItems:(NSArray *)queryItems {
+ NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name=%@", key];
+ NSURLQueryItem *queryItem = [[queryItems filteredArrayUsingPredicate:predicate] firstObject];
+ return queryItem.value;
+}
+
- (void)fixRing {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
// iOS7 fix for notification sound not stopping.
diff --git a/latestCallsWidget/Base.lproj/MainInterface.storyboard b/latestCallsWidget/Base.lproj/MainInterface.storyboard
index defdc0555..1e3f45eed 100644
--- a/latestCallsWidget/Base.lproj/MainInterface.storyboard
+++ b/latestCallsWidget/Base.lproj/MainInterface.storyboard
@@ -36,7 +36,7 @@
-