Update layout and localization for improved functionality
- Added AsyncStorage and utility functions for future enhancements. - Commented out ServicesGrid component in HomeScreen for potential redesign. - Updated English and Russian localization files with new phrases and translations for prayer times and services.
This commit is contained in:
@@ -77,7 +77,8 @@ export default function HomeScreen() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<PrayerTimeCard />
|
<PrayerTimeCard />
|
||||||
<ServicesGrid services={services} />
|
|
||||||
|
{/* <ServicesGrid services={services} /> */}
|
||||||
</View>
|
</View>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</SafeAreaView>
|
</SafeAreaView>
|
||||||
|
|||||||
@@ -5,8 +5,11 @@ import { Stack } from 'expo-router';
|
|||||||
import * as SplashScreen from 'expo-splash-screen';
|
import * as SplashScreen from 'expo-splash-screen';
|
||||||
import React, { useEffect } from 'react';
|
import React, { useEffect } from 'react';
|
||||||
import 'react-native-reanimated';
|
import 'react-native-reanimated';
|
||||||
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||||||
|
|
||||||
import { initializeLanguage } from '@/i18n';
|
import { initializeLanguage } from '@/i18n';
|
||||||
|
import { makeRequest } from '@/utils/makeRequest';
|
||||||
|
import { CURRENCY_RATES_ENDPOINT } from '@/utils/api';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
// Catch any errors thrown by the Layout component.
|
// Catch any errors thrown by the Layout component.
|
||||||
@@ -40,6 +43,10 @@ export default function RootLayout() {
|
|||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
// useEffect(() => {
|
||||||
|
|
||||||
|
// }, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (loaded && langLoaded) {
|
if (loaded && langLoaded) {
|
||||||
SplashScreen.hideAsync();
|
SplashScreen.hideAsync();
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
"newExperience": "New Experience",
|
"newExperience": "New Experience",
|
||||||
"prayerTimes": "Prayer Times",
|
"prayerTimes": "Prayer Times",
|
||||||
"programs": "Programs",
|
"programs": "Programs",
|
||||||
|
"Programs": "Schedule",
|
||||||
"leftOnPrayer": "Left on {{prayerName}} prayer",
|
"leftOnPrayer": "Left on {{prayerName}} prayer",
|
||||||
"servicesToEnrich": "Services to Enrich Your Spiritual Experience",
|
"servicesToEnrich": "Services to Enrich Your Spiritual Experience",
|
||||||
"quran": "Qur'an",
|
"quran": "Qur'an",
|
||||||
@@ -21,6 +22,15 @@
|
|||||||
"translator": "Translator",
|
"translator": "Translator",
|
||||||
"adhkar": "Adhkar",
|
"adhkar": "Adhkar",
|
||||||
"hisnAlMuslim": "Hisn Al-Muslim",
|
"hisnAlMuslim": "Hisn Al-Muslim",
|
||||||
|
"Makkah": "Makkah",
|
||||||
|
"Medina": "Medina",
|
||||||
|
"Jeddah": "Jeddah",
|
||||||
|
"fajr": "Fajr",
|
||||||
|
"sunrise": "Sunrise",
|
||||||
|
"dhuhr": "Dhuhr",
|
||||||
|
"asr": "Asr",
|
||||||
|
"maghrib": "Maghrib",
|
||||||
|
"isha": "Isha",
|
||||||
"morningEveningThikr": "Thikr said in the morning and evening",
|
"morningEveningThikr": "Thikr said in the morning and evening",
|
||||||
"beforeSleepingThikr": "Thikr before sleeping",
|
"beforeSleepingThikr": "Thikr before sleeping",
|
||||||
"afterSalamThikr": "Thikr after salam",
|
"afterSalamThikr": "Thikr after salam",
|
||||||
@@ -31,5 +41,13 @@
|
|||||||
"sneezingSupplication": "Supplication upon sneezing",
|
"sneezingSupplication": "Supplication upon sneezing",
|
||||||
"sarToTmt": "SAR to TMT",
|
"sarToTmt": "SAR to TMT",
|
||||||
"hotelBusinessCard": "Hotel Business Card",
|
"hotelBusinessCard": "Hotel Business Card",
|
||||||
"masterkeyBox": "Masterkey Box"
|
"masterkeyBox": "Masterkey Box",
|
||||||
|
"Money": "Money",
|
||||||
|
"Hotel": "Hotel",
|
||||||
|
"Lost room key": "Lost room key",
|
||||||
|
"Phrasebook": "Phrasebook",
|
||||||
|
"Enter text in Turkmen": "Enter text",
|
||||||
|
"Translate": "Translate",
|
||||||
|
"Salah": "Salah",
|
||||||
|
"menuSalah": "Salah"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"home": "Главная",
|
"home": "Главная",
|
||||||
"services": "Сервисы",
|
"services": "Сервисы",
|
||||||
|
"supplications": "Молитвы",
|
||||||
"yourJourneyToHajj": "Ваше путешествие в Хадж",
|
"yourJourneyToHajj": "Ваше путешествие в Хадж",
|
||||||
"hajjEssentials": "Все, что вам нужно для Хаджа.",
|
"hajjEssentials": "Все, что вам нужно для Хаджа.",
|
||||||
"umrah": "Умра",
|
"umrah": "Умра",
|
||||||
@@ -9,6 +10,7 @@
|
|||||||
"newExperience": "Новый опыт",
|
"newExperience": "Новый опыт",
|
||||||
"prayerTimes": "Время молитв",
|
"prayerTimes": "Время молитв",
|
||||||
"programs": "Программы",
|
"programs": "Программы",
|
||||||
|
"Programs": "Расписание",
|
||||||
"leftOnPrayer": "Осталось до молитвы {{prayerName}}",
|
"leftOnPrayer": "Осталось до молитвы {{prayerName}}",
|
||||||
"servicesToEnrich": "Услуги для обогащения вашего духовного опыта",
|
"servicesToEnrich": "Услуги для обогащения вашего духовного опыта",
|
||||||
"quran": "Коран",
|
"quran": "Коран",
|
||||||
@@ -20,6 +22,15 @@
|
|||||||
"translator": "Переводчик",
|
"translator": "Переводчик",
|
||||||
"adhkar": "Азкар",
|
"adhkar": "Азкар",
|
||||||
"hisnAlMuslim": "Крепость мусульманина",
|
"hisnAlMuslim": "Крепость мусульманина",
|
||||||
|
"Makkah": "Мекка",
|
||||||
|
"Medina": "Медина",
|
||||||
|
"Jeddah": "Джидда",
|
||||||
|
"fajr": "Фаджр",
|
||||||
|
"sunrise": "Восход",
|
||||||
|
"dhuhr": "Зухр",
|
||||||
|
"asr": "Аср",
|
||||||
|
"maghrib": "Магриб",
|
||||||
|
"isha": "Иша",
|
||||||
"morningEveningThikr": "Зикр, читаемый утром и вечером",
|
"morningEveningThikr": "Зикр, читаемый утром и вечером",
|
||||||
"beforeSleepingThikr": "Зикр перед сном",
|
"beforeSleepingThikr": "Зикр перед сном",
|
||||||
"afterSalamThikr": "Зикр после салама",
|
"afterSalamThikr": "Зикр после салама",
|
||||||
@@ -30,5 +41,13 @@
|
|||||||
"sneezingSupplication": "Мольба при чихании",
|
"sneezingSupplication": "Мольба при чихании",
|
||||||
"sarToTmt": "SAR в TMT",
|
"sarToTmt": "SAR в TMT",
|
||||||
"hotelBusinessCard": "Визитная карточка отеля",
|
"hotelBusinessCard": "Визитная карточка отеля",
|
||||||
"masterkeyBox": "Ящик для мастер-ключей"
|
"masterkeyBox": "Ящик для мастер-ключей",
|
||||||
|
"Money": "Деньги",
|
||||||
|
"Hotel": "Отель",
|
||||||
|
"Lost room key": "Ключ от номера утерян",
|
||||||
|
"Phrasebook": "Разговорник",
|
||||||
|
"Enter text in Turkmen": "Введите текст",
|
||||||
|
"Translate": "Перевести",
|
||||||
|
"Salah": "Намаз",
|
||||||
|
"menuSalah": "Намаз"
|
||||||
}
|
}
|
||||||
|
|||||||
3
utils/api.ts
Normal file
3
utils/api.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export const BASE_URL = 'http://127.0.0.1:8000/';
|
||||||
|
|
||||||
|
export const CURRENCY_RATES_ENDPOINT = 'api/v1/currency-rates';
|
||||||
35
utils/makeRequest.ts
Normal file
35
utils/makeRequest.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import { BASE_URL } from './api';
|
||||||
|
|
||||||
|
export const makeRequest = async <T,>(
|
||||||
|
endpoint: string,
|
||||||
|
options?: RequestInit
|
||||||
|
): Promise<T> => {
|
||||||
|
const url = new URL(endpoint, BASE_URL).toString();
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch(url, options);
|
||||||
|
console.log(response);
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
let errorData;
|
||||||
|
try {
|
||||||
|
errorData = await response.json();
|
||||||
|
} catch (e) {
|
||||||
|
// Ignore JSON parsing errors if the body is empty
|
||||||
|
}
|
||||||
|
const errorMessage =
|
||||||
|
errorData?.message ||
|
||||||
|
`Request failed with status ${response.status}`;
|
||||||
|
throw new Error(errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (response.status === 204) {
|
||||||
|
return null as T;
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.json();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('API request error:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user