From 740306d0cd2cada3b28e167ce7ec3f493acf5f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=BCller?= Date: Fri, 3 Nov 2023 01:41:01 +0100 Subject: [PATCH] Fix crashes when adding/removing reactions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcel Müller --- NextcloudTalk/NCAPIController.m | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/NextcloudTalk/NCAPIController.m b/NextcloudTalk/NCAPIController.m index 25ae13c89..ac789d707 100644 --- a/NextcloudTalk/NCAPIController.m +++ b/NextcloudTalk/NCAPIController.m @@ -1704,7 +1704,13 @@ - (NSURLSessionDataTask *)addReaction:(NSString *)reaction toMessage:(NSInteger) NSDictionary *reactionsDict = [[responseObject objectForKey:@"ocs"] objectForKey:@"data"]; if (block) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)task.response; - block(reactionsDict, nil, httpResponse.statusCode); + + // When there are no elements, the server returns an empty array instead of an empty dictionary + if (![reactionsDict isKindOfClass:[NSDictionary class]]) { + block(@{}, nil, httpResponse.statusCode); + } else { + block(reactionsDict, nil, httpResponse.statusCode); + } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSInteger statusCode = [self getResponseStatusCode:task.response]; @@ -1729,7 +1735,13 @@ - (NSURLSessionDataTask *)removeReaction:(NSString *)reaction fromMessage:(NSInt NSDictionary *reactionsDict = [[responseObject objectForKey:@"ocs"] objectForKey:@"data"]; if (block) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)task.response; - block(reactionsDict, nil, httpResponse.statusCode); + + // When there are no elements, the server returns an empty array instead of an empty dictionary + if (![reactionsDict isKindOfClass:[NSDictionary class]]) { + block(@{}, nil, httpResponse.statusCode); + } else { + block(reactionsDict, nil, httpResponse.statusCode); + } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSInteger statusCode = [self getResponseStatusCode:task.response];