54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
import { CalculationMethod, Coordinates, PrayerTimes, Qibla } from 'adhan';
|
|
|
|
type Prayer = {
|
|
[key: string]: string;
|
|
};
|
|
|
|
export const getPrayerTimes = (
|
|
city: keyof typeof cities,
|
|
date: Date = new Date()
|
|
): Prayer => {
|
|
const { coords, timezone } = cities[city];
|
|
const coordinates = new Coordinates(coords[0], coords[1]);
|
|
const params = CalculationMethod.UmmAlQura();
|
|
const prayerTimes = new PrayerTimes(coordinates, date, params);
|
|
|
|
const formatTime = (time: Date) => {
|
|
return time.toLocaleTimeString('en-US', {
|
|
hour: '2-digit',
|
|
minute: '2-digit',
|
|
hour12: false,
|
|
timeZone: timezone,
|
|
});
|
|
};
|
|
|
|
return {
|
|
fajr: formatTime(prayerTimes.fajr),
|
|
sunrise: formatTime(prayerTimes.sunrise),
|
|
dhuhr: formatTime(prayerTimes.dhuhr),
|
|
asr: formatTime(prayerTimes.asr),
|
|
maghrib: formatTime(prayerTimes.maghrib),
|
|
isha: formatTime(prayerTimes.isha),
|
|
};
|
|
};
|
|
|
|
export const getQiblaDirection = (latitude: number, longitude: number): number => {
|
|
const coordinates = new Coordinates(latitude, longitude);
|
|
return Qibla(coordinates);
|
|
};
|
|
|
|
export const cities = {
|
|
Makkah: {
|
|
coords: [21.4225, 39.8262],
|
|
timezone: 'Asia/Riyadh',
|
|
},
|
|
Medina: {
|
|
coords: [24.4667, 39.6],
|
|
timezone: 'Asia/Riyadh',
|
|
},
|
|
Jeddah: {
|
|
coords: [21.5433, 39.1728],
|
|
timezone: 'Asia/Riyadh',
|
|
},
|
|
};
|