Added comments to PostsContainer
This commit is contained in:
		
							parent
							
								
									7b01c9e69a
								
							
						
					
					
						commit
						a4fefbe9ad
					
				
					 1 changed files with 39 additions and 2 deletions
				
			
		|  | @ -8,6 +8,14 @@ import { VirtualizedList } from "react-native"; | ||||||
| 
 | 
 | ||||||
| const WINDOW_SIZE = 20; | const WINDOW_SIZE = 20; | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * PostsContainer component for displaying a list of posts. | ||||||
|  |  * | ||||||
|  |  * @component | ||||||
|  |  * @param {object} props - React component props. | ||||||
|  |  * @param {object} props.navigation - Navigation object for navigating between screens. | ||||||
|  |  * @returns {JSX.Element} - Rendered PostsContainer component. | ||||||
|  |  */ | ||||||
| export function PostsContainer({ navigation }): JSX.Element { | export function PostsContainer({ navigation }): JSX.Element { | ||||||
|   const [postData, setPostData] = React.useState<Post[]>([]); |   const [postData, setPostData] = React.useState<Post[]>([]); | ||||||
|   const [offset, setOffset] = React.useState<number>(0); |   const [offset, setOffset] = React.useState<number>(0); | ||||||
|  | @ -18,6 +26,11 @@ export function PostsContainer({ navigation }): JSX.Element { | ||||||
|     fetchMorePosts(); |     fetchMorePosts(); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   /** | ||||||
|  |    * Handles the pull-to-refresh action. | ||||||
|  |    * @function | ||||||
|  |    * @returns {void} | ||||||
|  |    */ | ||||||
|   function onRefresh(): void { |   function onRefresh(): void { | ||||||
|     refreshPosts(); |     refreshPosts(); | ||||||
|   } |   } | ||||||
|  | @ -26,22 +39,35 @@ export function PostsContainer({ navigation }): JSX.Element { | ||||||
|     refreshPosts(); |     refreshPosts(); | ||||||
|   }, []); |   }, []); | ||||||
| 
 | 
 | ||||||
|   // Full refresh
 |   /** | ||||||
|  |    * Full refresh of posts. | ||||||
|  |    * @function | ||||||
|  |    * @returns {void} | ||||||
|  |    */ | ||||||
|   function refreshPosts(): void { |   function refreshPosts(): void { | ||||||
|     setRefreshing(true); |     setRefreshing(true); | ||||||
|     setPostData([]); |     setPostData([]); | ||||||
|     setOffset(WINDOW_SIZE); |     setOffset(WINDOW_SIZE); | ||||||
|  | 
 | ||||||
|  |     // Fetches posts from the API and updates the state.
 | ||||||
|     async function fetchPosts(): Promise<void> { |     async function fetchPosts(): Promise<void> { | ||||||
|       setPostData(await getPostsInterval(0, WINDOW_SIZE)); |       setPostData(await getPostsInterval(0, WINDOW_SIZE)); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     fetchPosts(); |     fetchPosts(); | ||||||
|     setRefreshing(false); |     setRefreshing(false); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   /** | ||||||
|  |    * Fetches more posts from the API and updates the state. | ||||||
|  |    * @function | ||||||
|  |    * @returns {void} | ||||||
|  |    */ | ||||||
|   function fetchMorePosts(): void { |   function fetchMorePosts(): void { | ||||||
|     async function fetchPosts(): Promise<void> { |     async function fetchPosts(): Promise<void> { | ||||||
|       setPostData([...postData, ...(await getPostsInterval(offset, WINDOW_SIZE))]); |       setPostData([...postData, ...(await getPostsInterval(offset, WINDOW_SIZE))]); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     fetchPosts(); |     fetchPosts(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -52,8 +78,10 @@ export function PostsContainer({ navigation }): JSX.Element { | ||||||
| 
 | 
 | ||||||
|   return ( |   return ( | ||||||
|     <> |     <> | ||||||
|  |       {/* Navigation button to create a new post */} | ||||||
|       <NavButton onPress={() => navigation.navigate("New")} text="New Post" /> |       <NavButton onPress={() => navigation.navigate("New")} text="New Post" /> | ||||||
|       <SafeAreaView style={style.postsContainer}> |       <SafeAreaView style={style.postsContainer}> | ||||||
|  |         {/* VirtualizedList to render the list of posts */} | ||||||
|         <VirtualizedList |         <VirtualizedList | ||||||
|           data={postData} |           data={postData} | ||||||
|           initialNumToRender={4} |           initialNumToRender={4} | ||||||
|  | @ -76,6 +104,15 @@ export function PostsContainer({ navigation }): JSX.Element { | ||||||
|   ); |   ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * NavButton component for rendering a navigation button. | ||||||
|  |  * | ||||||
|  |  * @component | ||||||
|  |  * @param {object} props - React component props. | ||||||
|  |  * @param {Function} props.onPress - Function to be called on button press. | ||||||
|  |  * @param {string} props.text - Text to be displayed on the button. | ||||||
|  |  * @returns {JSX.Element} - Rendered NavButton component. | ||||||
|  |  */ | ||||||
| function NavButton({ | function NavButton({ | ||||||
|   onPress, |   onPress, | ||||||
|   text, |   text, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 dDogge
						dDogge