diff --git a/project/.expo/types/router.d.ts b/project/.expo/types/router.d.ts index a03c82d..ad6d8d2 100644 --- a/project/.expo/types/router.d.ts +++ b/project/.expo/types/router.d.ts @@ -6,9 +6,9 @@ export * from 'expo-router'; declare module 'expo-router' { export namespace ExpoRouter { export interface __routes { - hrefInputParams: { pathname: Router.RelativePathString, params?: Router.UnknownInputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownInputParams } | { pathname: `/_sitemap`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/Register` | `/Register`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/SignIn` | `/SignIn`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Home` | `/Home`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Search` | `/Search`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Stats` | `/Stats`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Workout` | `/Workout`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/edit` | `/Profile/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile` | `/Profile`; params?: Router.UnknownInputParams; } | { pathname: `/+not-found`, params: Router.UnknownInputParams & { } }; - hrefOutputParams: { pathname: Router.RelativePathString, params?: Router.UnknownOutputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownOutputParams } | { pathname: `/_sitemap`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(auth)'}/Register` | `/Register`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(auth)'}/SignIn` | `/SignIn`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Home` | `/Home`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Search` | `/Search`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Stats` | `/Stats`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Workout` | `/Workout`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Profile/edit` | `/Profile/edit`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Profile` | `/Profile`; params?: Router.UnknownOutputParams; } | { pathname: `/+not-found`, params: Router.UnknownOutputParams & { } }; - href: Router.RelativePathString | Router.ExternalPathString | `/_sitemap${`?${string}` | `#${string}` | ''}` | `${'/(auth)'}/Register${`?${string}` | `#${string}` | ''}` | `/Register${`?${string}` | `#${string}` | ''}` | `${'/(auth)'}/SignIn${`?${string}` | `#${string}` | ''}` | `/SignIn${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Home${`?${string}` | `#${string}` | ''}` | `/Home${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Search${`?${string}` | `#${string}` | ''}` | `/Search${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Stats${`?${string}` | `#${string}` | ''}` | `/Stats${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Workout${`?${string}` | `#${string}` | ''}` | `/Workout${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Profile/edit${`?${string}` | `#${string}` | ''}` | `/Profile/edit${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Profile${`?${string}` | `#${string}` | ''}` | `/Profile${`?${string}` | `#${string}` | ''}` | { pathname: Router.RelativePathString, params?: Router.UnknownInputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownInputParams } | { pathname: `/_sitemap`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/Register` | `/Register`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/SignIn` | `/SignIn`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Home` | `/Home`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Search` | `/Search`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Stats` | `/Stats`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Workout` | `/Workout`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/edit` | `/Profile/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile` | `/Profile`; params?: Router.UnknownInputParams; } | `/+not-found` | { pathname: `/+not-found`, params: Router.UnknownInputParams & { } }; + hrefInputParams: { pathname: Router.RelativePathString, params?: Router.UnknownInputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownInputParams } | { pathname: `/_sitemap`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/Register` | `/Register`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/SignIn` | `/SignIn`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/UserInfo` | `/UserInfo`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Home` | `/Home`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Search` | `/Search`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Stats` | `/Stats`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Workout` | `/Workout`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/edit` | `/Profile/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/followers` | `/Profile/followers`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/following` | `/Profile/following`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile` | `/Profile`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/requests` | `/Profile/requests`; params?: Router.UnknownInputParams; } | { pathname: `/+not-found`, params: Router.UnknownInputParams & { } }; + hrefOutputParams: { pathname: Router.RelativePathString, params?: Router.UnknownOutputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownOutputParams } | { pathname: `/_sitemap`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(auth)'}/Register` | `/Register`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(auth)'}/SignIn` | `/SignIn`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(auth)'}/UserInfo` | `/UserInfo`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Home` | `/Home`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Search` | `/Search`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Stats` | `/Stats`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Workout` | `/Workout`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Profile/edit` | `/Profile/edit`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Profile/followers` | `/Profile/followers`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Profile/following` | `/Profile/following`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Profile` | `/Profile`; params?: Router.UnknownOutputParams; } | { pathname: `${'/(tabs)'}/Profile/requests` | `/Profile/requests`; params?: Router.UnknownOutputParams; } | { pathname: `/+not-found`, params: Router.UnknownOutputParams & { } }; + href: Router.RelativePathString | Router.ExternalPathString | `/_sitemap${`?${string}` | `#${string}` | ''}` | `${'/(auth)'}/Register${`?${string}` | `#${string}` | ''}` | `/Register${`?${string}` | `#${string}` | ''}` | `${'/(auth)'}/SignIn${`?${string}` | `#${string}` | ''}` | `/SignIn${`?${string}` | `#${string}` | ''}` | `${'/(auth)'}/UserInfo${`?${string}` | `#${string}` | ''}` | `/UserInfo${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Home${`?${string}` | `#${string}` | ''}` | `/Home${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Search${`?${string}` | `#${string}` | ''}` | `/Search${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Stats${`?${string}` | `#${string}` | ''}` | `/Stats${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Workout${`?${string}` | `#${string}` | ''}` | `/Workout${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Profile/edit${`?${string}` | `#${string}` | ''}` | `/Profile/edit${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Profile/followers${`?${string}` | `#${string}` | ''}` | `/Profile/followers${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Profile/following${`?${string}` | `#${string}` | ''}` | `/Profile/following${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Profile${`?${string}` | `#${string}` | ''}` | `/Profile${`?${string}` | `#${string}` | ''}` | `${'/(tabs)'}/Profile/requests${`?${string}` | `#${string}` | ''}` | `/Profile/requests${`?${string}` | `#${string}` | ''}` | { pathname: Router.RelativePathString, params?: Router.UnknownInputParams } | { pathname: Router.ExternalPathString, params?: Router.UnknownInputParams } | { pathname: `/_sitemap`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/Register` | `/Register`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/SignIn` | `/SignIn`; params?: Router.UnknownInputParams; } | { pathname: `${'/(auth)'}/UserInfo` | `/UserInfo`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Home` | `/Home`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Search` | `/Search`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Stats` | `/Stats`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Workout` | `/Workout`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/edit` | `/Profile/edit`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/followers` | `/Profile/followers`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/following` | `/Profile/following`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile` | `/Profile`; params?: Router.UnknownInputParams; } | { pathname: `${'/(tabs)'}/Profile/requests` | `/Profile/requests`; params?: Router.UnknownInputParams; } | `/+not-found` | { pathname: `/+not-found`, params: Router.UnknownInputParams & { } }; } } } diff --git a/project/app/(tabs)/Home.tsx b/project/app/(tabs)/Home.tsx index 56c3f2f..211a4ac 100644 --- a/project/app/(tabs)/Home.tsx +++ b/project/app/(tabs)/Home.tsx @@ -12,6 +12,7 @@ import { Modal, Dimensions, StatusBar, + RefreshControl, } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; import { ActivityIndicator } from "react-native"; @@ -37,6 +38,7 @@ interface NavbarProps { const Home = () => { const [posts, setPosts] = useState([]); + const [refreshing, setRefreshing] = useState(false); const [newPost, setNewPost] = useState({ exercise: "", duration: "", @@ -44,7 +46,9 @@ const Home = () => { const [modalVisible, setModalVisible] = useState(false); useEffect(() => { - const loadPosts = async () => { + loadPosts(); + }, []); + const loadPosts = async () => { try { const recentWorkouts = await getAllUsersRecentWorkouts(); const postsArray = Object.values(recentWorkouts as WorkoutLog[]); @@ -54,8 +58,13 @@ const Home = () => { console.error("Failed to load posts", error); } }; - loadPosts(); - }, []); + + const handleRefresh = async () => { + setRefreshing(true); // Start the refreshing animation + + await loadPosts() + setRefreshing(false); // Stop the refreshing animation + }; useEffect(() => { const savePosts = async () => { @@ -190,6 +199,14 @@ const Home = () => { renderItem={renderPost} keyExtractor={(item) => uuid()} style={[styles.workoutList, { paddingTop: 10 }]} + refreshControl={ + + } /> ) : ( diff --git a/project/serviceFiles/postsDatabaseService.ts b/project/serviceFiles/postsDatabaseService.ts index 08976a3..a15d3c1 100644 --- a/project/serviceFiles/postsDatabaseService.ts +++ b/project/serviceFiles/postsDatabaseService.ts @@ -84,7 +84,6 @@ export const getWorkouts = async (userId: string): Promise => { })), // Ensures exercises are mapped correctly userId: doc.data().userId, } as WorkoutLog)); - console.log("Fetched workouts:", JSON.stringify(workouts, null, 2)); // Debug log delete later return workouts; //delete later } catch (e) { console.error("Error getting workouts", e);