/** * 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. * * @format * @flow strict-local */ import type { PlatformTestResult, PlatformTestResultStatus, } from './RNTesterPlatformTestTypes'; import type {RenderItemProps} from 'react-native/Libraries/Lists/VirtualizedList'; import type { TextStyle, ViewStyleProp, } from 'react-native/Libraries/StyleSheet/StyleSheet'; import RNTesterPlatformTestMinimizedResultView from './RNTesterPlatformTestMinimizedResultView'; import RNTesterPlatformTestResultsText from './RNTesterPlatformTestResultsText'; import * as React from 'react'; import {useCallback, useMemo, useState} from 'react'; import { Button, FlatList, KeyboardAvoidingView, Modal, Platform, SafeAreaView, StyleSheet, Switch, Text, TextInput, TouchableOpacity, View, } from 'react-native'; const DISPLAY_STATUS_MAPPING: {[PlatformTestResultStatus]: string} = { PASS: 'Pass', FAIL: 'Fail', ERROR: 'Error', SKIPPED: 'Skipped', }; type FilterModalProps = $ReadOnly<{ filterText: string, setFilterText: (newFilterText: string) => void, filterFail: boolean, setFilterFail: (newFilterFail: boolean) => void, }>; function FilterModalButton(props: FilterModalProps) { const {filterText, setFilterText, filterFail, setFilterFail} = props; const [modalVisible, setModalVisible] = useState(false); const [pendingFilterText, setPendingFilterText] = useState(filterText); const onFilterButtonPress = useCallback(() => { setPendingFilterText(filterText); setModalVisible(true); }, [filterText]); const onFilterSubmit = useCallback(() => { setFilterText(pendingFilterText); setModalVisible(false); }, [pendingFilterText, setFilterText]); const onFilterCancel = useCallback(() => { setModalVisible(false); }, []); const onFilterFailStatus = useCallback( (value: boolean) => { setFilterFail(value); }, [setFilterFail], ); const onPendingTextChange = useCallback((newText: string) => { setPendingFilterText(newText); }, []); return ( <>