From 8cc7d5b6f50953c1d41b97134569601de888c69f Mon Sep 17 00:00:00 2001 From: Fabrizio Cucci Date: Wed, 22 May 2024 02:26:04 -0700 Subject: [PATCH] Drop unused code + minor lint fixes (#44645) Summary: Changelog: [Internal] As per title. Differential Revision: D57664819 --- packages/core-cli-utils/src/private/utils.js | 1 - .../InspectorProxyCdpRewritingHacks-test.js | 2 - .../__tests__/InspectorProxyHttpApi-test.js | 2 - packages/react-native-bots/dangerfile.js | 82 ----------------- .../Libraries/Inspector/ElementProperties.js | 2 +- .../Libraries/JSInspector/NetworkAgent.js | 5 +- .../rn-tester/js/components/RNTTitleBar.js | 2 +- .../PanResponder/PanResponderExample.js | 10 +- .../examples/ScrollView/ScrollViewExample.js | 66 ++++++------- .../js/examples/Text/TextExample.android.js | 92 +++++++++---------- .../Lists/VirtualizedSectionList.js | 2 - 11 files changed, 82 insertions(+), 184 deletions(-) diff --git a/packages/core-cli-utils/src/private/utils.js b/packages/core-cli-utils/src/private/utils.js index 3c2f096b5cdd..396d29eed20e 100644 --- a/packages/core-cli-utils/src/private/utils.js +++ b/packages/core-cli-utils/src/private/utils.js @@ -41,7 +41,6 @@ type PathCheckResult = { export function isOnPath(dep: string, description: string): PathCheckResult { const cmd = isWindows ? ['where', [dep]] : ['command', ['-v', dep]]; try { - const args = isWindows ? ['where', [dep]] : ['command', ['-v', dep]]; return { dep, description, diff --git a/packages/dev-middleware/src/__tests__/InspectorProxyCdpRewritingHacks-test.js b/packages/dev-middleware/src/__tests__/InspectorProxyCdpRewritingHacks-test.js index 2f5eab91061b..969e7322ec81 100644 --- a/packages/dev-middleware/src/__tests__/InspectorProxyCdpRewritingHacks-test.js +++ b/packages/dev-middleware/src/__tests__/InspectorProxyCdpRewritingHacks-test.js @@ -9,8 +9,6 @@ * @oncall react_native */ -import type {TargetCapabilityFlags} from '../inspector-proxy/types'; - import {allowSelfSignedCertsInNodeFetch} from './FetchUtils'; import { createAndConnectTarget, diff --git a/packages/dev-middleware/src/__tests__/InspectorProxyHttpApi-test.js b/packages/dev-middleware/src/__tests__/InspectorProxyHttpApi-test.js index e5501b8e3ceb..0baa42ccbb0b 100644 --- a/packages/dev-middleware/src/__tests__/InspectorProxyHttpApi-test.js +++ b/packages/dev-middleware/src/__tests__/InspectorProxyHttpApi-test.js @@ -19,8 +19,6 @@ import {createDeviceMock} from './InspectorDeviceUtils'; import {withAbortSignalForEachTest} from './ResourceUtils'; import {withServerForEachTest} from './ServerUtils'; -import nullthrows from 'nullthrows'; - // Must be greater than or equal to PAGES_POLLING_INTERVAL in `InspectorProxy.js`. const PAGES_POLLING_DELAY = 1000; diff --git a/packages/react-native-bots/dangerfile.js b/packages/react-native-bots/dangerfile.js index 032a788e4214..46335db690b9 100644 --- a/packages/react-native-bots/dangerfile.js +++ b/packages/react-native-bots/dangerfile.js @@ -15,7 +15,6 @@ const {danger, fail, /*message,*/ warn} = require('danger'); const includes = require('lodash.includes'); -const fetch = require('node-fetch'); const {validate: validateChangelog} = require('@rnx-kit/rn-changelog-generator').default; @@ -101,84 +100,3 @@ if (isMergeRefStable) { labels: ['Pick Request'], }); } - -// Wait for statuses and post a message if there are failures. -async function handleStatuses() { - const regex = /Test Suites: \d+ failed/; - let startChecking = Date.now(); - let done = false; - while (!done) { - let now = Date.now(); - if (now - startChecking > 90 * 60 * 1000) { - warn( - "One hour and a half have passed and the E2E jobs haven't finished yet.", - ); - done = true; - continue; - } - - const githubBaseURL = `https://api.github.com/repos/${danger.github.pr.base.repo.owner.login}/${danger.github.pr.base.repo.name}`; - const statusesURL = `${githubBaseURL}/commits/${danger.github.pr.head.sha}/statuses?per_page=100`; - - const response = await fetch(statusesURL, { - headers: { - Accept: 'application/vnd.github+json', - 'X-GitHub-Api-Version': '2022-11-28', - Authorization: `Bearer ${process.env.DANGER_GITHUB_API_TOKEN}`, - }, - }); - - const data = await response.json(); - const e2e_jobs = data.filter(job => { - return ( - job.context === 'ci/circleci: test_e2e_ios' - // test_e2e_android does not currently tun - // || job.context === 'ci/circleci: test_e2e_android' - ); - }); - if (e2e_jobs.length <= 0) { - console.log('No e2e jobs found yet, retrying in 5 minutes.'); - await new Promise(resolve => setTimeout(resolve, 5 * 60 * 1000)); - continue; - } - - const jobFinished = e2e_jobs.every(job => job.state !== 'pending'); - if (!jobFinished) { - console.log("E2E jobs haven't finished yet, retrying in 5 minutes."); - await new Promise(resolve => setTimeout(resolve, 5 * 60 * 1000)); - continue; - } - - e2e_jobs.forEach(async job => { - const url = job.target_url; - const components = url.split('/'); - const jobId = components[components.length - 1]; - const jobUrl = `https://circleci.com/api/v2/project/gh/facebook/react-native/${jobId}`; - const artifactUrl = `${jobUrl}/artifacts`; - const artifactResponse = await fetch(artifactUrl); - const artifactData = await artifactResponse.json(); - const testLogs = artifactData.items.filter( - item => item.path === 'tmp/test_log', - ); - if (testLogs.length !== 1) { - warn( - `Can't find the E2E test log for ${job.context}. Job link`, - ); - return; - } - - const logUrl = testLogs[0].url; - const logResponseText = await fetch(logUrl); - const logText = await logResponseText.text(); - - if (regex.test(logText)) { - warn( - `E2E tests for ${job.context} failed with errors. See the logs for details`, - ); - } - }); - done = true; - } -} - -// handleStatuses(); diff --git a/packages/react-native/Libraries/Inspector/ElementProperties.js b/packages/react-native/Libraries/Inspector/ElementProperties.js index 6a6e8c323b70..750eceb4f440 100644 --- a/packages/react-native/Libraries/Inspector/ElementProperties.js +++ b/packages/react-native/Libraries/Inspector/ElementProperties.js @@ -71,7 +71,7 @@ class ElementProperties extends React.Component { - {} + diff --git a/packages/react-native/Libraries/JSInspector/NetworkAgent.js b/packages/react-native/Libraries/JSInspector/NetworkAgent.js index 0448bb5125bb..ec1585a5b669 100644 --- a/packages/react-native/Libraries/JSInspector/NetworkAgent.js +++ b/packages/react-native/Libraries/JSInspector/NetworkAgent.js @@ -10,8 +10,6 @@ 'use strict'; -import type EventSender from './InspectorAgent'; - const XMLHttpRequest = require('../Network/XMLHttpRequest'); const InspectorAgent = require('./InspectorAgent'); const JSInspector = require('./JSInspector'); @@ -232,7 +230,7 @@ class Interceptor { const event: LoadingFinishedEvent = { requestId: String(id), timestamp: JSInspector.getTimestamp(), - encodedDataLength: encodedDataLength, + encodedDataLength, }; this._agent.sendEvent('loadingFinished', event); } @@ -262,7 +260,6 @@ type EnableArgs = { class NetworkAgent extends InspectorAgent { static DOMAIN: $TEMPORARY$string<'Network'> = 'Network'; - _sendEvent: EventSender; _interceptor: ?Interceptor; enable({maxResourceBufferSize, maxTotalBufferSize}: EnableArgs) { diff --git a/packages/rn-tester/js/components/RNTTitleBar.js b/packages/rn-tester/js/components/RNTTitleBar.js index 8c2ee0dc417f..da8ce36d7c87 100644 --- a/packages/rn-tester/js/components/RNTTitleBar.js +++ b/packages/rn-tester/js/components/RNTTitleBar.js @@ -36,7 +36,7 @@ const HeaderIOS = ({ - + {title} {documentationURL && ( diff --git a/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js b/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js index 5d7cfbd32094..a57b271a13b7 100644 --- a/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js +++ b/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js @@ -20,13 +20,6 @@ const RNTesterPage = require('../../components/RNTesterPage'); const React = require('react'); const {PanResponder, StyleSheet, View} = require('react-native'); -type CircleStyles = { - backgroundColor?: string, - left?: number, - top?: number, - ... -}; - const CIRCLE_SIZE = 80; type Props = $ReadOnly<{||}>; @@ -39,7 +32,6 @@ type State = {| class PanResponderExample extends React.Component { _previousLeft: number = 20; _previousTop: number = 84; - _circleStyles: {|style: CircleStyles|} = {style: {}}; circle: ?React.ElementRef = null; state: State = { @@ -147,7 +139,7 @@ exports.description = exports.examples = [ { title: 'Basic gesture handling', - render: function (): React.Element { + render(): React.Element { return ; }, }, diff --git a/packages/rn-tester/js/examples/ScrollView/ScrollViewExample.js b/packages/rn-tester/js/examples/ScrollView/ScrollViewExample.js index ab89d4b429ea..75b8fde134b6 100644 --- a/packages/rn-tester/js/examples/ScrollView/ScrollViewExample.js +++ b/packages/rn-tester/js/examples/ScrollView/ScrollViewExample.js @@ -265,7 +265,7 @@ const examples: Array = [ title: ' (horizontal = true)\n', description: "You can display 's child components horizontally rather than vertically", - render: function (): React.Node { + render(): React.Node { return ( @@ -278,7 +278,7 @@ const examples: Array = [ title: ' (horizontal = true) in RTL\n', description: "You can display 's child components horizontally rather than vertically", - render: function (): React.Node { + render(): React.Node { return ( @@ -289,14 +289,14 @@ const examples: Array = [ { title: ' enable & disable\n', description: 'ScrollView scrolling behaviour can be disabled and enabled', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: ' Content\n', description: 'Adjust properties of content inside ScrollView.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -304,7 +304,7 @@ const examples: Array = [ title: ' Deceleration Rate\n', description: 'Determines how quickly the scroll view decelerates after the user lifts their finger.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -312,7 +312,7 @@ const examples: Array = [ title: ' Enable & Disable Scrolling Behavior\n', description: 'DirectionalLockEnabled (iOS), disableIntervalMomentum, disableScrollViewPanResponder can be enabled or disabled.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -321,7 +321,7 @@ const examples: Array = [ title: ' Invert Sticky Headers\n', description: 'If sticky headers should stick at the bottom instead of the top of the ScrollView. This is usually used with inverted ScrollViews.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -330,7 +330,7 @@ const examples: Array = [ title: ' Multiple Sticky Headers\n', description: 'Scroll down to see 3 sticky headers stick when they get to the top.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -339,7 +339,7 @@ const examples: Array = [ title: ' Pressable Sticky Header\n', description: 'Press the blue box to toggle it between blue and yellow. The box should remain Pressable after scrolling.', - render: function (): React.Node { + render(): React.Node { return ( @@ -352,7 +352,7 @@ const examples: Array = [ title: ' Keyboard Options\n', description: 'Toggle the keyboard using the search bar and determine keyboard behavior in response to drag and tap.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -360,7 +360,7 @@ const examples: Array = [ title: ' OnContentSizeChange\n', description: 'The text below will change when scrollable content view of the ScrollView changes.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -368,7 +368,7 @@ const examples: Array = [ title: ' OnMomentumScroll\n', description: 'An alert will be called when the momentum scroll starts or ends.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -376,14 +376,14 @@ const examples: Array = [ title: ' OnScroll Options\n', description: 'Change the behavior of onScroll using these options: onScrollBeginDrag, onScrollEndDrag, onScrollToTop (iOS), and overScrollMode (Android).', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: ' RefreshControl\n', description: 'Pull down to see RefreshControl indicator.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -391,28 +391,28 @@ const examples: Array = [ title: ' Remove Clipped Subviews\n', description: 'When true, offscreen child views (whose overflow value is hidden) are removed from their native backing superview when offscreen.', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: ' Scroll Indicator\n', description: 'Adjust properties of the scroll indicator.', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: ' SnapTo Options\n', description: 'Adjust properties of snapping to the scroll view.', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: ' (contentOffset = {x: 100, y: 0})\n', description: 'Initial contentOffset can be set on ScrollView.', - render: function (): React.Node { + render(): React.Node { return ; }, }, @@ -421,7 +421,7 @@ const examples: Array = [ description: 'The `maintainVisibleContentPosition` prop allows insertions to either end of the content ' + 'without causing the visible content to jump. Re-ordering is not supported.', - render: function () { + render() { return ; }, }, @@ -432,14 +432,14 @@ if (Platform.OS === 'ios') { title: ' (centerContent = true)\n', description: 'ScrollView puts its content in the center if the content is smaller than scroll view', - render: function (): React.Node { + render(): React.Node { return ; }, }); examples.push({ title: ' Always Bounces\n', description: 'Always bounce vertically or horizontally.', - render: function (): React.Node { + render(): React.Node { return ( <> Vertical @@ -453,28 +453,28 @@ if (Platform.OS === 'ios') { examples.push({ title: ' Bounces & Bounces Zoom\n', description: 'There are different options for bouncing behavior.', - render: function (): React.Node { + render(): React.Node { return ; }, }); examples.push({ title: ' Indicator Style\n', description: 'There are different options for indicator style colors.', - render: function (): React.Node { + render(): React.Node { return ; }, }); examples.push({ title: ' Maximum & Minimum Zoom Scale\n', description: 'Set the maximum and minimum allowed zoom scale.', - render: function (): React.Node { + render(): React.Node { return ; }, }); examples.push({ title: ' Maximum & Minimum Zoom Scale\n', description: 'Set the maximum and minimum allowed zoom scale.', - render: function (): React.Node { + render(): React.Node { return ; }, }); @@ -482,7 +482,7 @@ if (Platform.OS === 'ios') { title: ' ScrollTo Options\n', description: 'Toggle scrollToOverflowEnabled and scrollsToTop. When scrollToOverflowEnabled is true, the scroll view can be programmatically scrolled beyond its content size. When scrollsToTop is true, the scroll view scrolls to top when the status bar is tapped.', - render: function (): React.Node { + render(): React.Node { return ; }, }); @@ -490,14 +490,14 @@ if (Platform.OS === 'ios') { examples.push({ title: ' EndFillColor & FadingEdgeLength\n', description: 'Toggle to set endFillColor and fadingEdgeLength.', - render: function (): React.Node { + render(): React.Node { return ; }, }); examples.push({ title: ' persistentScrollBar\n', description: 'Toggle to set persistentScrollbar option.', - render: function (): React.Node { + render(): React.Node { return ; }, }); @@ -968,7 +968,7 @@ const InvertStickyHeaders = () => { invertStickyHeaders={invertStickyHeaders} nestedScrollEnabled testID="scroll_sticky_header"> - {STICKY HEADER} + STICKY HEADER {ITEMS.map(createItemRow)} @@ -1009,11 +1009,11 @@ const MultipleStickyHeaders = () => { stickyHeaderIndices={[0, 13, 26]} nestedScrollEnabled testID="scroll_multiple_sticky_headers"> - {} + {ITEMS.map(createItemRow)} - {} + {ITEMS.map(createItemRow)} - {} + {ITEMS.map(createItemRow)} @@ -1290,7 +1290,7 @@ class Item extends React.PureComponent<{| } } -let ITEMS = [...Array(12)].map((_, i) => `Item ${i}`); +const ITEMS = [...Array(12)].map((_, i) => `Item ${i}`); const createItemRow = (msg: string, index: number) => ( diff --git a/packages/rn-tester/js/examples/Text/TextExample.android.js b/packages/rn-tester/js/examples/Text/TextExample.android.js index f5bbc0727e98..6746c5d15063 100644 --- a/packages/rn-tester/js/examples/Text/TextExample.android.js +++ b/packages/rn-tester/js/examples/Text/TextExample.android.js @@ -16,8 +16,6 @@ import TextLegend from '../../components/TextLegend'; import TextAdjustsDynamicLayoutExample from './TextAdjustsDynamicLayoutExample'; import TextInlineViewsExample from './TextInlineViewsExample'; -const RNTesterBlock = require('../../components/RNTesterBlock'); -const RNTesterPage = require('../../components/RNTesterPage'); const TextInlineView = require('../../components/TextInlineView'); const React = require('react'); const {LayoutAnimation, StyleSheet, Text, View} = require('react-native'); @@ -968,21 +966,21 @@ const examples = [ { title: 'Dynamic Font Size Adjustment', name: 'ajustingFontSize', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Font Size Adjustment with Dynamic Layout', name: 'textAdjustsDynamicLayout', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Wrap', name: 'wrap', - render: function (): React.Node { + render(): React.Node { return ( The text should wrap if it goes on multiple lines. See, this is going @@ -994,14 +992,14 @@ const examples = [ { title: 'Hyphenation', name: 'hyphenation', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Padding', name: 'padding', - render: function (): React.Node { + render(): React.Node { return ( This text is indented by 10px padding on all sides. @@ -1012,35 +1010,35 @@ const examples = [ { title: 'Text metrics legend', name: 'textMetricLegend', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Font Family', name: 'fontFamily', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Android Material Design Fonts', name: 'androidMaterialDesignFonts', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Custom Fonts', name: 'customFonts', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Font Size', name: 'fontSize', - render: function (): React.Node { + render(): React.Node { return ( <> Size 23 @@ -1052,7 +1050,7 @@ const examples = [ { title: 'Color', name: 'color', - render: function (): React.Node { + render(): React.Node { return ( <> Red color @@ -1064,14 +1062,14 @@ const examples = [ { title: 'Font Weight', name: 'fontWeight', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Font Style', name: 'fontStyle', - render: function (): React.Node { + render(): React.Node { return ( <> Move fast and be italic @@ -1083,7 +1081,7 @@ const examples = [ { title: 'Font Style and Weight', name: 'fontStyleAndWeight', - render: function (): React.Node { + render(): React.Node { return ( Move fast and be both bold and italic @@ -1094,35 +1092,35 @@ const examples = [ { title: 'Text Decoration', name: 'textDecoration', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Nested', name: 'nested', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Text Align', name: 'textAlign', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Unicode', name: 'unicode', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Spaces', name: 'spaces', - render: function (): React.Node { + render(): React.Node { return ( A {'generated'} {'string'} and some     spaces @@ -1133,63 +1131,63 @@ const examples = [ { title: 'Line Height', name: 'lineHeight', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Letter Spacing', name: 'letterSpacing', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Empty Text', name: 'emptyText', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Toggling Attributes', name: 'togglingAttributes', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'backgroundColor attribute', name: 'backgroundColorAttribute', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'containerBackgroundColor attribute', name: 'containerBackgroundColorAttribute', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'numberOfLines attribute', name: 'numberOfLines', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'allowFontScaling attribute', name: 'allowFontScaling', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'selectable attribute', name: 'selectable', - render: function (): React.Node { + render(): React.Node { return ( This text is selectable if you click-and-hold, and will offer the @@ -1201,7 +1199,7 @@ const examples = [ { title: 'selectionColor attribute', name: 'selectionColor', - render: function (): React.Node { + render(): React.Node { return ( This text will have a orange highlight on selection. @@ -1212,84 +1210,84 @@ const examples = [ { title: 'Inline views', name: 'inlineViewsBasic', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Inline views with multiple nested texts', name: 'inlineViewsMultiple', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Inline image/view clipped by ', name: 'inlineViewsClipped', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Relayout inline image', name: 'relayoutInlineImage', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Relayout inline view', name: 'relayoutInlineView', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Relayout nested inline view', name: 'relayoutNestedInlineView', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Text shadow', name: 'textShadow', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Ellipsize mode', name: 'ellipsizeMode', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Font variants', name: 'fontVariants', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Include Font Padding', name: 'includeFontPadding', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Text Transform', name: 'textTransform', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Substring Emoji (should only see "test")', name: 'substringEmoji', - render: function (): React.Node { + render(): React.Node { return {'test🙃'.substring(0, 5)}; }, }, @@ -1297,21 +1295,21 @@ const examples = [ { title: 'Text linkify', name: 'textLinkify', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: "Text `alignItems: 'baseline'` style", name: 'alignItemsBaseline', - render: function (): React.Node { + render(): React.Node { return ; }, }, { title: 'Selectable Text', name: 'selectableText', - render: function (): React.Node { + render(): React.Node { return ( Text element is selectable @@ -1322,7 +1320,7 @@ const examples = [ { title: 'Text alignment', name: 'textAlignment', - render: function (): React.Node { + render(): React.Node { return ( diff --git a/packages/virtualized-lists/Lists/VirtualizedSectionList.js b/packages/virtualized-lists/Lists/VirtualizedSectionList.js index 58221a0ca7f7..96003a8c6449 100644 --- a/packages/virtualized-lists/Lists/VirtualizedSectionList.js +++ b/packages/virtualized-lists/Lists/VirtualizedSectionList.js @@ -14,8 +14,6 @@ import VirtualizedList from './VirtualizedList'; import {keyExtractor as defaultKeyExtractor} from './VirtualizeUtils'; import invariant from 'invariant'; import * as React from 'react'; -import {View} from 'react-native'; - type Item = any; export type SectionBase = {