From 756e842aa4758cab1b4d01f079e9cd6d1295a3f0 Mon Sep 17 00:00:00 2001 From: Ossi Vaananen Date: Wed, 19 Oct 2022 17:02:36 +0300 Subject: [PATCH] Perform the split view check in main queue. (Some call paths caused the check to be done in background threads) --- ios/Mattermost/MattermostManaged.m | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/ios/Mattermost/MattermostManaged.m b/ios/Mattermost/MattermostManaged.m index d3edc7f32..ec68c3ca6 100644 --- a/ios/Mattermost/MattermostManaged.m +++ b/ios/Mattermost/MattermostManaged.m @@ -51,12 +51,19 @@ RCT_EXPORT_MODULE(); } RCT_EXPORT_METHOD(isRunningInSplitView:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { - BOOL isRunningInFullScreen = CGRectEqualToRect( - [UIApplication sharedApplication].delegate.window.frame, - [UIApplication sharedApplication].delegate.window.screen.bounds); - resolve(@{ - @"isSplitView": @(!isRunningInFullScreen) - }); + dispatch_block_t splitViewCheck = ^{ + BOOL isRunningInFullScreen = CGRectEqualToRect( + [UIApplication sharedApplication].delegate.window.frame, + [UIApplication sharedApplication].delegate.window.screen.bounds); + resolve(@{ + @"isSplitView": @(!isRunningInFullScreen) + }); + }; + if (dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL) == dispatch_queue_get_label(dispatch_get_main_queue())) { + splitViewCheck(); + } else { + dispatch_async(dispatch_get_main_queue(), splitViewCheck); + } } RCT_EXPORT_METHOD(deleteDatabaseDirectory: (NSString *)databaseName shouldRemoveDirectory: (BOOL) shouldRemoveDirectory callback: (RCTResponseSenderBlock)callback){