mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-25 21:05:40 +08:00
[ReactNative] orange box
Summary:
@public
There have been multiple instances of confusion about whether a redbox means the
developer did something they shouldn't but things will keep working, or if
something went horribly wrong and the app will crash in prod. This diff
introduces an orange background color to the redbox for `console.error` and
`RCTLogError` to indicate that something bad happened, but that the app will
continue working.
Test Plan:
see orange error for geo permissions:
{F22541375}
This commit is contained in:
@@ -29,14 +29,15 @@
|
||||
NSArray *_lastStackTrace;
|
||||
|
||||
UITableViewCell *_cachedMessageCell;
|
||||
UIColor *_redColor;
|
||||
}
|
||||
|
||||
- (id)initWithFrame:(CGRect)frame
|
||||
{
|
||||
if ((self = [super initWithFrame:frame])) {
|
||||
|
||||
_redColor = [UIColor colorWithRed:0.8 green:0 blue:0 alpha:1];
|
||||
self.windowLevel = UIWindowLevelStatusBar + 5;
|
||||
self.backgroundColor = [UIColor colorWithRed:0.8 green:0 blue:0 alpha:1];
|
||||
self.backgroundColor = _redColor;
|
||||
self.hidden = YES;
|
||||
|
||||
UIViewController *rootController = [[UIViewController alloc] init];
|
||||
@@ -132,6 +133,7 @@
|
||||
- (void)dismiss
|
||||
{
|
||||
self.hidden = YES;
|
||||
self.backgroundColor = _redColor;
|
||||
[self resignFirstResponder];
|
||||
[[[[UIApplication sharedApplication] delegate] window] makeKeyWindow];
|
||||
}
|
||||
@@ -261,6 +263,7 @@
|
||||
@implementation RCTRedBox
|
||||
{
|
||||
RCTRedBoxWindow *_window;
|
||||
UIColor *_nextBackgroundColor;
|
||||
}
|
||||
|
||||
+ (instancetype)sharedInstance
|
||||
@@ -273,6 +276,11 @@
|
||||
return _sharedInstance;
|
||||
}
|
||||
|
||||
- (void)setNextBackgroundColor:(UIColor *)color
|
||||
{
|
||||
_nextBackgroundColor = color;
|
||||
}
|
||||
|
||||
- (void)showErrorMessage:(NSString *)message
|
||||
{
|
||||
[self showErrorMessage:message withStack:nil showIfHidden:YES];
|
||||
@@ -304,6 +312,10 @@
|
||||
_window = [[RCTRedBoxWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
||||
}
|
||||
[_window showErrorMessage:message withStack:stack showIfHidden:shouldShow];
|
||||
if (_nextBackgroundColor) {
|
||||
_window.backgroundColor = _nextBackgroundColor;
|
||||
_nextBackgroundColor = nil;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -334,6 +346,7 @@
|
||||
- (void)updateErrorMessage:(NSString *)message withStack:(NSArray *)stack {}
|
||||
- (void)showErrorMessage:(NSString *)message withStack:(NSArray *)stack showIfHidden:(BOOL)shouldShow {}
|
||||
- (NSString *)currentErrorMessage { return nil; }
|
||||
- (void)setNextBackgroundColor:(UIColor *)color {}
|
||||
- (void)dismiss {}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user