armadiazrino

Untitled

Jun 22nd, 2022
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. import AsyncStorage from '@react-native-async-storage/async-storage';
  2. import {useFocusEffect} from '@react-navigation/native';
  3. import React, {useCallback, useState} from 'react';
  4. import {SafeAreaView, TextInput} from 'react-native';
  5. import AppHeader from '../../components/AppHeader';
  6. import ListCard from '../../components/ListCard';
  7. import style from './style';
  8.  
  9. const Bookmark = props => {
  10. const [bookmarkedMovies, setBookmarkedMovies] = useState([]);
  11. const [fullBookmarkedMovies, setFullBookmarkedMovies] = useState([]);
  12.  
  13. useFocusEffect(
  14. useCallback(() => {
  15. AsyncStorage.getItem('bookmark')
  16. .then(data => {
  17. if (data !== null || data !== undefined) {
  18. console.log('data', data);
  19. setBookmarkedMovies(JSON.parse(data));
  20. setFullBookmarkedMovies(JSON.parse(data));
  21. }
  22. })
  23. .catch(error => console.log('failed to get data :' + error));
  24. }, []),
  25. );
  26.  
  27. const openMovieDetail = item => {
  28. console.log('item', item);
  29. props.navigation.navigate('MovieDetail', {
  30. movieDetail: item,
  31. });
  32. };
  33.  
  34. const onSearch = text => {
  35. console.log('text to search', text);
  36. if (text === '') {
  37. // restore the search
  38. AsyncStorage.getItem('bookmark')
  39. .then(data => {
  40. if (data !== null || data !== undefined) {
  41. console.log('data', data);
  42. setBookmarkedMovies(JSON.parse(data));
  43. setFullBookmarkedMovies(JSON.parse(data));
  44. }
  45. })
  46. .catch(error => console.log('failed to get data :' + error));
  47. } else {
  48. // try to search
  49. const searchedData = [];
  50. fullBookmarkedMovies.forEach(item => {
  51. if (item.title.toLowerCase().includes(text)) {
  52. searchedData.push(item);
  53. }
  54. });
  55. setBookmarkedMovies(searchedData);
  56. }
  57. };
  58.  
  59. return (
  60. <SafeAreaView>
  61. <AppHeader />
  62. <TextInput style={style.textInput} placeholder={'Search Bookmark'} />
  63. <ListCard
  64. onSearch={onSearch}
  65. data={bookmarkedMovies}
  66. onPress={openMovieDetail}
  67. />
  68. </SafeAreaView>
  69. );
  70. };
  71.  
  72. export default Bookmark;
  73.  
Advertisement
Add Comment
Please, Sign In to add comment