From 5d456899ea444301870e1d3c721d139c9251c531 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Fri, 27 Sep 2024 23:58:15 +0530 Subject: Fix too many updates issue with useFavorites + ui changes --- src/screens/AppList.tsx | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) (limited to 'src/screens') diff --git a/src/screens/AppList.tsx b/src/screens/AppList.tsx index ec83124..81c8f4f 100644 --- a/src/screens/AppList.tsx +++ b/src/screens/AppList.tsx @@ -1,12 +1,18 @@ import {matchSorter} from 'match-sorter'; -import React, {useMemo, useState} from 'react'; +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[]; screenIndex: number}> = ({ +export const AppList: React.FC<{apps: AppDetail[]; isActive: boolean}> = ({ apps, - screenIndex, + isActive, }) => { + const {addToFavorites} = useFavorites(); + + const textInputRef = useRef(null); const [searchText, setSearchText] = useState(''); const filteredApps = useMemo(() => { @@ -15,14 +21,22 @@ export const AppList: React.FC<{apps: AppDetail[]; screenIndex: number}> = ({ return matchSorter(apps, searchText, {keys: ['label', 'packageName']}); }, [apps, searchText]); + // Autofocus + useEffect(() => { + if (!textInputRef.current) return; + if (isActive) TextInput.State.focusTextInput(textInputRef.current); + }, [isActive]); + return ( - + + @@ -31,10 +45,13 @@ export const AppList: React.FC<{apps: AppDetail[]; screenIndex: number}> = ({ {filteredApps.map((app, index) => ( - - {app.label} - - {app.packageName} + addToFavorites(app.packageName)}> + + {app.label} + + {app.packageName} + ))} -- cgit v1.3.1