diff --git a/Views/Courses.js b/Views/Courses.js
index 865a0ca..30f80d6 100644
--- a/Views/Courses.js
+++ b/Views/Courses.js
@@ -1,11 +1,12 @@
import React, { useEffect } from "react";
import { Searchbar, Title } from 'react-native-paper';
-import { ScrollView, ActivityIndicator, StyleSheet, SafeAreaView, FlatList, View } from 'react-native';
+import { ScrollView, ActivityIndicator, StyleSheet, SafeAreaView, View } from 'react-native';
import API from "../API";
import CourseCard from "../components/CourseCard";
import { useSnapshot } from 'valtio';
import GlobalState from '../contexts/GlobalState.js';
import i18n from "../i18nMessages.js";
+import AsyncStorage from '@react-native-async-storage/async-storage';
const getCourses = async (profileObj) => {
let courses;
@@ -116,15 +117,23 @@ const Courses = () => {
}, 300);
setQueryTimer(timerId);
};
- const renderProfile = (({ item }) => {
- return ();
- });
- const watchingCourse = (({ item }) => {
- return ();
- });
- const renderCoursesQuery = (({ item }) => {
- return ();
- });
+ const renderCourseCards = (items = [], twoCols = false) => {
+ return items.map((item, index) => (
+
+ ));
+ };
+ const renderWatchingCards = (items = []) => {
+ return items.map((item, index) => (
+
+ ));
+ };
return (
{
(searchQuery.length === 0 && watching.length) ?
{i18n.t("message.continueWatching")}:
- item?.profile?._id || item?._id || `watching-${index}`}
- initialNumToRender={2}
- />
+
+ {renderWatchingCards(watching)}
+
: <>>
}
{
(searchQuery.length === 0 && groups.length) ?
<>
{i18n.t("message.recentlyAdded")}:
- item._id}
- initialNumToRender={2}
- />
+
+ {renderCourseCards(groups)}
+
> : <>>
}
{
(searchQuery.length === 0 && popular.length) ?
<>
{i18n.t("message.popularCourses")}:
- item._id}
- initialNumToRender={2}
- />
+
+ {renderCourseCards(popular)}
+
> : <>>
}
{
(searchQuery.length !== 0 && groups.length) ?
- <>
- item._id}
- initialNumToRender={8}
- />
- > : <>>
+
+ {renderCourseCards(groups, true)}
+ : <>>
}
@@ -203,5 +193,11 @@ const styles = StyleSheet.create({
marginTop: 15,
fontWeight: "bold",
color: "#777"
+ },
+ searchGrid: {
+ flexDirection: 'row',
+ flexWrap: 'wrap',
+ justifyContent: 'space-between',
+ paddingHorizontal: 4,
}
});
diff --git a/Views/Feed.js b/Views/Feed.js
index 3319cc7..64c1cd3 100644
--- a/Views/Feed.js
+++ b/Views/Feed.js
@@ -157,7 +157,7 @@ let Feed = ({ navigation, route }) => {
item.lastUpdated || item._id || item.ceatedAt} //This may refresh the component
+ keyExtractor={item => item.lastUpdated || item._id || item.createdAt} //This may refresh the component
//ListHeaderComponent={ setPosts([newPost, ...Posts])} />}
refreshing={Posts.length === 0}
onRefresh={() => {
diff --git a/Views/Profile.js b/Views/Profile.js
index df329af..1824304 100644
--- a/Views/Profile.js
+++ b/Views/Profile.js
@@ -180,7 +180,7 @@ let Profile = ({ navigation, route }) => {
item.lastUpdated || item._id || item.ceatedAt}
+ keyExtractor={item => item.lastUpdated || item._id || item.createdAt}
ListHeaderComponent={header}
refreshing={loading}
initialNumToRender={3}
diff --git a/Views/Tags.js b/Views/Tags.js
index 8c4ef74..044874e 100644
--- a/Views/Tags.js
+++ b/Views/Tags.js
@@ -47,7 +47,7 @@ let Tags = ({ navigation, route }) => {
item.lastUpdated || item._id || item.ceatedAt}
+ keyExtractor={item => item.lastUpdated || item._id || item.createdAt}
ListHeaderComponent={header}
refreshing={loading}
initialNumToRender={3}
diff --git a/components/PostPopularUsers.js b/components/PostPopularUsers.js
index ba7caf0..df5e4a9 100644
--- a/components/PostPopularUsers.js
+++ b/components/PostPopularUsers.js
@@ -49,7 +49,7 @@ let Post = (props) => {
item}
+ keyExtractor={(item, index) => `${item}-${index}`}
/>
diff --git a/components/SinglePostComponent.js b/components/SinglePostComponent.js
index b88314c..e57fa7e 100644
--- a/components/SinglePostComponent.js
+++ b/components/SinglePostComponent.js
@@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react';
-import { FlatList } from 'react-native';
+import { View } from 'react-native';
import API from './../API.js';
import Post from './Post.js';
@@ -19,12 +19,9 @@ let SinglePostComponent = ({ postId, hideComments }) => {
}
}, [postId]);
return (post._id ? (
- }
- keyExtractor={item => item._id}
- />
-
+
+
+
) : null);
};