Implement activity fetching and display in HomeScreen
- Added useEffect to fetch today's activities from the getPrograms function. - Introduced logic to determine the next activity based on current time. - Updated the HomeScreen to conditionally render the FeatureCard with today's activity details.
This commit is contained in:
@@ -7,12 +7,46 @@ import i18n from '@/i18n';
|
|||||||
import * as Updates from 'expo-updates';
|
import * as Updates from 'expo-updates';
|
||||||
import AsyncStorage from '@react-native-async-storage/async-storage';
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||||||
import Colors from '@/constants/Colors';
|
import Colors from '@/constants/Colors';
|
||||||
import { useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||||
|
import { getPrograms, ProgramActivity } from '@/utils/programs';
|
||||||
|
|
||||||
export default function HomeScreen() {
|
export default function HomeScreen() {
|
||||||
const insets = useSafeAreaInsets();
|
const insets = useSafeAreaInsets();
|
||||||
|
const [todaysActivity, setTodaysActivity] = useState<ProgramActivity | null>(null);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const fetchAndSetActivities = async () => {
|
||||||
|
try {
|
||||||
|
const { activities } = await getPrograms();
|
||||||
|
const now = new Date();
|
||||||
|
|
||||||
|
const formatDate = (date: Date) => {
|
||||||
|
const day = String(date.getDate()).padStart(2, '0');
|
||||||
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||||
|
const year = date.getFullYear();
|
||||||
|
return `${day}.${month}.${year}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const todayStr = formatDate(now);
|
||||||
|
const todaysActivities = activities[todayStr] || [];
|
||||||
|
|
||||||
|
const nextActivity = todaysActivities.find(activity => {
|
||||||
|
if (!activity.time) return false;
|
||||||
|
const [hours, minutes] = activity.time.split(':').map(Number);
|
||||||
|
const activityTime = new Date(now);
|
||||||
|
activityTime.setHours(hours, minutes, 0, 0);
|
||||||
|
return activityTime > now;
|
||||||
|
});
|
||||||
|
|
||||||
|
setTodaysActivity(nextActivity || todaysActivities[0] || null);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to load activities for home screen:', error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchAndSetActivities();
|
||||||
|
}, []);
|
||||||
|
|
||||||
const changeLanguage = async (lang: 'en' | 'tk' | 'ru') => {
|
const changeLanguage = async (lang: 'en' | 'tk' | 'ru') => {
|
||||||
if (!lang) return;
|
if (!lang) return;
|
||||||
@@ -45,12 +79,14 @@ export default function HomeScreen() {
|
|||||||
|
|
||||||
<ScrollView>
|
<ScrollView>
|
||||||
<View style={styles.innerContainer}>
|
<View style={styles.innerContainer}>
|
||||||
{/* <FeatureCard
|
{todaysActivity && (
|
||||||
badgeText="Şu gün, 07:00"
|
<FeatureCard
|
||||||
title="Aýşe metjidi"
|
badgeText={`Today, ${todaysActivity.time || 'All Day'}`}
|
||||||
description="Oteldan ugraýar, 1-njy etazda garaşmaly"
|
title={todaysActivity.title}
|
||||||
image={require('@/assets/images/aisha.jpg')}
|
description={todaysActivity.description}
|
||||||
/> */}
|
image={require('@/assets/images/aisha.jpg')}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
|
||||||
<PrayerTimeCard />
|
<PrayerTimeCard />
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user