Skip to content

Commit 7a989aa

Browse files
Fetch view resource bundle in main thread for thread safety (#3616) (#3618)
1 parent 042b264 commit 7a989aa

File tree

1 file changed

+38
-38
lines changed

1 file changed

+38
-38
lines changed

Firebase/InAppMessagingDisplay/FIRIAMDefaultDisplayImpl.m

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -80,18 +80,18 @@ + (NSBundle *)getViewResourceBundle {
8080

8181
+ (void)displayCardViewWithMessageDefinition:(FIRInAppMessagingCardDisplay *)cardMessage
8282
displayDelegate:(id<FIRInAppMessagingDisplayDelegate>)displayDelegate {
83-
NSBundle *resourceBundle = [self getViewResourceBundle];
84-
85-
if (resourceBundle == nil) {
86-
NSError *error =
87-
[NSError errorWithDomain:kFirebaseInAppMessagingDisplayErrorDomain
88-
code:FIAMDisplayRenderErrorTypeUnspecifiedError
89-
userInfo:@{NSLocalizedDescriptionKey : @"Resource bundle is missing."}];
90-
[displayDelegate displayErrorForMessage:cardMessage error:error];
91-
return;
92-
}
93-
9483
dispatch_async(dispatch_get_main_queue(), ^{
84+
NSBundle *resourceBundle = [self getViewResourceBundle];
85+
86+
if (resourceBundle == nil) {
87+
NSError *error =
88+
[NSError errorWithDomain:kFirebaseInAppMessagingDisplayErrorDomain
89+
code:FIAMDisplayRenderErrorTypeUnspecifiedError
90+
userInfo:@{NSLocalizedDescriptionKey : @"Resource bundle is missing."}];
91+
[displayDelegate displayErrorForMessage:cardMessage error:error];
92+
return;
93+
}
94+
9595
FIDTimerWithNSDate *timeFetcher = [[FIDTimerWithNSDate alloc] init];
9696
FIDCardViewController *cardVC =
9797
[FIDCardViewController instantiateViewControllerWithResourceBundle:resourceBundle
@@ -119,17 +119,17 @@ + (void)displayCardViewWithMessageDefinition:(FIRInAppMessagingCardDisplay *)car
119119
+ (void)displayModalViewWithMessageDefinition:(FIRInAppMessagingModalDisplay *)modalMessage
120120
displayDelegate:
121121
(id<FIRInAppMessagingDisplayDelegate>)displayDelegate {
122-
NSBundle *resourceBundle = [self getViewResourceBundle];
122+
dispatch_async(dispatch_get_main_queue(), ^{
123+
NSBundle *resourceBundle = [self getViewResourceBundle];
123124

124-
if (resourceBundle == nil) {
125-
NSError *error = [NSError errorWithDomain:kFirebaseInAppMessagingDisplayErrorDomain
126-
code:FIAMDisplayRenderErrorTypeUnspecifiedError
127-
userInfo:@{@"message" : @"resource bundle is missing"}];
128-
[displayDelegate displayErrorForMessage:modalMessage error:error];
129-
return;
130-
}
125+
if (resourceBundle == nil) {
126+
NSError *error = [NSError errorWithDomain:kFirebaseInAppMessagingDisplayErrorDomain
127+
code:FIAMDisplayRenderErrorTypeUnspecifiedError
128+
userInfo:@{@"message" : @"resource bundle is missing"}];
129+
[displayDelegate displayErrorForMessage:modalMessage error:error];
130+
return;
131+
}
131132

132-
dispatch_async(dispatch_get_main_queue(), ^{
133133
FIDTimerWithNSDate *timeFetcher = [[FIDTimerWithNSDate alloc] init];
134134
FIDModalViewController *modalVC =
135135
[FIDModalViewController instantiateViewControllerWithResourceBundle:resourceBundle
@@ -156,17 +156,17 @@ + (void)displayModalViewWithMessageDefinition:(FIRInAppMessagingModalDisplay *)m
156156
+ (void)displayBannerViewWithMessageDefinition:(FIRInAppMessagingBannerDisplay *)bannerMessage
157157
displayDelegate:
158158
(id<FIRInAppMessagingDisplayDelegate>)displayDelegate {
159-
NSBundle *resourceBundle = [self getViewResourceBundle];
159+
dispatch_async(dispatch_get_main_queue(), ^{
160+
NSBundle *resourceBundle = [self getViewResourceBundle];
160161

161-
if (resourceBundle == nil) {
162-
NSError *error = [NSError errorWithDomain:kFirebaseInAppMessagingDisplayErrorDomain
163-
code:FIAMDisplayRenderErrorTypeUnspecifiedError
164-
userInfo:@{}];
165-
[displayDelegate displayErrorForMessage:bannerMessage error:error];
166-
return;
167-
}
162+
if (resourceBundle == nil) {
163+
NSError *error = [NSError errorWithDomain:kFirebaseInAppMessagingDisplayErrorDomain
164+
code:FIAMDisplayRenderErrorTypeUnspecifiedError
165+
userInfo:@{}];
166+
[displayDelegate displayErrorForMessage:bannerMessage error:error];
167+
return;
168+
}
168169

169-
dispatch_async(dispatch_get_main_queue(), ^{
170170
FIDTimerWithNSDate *timeFetcher = [[FIDTimerWithNSDate alloc] init];
171171
FIDBannerViewController *bannerVC =
172172
[FIDBannerViewController instantiateViewControllerWithResourceBundle:resourceBundle
@@ -194,17 +194,17 @@ + (void)displayImageOnlyViewWithMessageDefinition:
194194
(FIRInAppMessagingImageOnlyDisplay *)imageOnlyMessage
195195
displayDelegate:
196196
(id<FIRInAppMessagingDisplayDelegate>)displayDelegate {
197-
NSBundle *resourceBundle = [self getViewResourceBundle];
197+
dispatch_async(dispatch_get_main_queue(), ^{
198+
NSBundle *resourceBundle = [self getViewResourceBundle];
198199

199-
if (resourceBundle == nil) {
200-
NSError *error = [NSError errorWithDomain:kFirebaseInAppMessagingDisplayErrorDomain
201-
code:FIAMDisplayRenderErrorTypeUnspecifiedError
202-
userInfo:@{}];
203-
[displayDelegate displayErrorForMessage:imageOnlyMessage error:error];
204-
return;
205-
}
200+
if (resourceBundle == nil) {
201+
NSError *error = [NSError errorWithDomain:kFirebaseInAppMessagingDisplayErrorDomain
202+
code:FIAMDisplayRenderErrorTypeUnspecifiedError
203+
userInfo:@{}];
204+
[displayDelegate displayErrorForMessage:imageOnlyMessage error:error];
205+
return;
206+
}
206207

207-
dispatch_async(dispatch_get_main_queue(), ^{
208208
FIDTimerWithNSDate *timeFetcher = [[FIDTimerWithNSDate alloc] init];
209209
FIDImageOnlyViewController *imageOnlyVC =
210210
[FIDImageOnlyViewController instantiateViewControllerWithResourceBundle:resourceBundle

0 commit comments

Comments
 (0)