diff --git a/Classes/ChatsListTableView.h b/Classes/ChatsListTableView.h
index ed79f82f2..cfab007de 100644
--- a/Classes/ChatsListTableView.h
+++ b/Classes/ChatsListTableView.h
@@ -30,4 +30,5 @@
- (void)loadData;
- (void)markCellAsRead:(LinphoneChatRoom *)chatRoom;
++ (void)saveDataToUserDefaults;
@end
diff --git a/Classes/ChatsListTableView.m b/Classes/ChatsListTableView.m
index 49e3b98d7..290777a12 100644
--- a/Classes/ChatsListTableView.m
+++ b/Classes/ChatsListTableView.m
@@ -123,6 +123,40 @@ static int sorted_history_comparison(LinphoneChatRoom *to_insert, LinphoneChatRo
}
}
++ (void) saveDataToUserDefaults {
+ NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.belledonne-communications.linphone.widget"];
+ MSList *sorted = nil;
+ const MSList *unsorted = linphone_core_get_chat_rooms(LC);
+ const MSList *iter = unsorted;
+
+ while (iter) {
+ // store last message in user data
+ LinphoneChatRoom *chat_room = iter->data;
+ sorted = bctbx_list_insert_sorted(sorted, chat_room, (bctbx_compare_func)sorted_history_comparison);
+ iter = iter->next;
+ }
+
+ NSMutableArray *addresses = [NSMutableArray array];
+
+ while (sorted) {
+ NSMutableDictionary *dict = [NSMutableDictionary dictionary];
+ LinphoneChatRoom *cr = sorted->data;
+ const LinphoneAddress *address = linphone_chat_room_get_peer_address(cr);
+ NSString *display;
+ [dict setObject:[[NSString stringWithUTF8String:linphone_address_as_string_uri_only(address)] substringFromIndex:4] forKey:@"address"];
+ if (linphone_chat_room_get_nb_participants(cr) > 1)
+ display = [NSString stringWithUTF8String:linphone_chat_room_get_subject(cr)];
+ else
+ display = [NSString stringWithUTF8String:linphone_address_get_display_name(address)?:linphone_address_get_username(address)];
+ [dict setObject:display forKey:@"display"];
+ [dict setObject:[NSNumber numberWithInt:linphone_chat_room_get_nb_participants(cr)] forKey:@"nbParticipants"];
+ [addresses addObject:dict];
+ sorted = sorted->next;
+ }
+
+ [defaults setObject:addresses forKey:@"chatrooms"];
+}
+
- (void)markCellAsRead:(LinphoneChatRoom *)chatRoom {
int idx = bctbx_list_index(_data, VIEW(ChatConversationView).chatRoom);
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:idx inSection:0];
diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m
index 403d3b4c1..f7d5a4e8c 100644
--- a/Classes/LinphoneAppDelegate.m
+++ b/Classes/LinphoneAppDelegate.m
@@ -139,6 +139,7 @@
}
[LinphoneManager.instance.iapManager check];
[HistoryListTableView saveDataToUserDefaults];
+ [ChatsListTableView saveDataToUserDefaults];
}
#pragma deploymate push "ignored-api-availability"
@@ -343,10 +344,15 @@
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);
+ [PhoneMainView.instance goToChatRoom:cr];
}
}
return YES;
diff --git a/latestChatroomsWidget/Base.lproj/MainInterface.storyboard b/latestChatroomsWidget/Base.lproj/MainInterface.storyboard
index ec60bb8f3..55cf32840 100644
--- a/latestChatroomsWidget/Base.lproj/MainInterface.storyboard
+++ b/latestChatroomsWidget/Base.lproj/MainInterface.storyboard
@@ -31,6 +31,9 @@
+
+
+