From 6eeb81a86e0cf4f050bb6bae5b09dedf8b251a15 Mon Sep 17 00:00:00 2001 From: Deepak Jacob Date: Wed, 19 Jul 2023 09:24:49 -0700 Subject: [PATCH] Clear bundler banner messages after a certain delay during development. (#38355) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/38355 Changelog: [General] [iOS] Clear bundler banner messages after a certain delay during development. Reviewed By: cipolleschi Differential Revision: D47478373 fbshipit-source-id: e171ec714fc13096adfd4811f2007ff3e37cbf38 --- .../React/CoreModules/RCTDevLoadingView.mm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/react-native/React/CoreModules/RCTDevLoadingView.mm b/packages/react-native/React/CoreModules/RCTDevLoadingView.mm index 02bdb96e1d5..ab9c945790e 100644 --- a/packages/react-native/React/CoreModules/RCTDevLoadingView.mm +++ b/packages/react-native/React/CoreModules/RCTDevLoadingView.mm @@ -83,6 +83,14 @@ RCT_EXPORT_MODULE() dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC), dispatch_get_main_queue(), self->_initialMessageBlock); } +- (void)hideBannerAfter:(CGFloat)delay +{ + // Cancel previous hide call after the delay. + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hide) object:nil]; + // Set new hide call after a delay. + [self performSelector:@selector(hide) withObject:nil afterDelay:delay]; +} + - (void)showMessage:(NSString *)message color:(UIColor *)color backgroundColor:(UIColor *)backgroundColor { if (!RCTDevLoadingViewGetEnabled() || _hiding) { @@ -132,6 +140,8 @@ RCT_EXPORT_MODULE() UIWindowScene *scene = (UIWindowScene *)RCTSharedApplication().connectedScenes.anyObject; self->_window.windowScene = scene; }); + + [self hideBannerAfter:15.0]; } RCT_EXPORT_METHOD(showMessage