Skip to content

Fix Flow and ESLint errors. #14

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 14, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .flowconfig
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@
.*/Libraries/polyfills/.*

; Ignore metro
; .*/node_modules/metro/.*
.*/node_modules/metro/.*

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How close does this get us to the CI loops passing? If we're still not close, there's always the risk these just break again without people realizing.

.*/node_modules/metro-config/src/configTypes.flow.js.flow

; Ignore rn-cli.config.js
<PROJECT_ROOT>/rn-cli.config.js

; These should not be required directly
; require from fbjs/lib instead: require('fbjs/lib/invariant')
Expand Down
2 changes: 1 addition & 1 deletion IntegrationTests/AsyncStorageTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ function testMerge() {
expectEqual(JSON.parse(result), VAL_MERGE_EXPECT, 'testMerge');
updateMessage('objects deeply merged\nDone!');
runTestCase('multi set and get', testOptimizedMultiGet);
});
});
});
});
} else {
Expand Down
13 changes: 9 additions & 4 deletions IntegrationTests/LayoutEventsTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,15 @@ const LayoutEventsTest = createReactClass({
},
animateViewLayout: function() {
debug('animateViewLayout invoked');
LayoutAnimation.configureNext(Platform.OS === 'macos' ? LayoutAnimation.Presets.easeInEaseOut : LayoutAnimation.Presets.spring, () => {
debug('animateViewLayout done');
this.checkLayout(this.addWrapText);
});
LayoutAnimation.configureNext(
Platform.OS === 'macos'
? LayoutAnimation.Presets.easeInEaseOut
: LayoutAnimation.Presets.spring,
() => {
debug('animateViewLayout done');
this.checkLayout(this.addWrapText);
},
);
this.setState({viewStyle: {margin: 60}});
},
addWrapText: function() {
Expand Down
4 changes: 2 additions & 2 deletions Libraries/Alert/Alert.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ class Alert {
return;
}
AlertIOS.alert(title, message, buttons);
} else if (Platform.OS === 'macos') { // TODO(macOS ISS#2323203)
AlertMacOS.alert(title, message, buttons); // TODO(macOS ISS#2323203)
} else if (Platform.OS === 'macos' /* TODO[(macOS ISS#2323203) */) {
AlertMacOS.alert(title, message, buttons); // TODO](macOS ISS#2323203)
} else if (Platform.OS === 'android') {
AlertAndroid.alert(title, message, buttons, options);
}
Expand Down
33 changes: 17 additions & 16 deletions Libraries/Alert/AlertMacOS.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

'use strict';

import type { AlertType, AlertButtonStyle } from 'AlertIOS';
import type {AlertType, AlertButtonStyle} from 'AlertIOS';

var RCTAlertManager = require('NativeModules').AlertManager;

Expand Down Expand Up @@ -175,13 +175,11 @@ class AlertMacOS {
modal?: ?boolean,
critical?: ?boolean,
): void {

var callbacks = [];
var buttons = [];
if (typeof callbackOrButtons === 'function') {
callbacks = [callbackOrButtons];
}
else if (callbackOrButtons instanceof Array) {
} else if (callbackOrButtons instanceof Array) {
callbackOrButtons.forEach((btn, index) => {
callbacks[index] = btn.onPress;
if (btn.text || index < (callbackOrButtons || []).length - 1) {
Expand All @@ -192,18 +190,21 @@ class AlertMacOS {
});
}

RCTAlertManager.alertWithArgs({
title: title || undefined,
message: message || undefined,
buttons,
type: type || undefined,
defaultInputs,
modal: modal || undefined,
critical: critical || undefined,
}, (id, value) => {
var cb = callbacks[id];
cb && cb(value);
});
RCTAlertManager.alertWithArgs(
{
title: title || undefined,
message: message || undefined,
buttons,
type: type || undefined,
defaultInputs,
modal: modal || undefined,
critical: critical || undefined,
},
(id, value) => {
var cb = callbacks[id];
cb && cb(value);
},
);
}
}

Expand Down
5 changes: 4 additions & 1 deletion Libraries/Animated/src/nodes/AnimatedInterpolation.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,10 @@ function interpolate(

function colorToRgba(input: string): string {
let int32Color = normalizeColor(input);
if (int32Color === null || typeof int32Color !== 'number') { // TODO(macOS ISS#2323203)
if (
int32Color === null ||
typeof int32Color !== 'number' /* TODO(macOS ISS#2323203) */
) {
return input;
}

Expand Down
21 changes: 14 additions & 7 deletions Libraries/Color/normalizeColor.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,17 @@ export type SemanticOrDynamicColorType = {
semantic?: string,
dynamic?: {
light: ?(string | number | SemanticOrDynamicColorType),
dark: ?(string | number | SemanticOrDynamicColorType)
}
dark: ?(string | number | SemanticOrDynamicColorType),
},
}; // ]TODO(macOS ISS#2323203)

function normalizeColor(color: ?(string | number | SemanticOrDynamicColorType)): ?(number | SemanticOrDynamicColorType) { // TODO(macOS ISS#2323203)
function normalizeColor(
color: ?(
| string
| number
| SemanticOrDynamicColorType
) /* TODO(macOS ISS#2323203) */,
): ?(number | SemanticOrDynamicColorType) /* TODO(macOS ISS#2323203) */ {
const matchers = getMatchers();
let match;

Expand All @@ -32,7 +38,8 @@ function normalizeColor(color: ?(string | number | SemanticOrDynamicColorType)):
return null;
}

if (typeof color === 'object' && color !== null && Platform.OS === 'macos') { // [TODO(macOS ISS#2323203)
if (typeof color === 'object' && color !== null && Platform.OS === 'macos') {
// [TODO(macOS ISS#2323203)
if ('semantic' in color) {
// a macos semantic color
return color;
Expand All @@ -42,12 +49,12 @@ function normalizeColor(color: ?(string | number | SemanticOrDynamicColorType)):
const dynamicColor: SemanticOrDynamicColorType = {
dynamic: {
light: normalizeColor(dynamic.light),
dark: normalizeColor(dynamic.dark)
}
dark: normalizeColor(dynamic.dark),
},
};
return dynamicColor;
}
}
}
if (typeof color !== 'string') {
return null;
} // ]TODO(macOS ISS#2323203)
Expand Down
5 changes: 3 additions & 2 deletions Libraries/Components/ActivityIndicator/ActivityIndicator.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const requireNativeComponent = require('requireNativeComponent');

import type {NativeComponent} from 'ReactNative';
import type {ViewProps} from 'ViewPropTypes';
import type {SemanticOrDynamicColorType} from 'normalizeColor'; // ]TODO(macOS ISS#2323203)

const RCTActivityIndicator =
Platform.OS === 'android'
Expand Down Expand Up @@ -53,7 +54,7 @@ type Props = $ReadOnly<{|
*
* See http://facebook.github.io/react-native/docs/activityindicator.html#color
*/
color?: ?string,
color?: ?(string | SemanticOrDynamicColorType), // ]TODO(macOS ISS#2323203)

/**
* Size of the indicator (default is 'small').
Expand Down Expand Up @@ -115,7 +116,7 @@ const ActivityIndicatorWithRef = React.forwardRef(ActivityIndicator);

ActivityIndicatorWithRef.defaultProps = {
animating: true,
color: (Platform.OS === 'ios' || Platform.OS === 'macos') ? GRAY : null, // TODO(macOS ISS#2323203)
color: Platform.OS === 'ios' || Platform.OS === 'macos' ? GRAY : null, // TODO(macOS ISS#2323203)
hidesWhenStopped: true,
size: 'small',
};
Expand Down
39 changes: 24 additions & 15 deletions Libraries/Components/Button.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ class Button extends React.Component<{
*/
accessibilityLabel: PropTypes.string,
/**
* Hint text to display blindness accessibility features
*/
* Hint text to display blindness accessibility features
*/
accessibilityHint: PropTypes.string, // TODO(OSS Candidate ISS#2710739)
/**
* Color of the text (iOS, macOS), or background color of the button (Android)
Expand Down Expand Up @@ -110,7 +110,10 @@ class Button extends React.Component<{
const buttonStyles = [styles.button];
const textStyles = [styles.text];
if (color) {
if (Platform.OS === 'ios' || Platform.OS === 'macos') { // TODO(macOS ISS#2323203)
if (
Platform.OS === 'ios' ||
Platform.OS === 'macos' /* TODO(macOS ISS#2323203) */
) {
textStyles.push({color: color});
} else {
buttonStyles.push({backgroundColor: color});
Expand All @@ -129,11 +132,11 @@ class Button extends React.Component<{
const formattedTitle =
Platform.OS === 'android' ? title.toUpperCase() : title;
const Touchable =
(Platform.OS === 'android') // [TODO(windows ISS)
? TouchableNativeFeedback
: (Platform.OS === 'uwp' || Platform.OS === 'windesktop')
? TouchableHighlight
: TouchableOpacity; // ]TODO(windows ISS)
Platform.OS === 'android' // [TODO(windows ISS)
? TouchableNativeFeedback
: Platform.OS === 'uwp' || Platform.OS === 'windesktop'
? TouchableHighlight
: TouchableOpacity; // ]TODO(windows ISS)
return (
<Touchable
accessibilityLabel={accessibilityLabel}
Expand Down Expand Up @@ -164,11 +167,12 @@ const styles = StyleSheet.create({
borderRadius: 2,
},
macos: {}, // TODO(macOS ISS#2323203)
uwp: { // [TODO(windows ISS)
uwp: {
// [TODO(windows ISS)
backgroundColor: '#2196F3',
borderRadius: 2,
},
windesktop: {}, // ]TODO(windows ISS)
windesktop: {}, // ]TODO(windows ISS)
}),
text: Platform.select({
ios: {
Expand All @@ -184,13 +188,15 @@ const styles = StyleSheet.create({
padding: 8,
fontWeight: '500',
},
macos: { // [TODO(macOS ISS#2323203)
macos: {
// [TODO(macOS ISS#2323203)
color: '#007AFF',
textAlign: 'center',
padding: 8,
fontSize: 18,
}, // ]TODO(macOS ISS#2323203)
uwp: { // [TODO(windows ISS)
uwp: {
// [TODO(windows ISS)
textAlign: 'center',
color: 'white',
padding: 8,
Expand All @@ -205,7 +211,8 @@ const styles = StyleSheet.create({
backgroundColor: '#dfdfdf',
},
macos: {}, // TODO(macOS ISS#2323203)
uwp: { // [TODO(windows ISS)
uwp: {
// [TODO(windows ISS)
backgroundColor: '#dfdfdf',
},
windesktop: {}, // ]TODO(windows ISS)
Expand All @@ -214,13 +221,15 @@ const styles = StyleSheet.create({
ios: {
color: '#cdcdcd',
},
macos: { // [TODO(macOS ISS#2323203)
macos: {
// [TODO(macOS ISS#2323203)
color: '#cdcdcd',
}, // ]TODO(macOS ISS#2323203)
android: {
color: '#a1a1a1',
},
uwp: { // [TODO(windows ISS)
uwp: {
// [TODO(windows ISS)
color: '#a1a1a1',
},
windesktop: {
Expand Down
6 changes: 4 additions & 2 deletions Libraries/Components/DatePicker/DatePickerIOS.macos.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ class DummyDatePickerIOS extends React.Component {
render() {
return (
<View style={[styles.dummyDatePickerIOS, this.props.style]}>
<Text style={styles.datePickerText}>DatePickerIOS is not supported on this platform!</Text>
<Text style={styles.datePickerText}>
DatePickerIOS is not supported on this platform!
</Text>
</View>
);
}
Expand All @@ -40,7 +42,7 @@ var styles = StyleSheet.create({
datePickerText: {
color: '#333333',
margin: 20,
}
},
});

module.exports = DummyDatePickerIOS;
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
const DatePickerAndroid = {
async open(options: Object): Promise<Object> {
return Promise.reject({
message: 'DatePickerAndroid is not supported on this platform.'
message: 'DatePickerAndroid is not supported on this platform.',
});
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ var StyleSheet = require('StyleSheet');
var Text = require('Text');
var View = require('View');

class dummyDatePickerMacOS extends React.Component {
class DummyDatePickerMacOS extends React.Component {
render() {
return (
<View style={[styles.dummyDatePickerMacOS, this.props.style]}>
Expand All @@ -38,7 +38,7 @@ var styles = StyleSheet.create({
datePickerText: {
color: '#333333',
margin: 20,
}
},
});

module.exports = DummyDatePickerMacOS;
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ var styles = StyleSheet.create({
datePickerText: {
color: '#333333',
margin: 20,
}
},
});

module.exports = DummyDatePickerMacOS;
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ const DatePickerMacOS = createReactClass({
/>
</View>
);
}
},
});

const RCTDatePickerMacOS = requireNativeComponent('RCTDatePicker' /* TODO refactor as class that extends React.Component<Props>, {
Expand Down
5 changes: 4 additions & 1 deletion Libraries/Components/Picker/Picker.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,10 @@ class Picker extends React.Component<{
};

render() {
if (Platform.OS === 'ios' || Platform.OS === 'macos') { // TODO(macOS ISS#2323203)
if (
Platform.OS === 'ios' ||
Platform.OS === 'macos' /* TODO(macOS ISS#2323203) */
) {
// $FlowFixMe found when converting React.createClass to ES6
return <PickerIOS {...this.props}>{this.props.children}</PickerIOS>;
} else if (Platform.OS === 'android') {
Expand Down
2 changes: 1 addition & 1 deletion Libraries/Components/Picker/PickerIOS.ios.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import type {SyntheticEvent} from 'CoreEventTypes';
import type {ColorValue} from 'StyleSheetTypes';
import type {ViewProps} from 'ViewPropTypes';
import type {TextStyleProp} from 'StyleSheet';
import type {SemanticOrDynamicColorType} from 'normalizeColor' // ]TODO(macOS ISS#2323203)
import type {SemanticOrDynamicColorType} from 'normalizeColor'; // ]TODO(macOS ISS#2323203)

type PickerIOSChangeEvent = SyntheticEvent<
$ReadOnly<{|
Expand Down
Loading