Files
flipper/iOS/FlipperKit/FlipperDiagnosticsViewController.m
Lorenzo Blasa 7d392ade29 Diagnostics UI (Dark mode)
Summary:
^
In dark mode, the logs were not visible as font color is white, same as the background color of the label explicitly set to white.

Don't set it to white (unless the text color is changed as well).

Reviewed By: antonk52

Differential Revision: D36015027

fbshipit-source-id: bf37546a13e4a2153f7307ddeebddb23f27f4403
2022-04-28 14:42:50 -07:00

130 lines
3.8 KiB
Objective-C

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#ifdef FB_SONARKIT_ENABLED
#if !TARGET_OS_OSX
#import "FlipperDiagnosticsViewController.h"
#import "FlipperClient.h"
#define STATE_VIEW_HEIGHT 300
static NSString* const kSKCellIdentifier =
@"FlipperDiagnosticStateTableStableCellIdentifier";
@implementation StateTableDataSource
- (instancetype)initWithElements:(NSArray<NSDictionary*>*)elements {
self = [super init];
if (self) {
_elements = elements;
}
return self;
}
- (nonnull UITableViewCell*)tableView:(nonnull UITableView*)tableView
cellForRowAtIndexPath:(nonnull NSIndexPath*)indexPath {
NSInteger row = indexPath.row;
UITableViewCell* cell =
[tableView dequeueReusableCellWithIdentifier:kSKCellIdentifier
forIndexPath:indexPath];
cell.textLabel.font = [UIFont fontWithName:@"Arial" size:10];
cell.textLabel.text = [self.elements[row][@"state"]
stringByAppendingString:self.elements[row][@"name"]];
return cell;
}
- (NSInteger)tableView:(nonnull UITableView*)tableView
numberOfRowsInSection:(NSInteger)section {
return [self.elements count];
}
@end
@implementation FlipperDiagnosticsViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.scrollView = [[UIScrollView alloc]
initWithFrame:CGRectMake(
0,
STATE_VIEW_HEIGHT,
self.view.frame.size.width,
self.view.frame.size.height - 100 - STATE_VIEW_HEIGHT)];
self.logLabel =
[[UILabel alloc] initWithFrame:CGRectMake(
0,
0,
self.view.frame.size.width,
self.scrollView.frame.size.height)];
self.logLabel.numberOfLines = 0;
self.logLabel.font = [UIFont systemFontOfSize:10.0f];
[self.scrollView addSubview:self.logLabel];
self.stateTable = [[UITableView alloc]
initWithFrame:CGRectMake(
0, 0, self.view.bounds.size.width, STATE_VIEW_HEIGHT)];
[self.stateTable registerClass:[UITableViewCell class]
forCellReuseIdentifier:kSKCellIdentifier];
self.stateTable.rowHeight = 14;
self.tableDataSource = [[StateTableDataSource alloc]
initWithElements:[[FlipperClient sharedClient] getStateElements]];
self.stateTable.dataSource = self.tableDataSource;
[self updateLogView];
[self.view addSubview:self.stateTable];
[self.view addSubview:self.scrollView];
}
- (void)onUpdate {
FlipperDiagnosticsViewController __weak* weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf updateStateTable];
[weakSelf updateLogView];
});
}
- (void)updateStateTable {
self.tableDataSource.elements =
[[FlipperClient sharedClient] getStateElements];
[self.stateTable reloadData];
}
- (void)updateLogView {
NSString* state = [[FlipperClient sharedClient] getState];
self.logLabel.text = state;
[self.logLabel sizeToFit];
self.scrollView.contentSize = self.logLabel.frame.size;
// Scroll to bottom
CGPoint bottomOffset = CGPointMake(
0,
self.scrollView.contentSize.height - self.scrollView.bounds.size.height);
[self.scrollView setContentOffset:bottomOffset animated:YES];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
id<FlipperStateUpdateListener> weakSelf = self;
[[FlipperClient sharedClient] subscribeForUpdates:weakSelf];
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
@end
#endif
#endif