react-native-notificare
Version:
Notificare React Native module.
57 lines (56 loc) • 2.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.processManifestMetaDataOptions = processManifestMetaDataOptions;
exports.processIntentFilter = processIntentFilter;
const Manifest_1 = require("@expo/config-plugins/build/android/Manifest");
const config_plugins_1 = require("expo/config-plugins");
function processManifestMetaDataOptions(config, metaDataOptions) {
return (0, config_plugins_1.withAndroidManifest)(config, (newConfig) => {
const application = (0, Manifest_1.getMainApplication)(newConfig.modResults);
if (!application) {
console.warn('No ".MainApplication" found in manifest.');
return newConfig;
}
let metaDataList = application['meta-data'];
metaDataOptions.forEach((option) => {
if (option.enabled) {
if (!Array.isArray(metaDataList)) {
metaDataList = [option.metaData];
}
else if (!metaDataList.find((metaData) => metaData.$['android:name'] === option.metaData.$['android:name'])) {
metaDataList.push(option.metaData);
}
}
else if (Array.isArray(metaDataList)) {
metaDataList = metaDataList.filter((metaData) => metaData.$['android:name'] !== option.metaData.$['android:name']);
}
});
application['meta-data'] = metaDataList;
return newConfig;
});
}
function processIntentFilter(config, intent) {
return (0, config_plugins_1.withAndroidManifest)(config, (newConfig) => {
const activity = (0, Manifest_1.getMainActivity)(newConfig.modResults);
if (!activity) {
console.warn('No ".MainActivity" found in manifest.');
return newConfig;
}
const filters = activity['intent-filter'];
if (intent.enabled) {
if (!Array.isArray(filters)) {
activity['intent-filter'] = [intent.intentFilter];
}
else if (!filters.find((filter) => filter.action?.some((action) => action.$['android:name'] ===
intent.intentFilter.action?.[0].$['android:name']))) {
filters.push(intent.intentFilter);
}
}
else if (Array.isArray(filters) &&
!!intent.intentFilter.action?.[0].$['android:name']) {
activity['intent-filter'] = filters.filter((intentFilter) => intentFilter.action?.[0].$['android:name'] !==
intent.intentFilter.action?.[0].$['android:name']);
}
return newConfig;
});
}