react-native-adhan
Version:
A React Native TurboModule for accurate Islamic prayer times and Qibla direction calculations. Built with the New Architecture (TurboModules) for optimal performance and uses the official adhan-swift and adhan-kotlin libraries for precise calculations.
50 lines (45 loc) • 1.42 kB
JavaScript
// plugin.js
const {
createRunOncePlugin,
withPlugins,
withAndroidManifest,
withInfoPlist,
} = require('@expo/config-plugins');
const pkg = require('./package.json');
/**
* The main entry: compose iOS and Android mods.
*/
function withAdhanPlugin(config) {
return withPlugins(config, [withAdhanIOS, withAdhanAndroid]);
}
/**
* iOS Info.plist modifications:
* - Add any required background modes or usage descriptions.
*/
function withAdhanIOS(config) {
return withInfoPlist(config, ({ modResults }) => {
// Ensure location and fetch background modes
modResults.UIBackgroundModes = Array.from(
new Set([...(modResults.UIBackgroundModes || []), 'location', 'fetch'])
);
// Optional: add usage descriptions
modResults.NSLocationWhenInUseUsageDescription ??=
'Location is required for accurate prayer times.';
return { ...config, modResults };
});
}
/**
* AndroidManifest.xml modifications:
* - Add fine location permission.
*/
function withAdhanAndroid(config) {
return withAndroidManifest(config, ({ modResults }) => {
const manifest = modResults.manifest || {};
manifest['uses-permission'] = [
...(manifest['uses-permission'] || []),
{ $: { 'android:name': 'android.permission.ACCESS_FINE_LOCATION' } },
];
return { ...config, modResults };
});
}
module.exports = createRunOncePlugin(withAdhanPlugin, pkg.name, pkg.version);