import {matchSorter} from 'match-sorter'; import React, {useEffect, useMemo, useRef, useState} from 'react'; import {ScrollView, Text, TextInput, View} from 'react-native'; import {AppDetail} from 'react-native-launcher-kit/typescript/Interfaces/InstalledApps'; import {useFavorites} from '../hooks/useFavorites'; import {TouchableOpacity} from 'react-native-gesture-handler'; import Icon from 'react-native-vector-icons/MaterialIcons'; export const AppList: React.FC<{apps: AppDetail[]; isActive: boolean}> = ({ apps, isActive, }) => { const {addToFavorites} = useFavorites(); const textInputRef = useRef(null); const [searchText, setSearchText] = useState(''); const filteredApps = useMemo(() => { if (searchText === '') return apps; return matchSorter(apps, searchText, {keys: ['label', 'packageName']}); }, [apps, searchText]); // Autofocus useEffect(() => { if (!textInputRef.current) return; if (isActive) TextInput.State.focusTextInput(textInputRef.current); }, [isActive]); return ( {filteredApps.map((app, index) => ( addToFavorites(app.packageName)}> {app.label} {app.packageName} ))} ); };