38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
|
const {withAndroidManifest} = require('expo/config-plugins')
|
||
|
|
||
|
module.exports = function withAndroidManifestFCMIconPlugin(appConfig) {
|
||
|
return withAndroidManifest(appConfig, function (decoratedAppConfig) {
|
||
|
try {
|
||
|
function addOrModifyMetaData(metaData, name, resource) {
|
||
|
const elem = metaData.find(elem => elem.$['android:name'] === name)
|
||
|
if (elem === undefined) {
|
||
|
metaData.push({
|
||
|
$: {
|
||
|
'android:name': name,
|
||
|
'android:resource': resource,
|
||
|
},
|
||
|
})
|
||
|
} else {
|
||
|
elem.$['android:resource'] = resource
|
||
|
}
|
||
|
}
|
||
|
const androidManifest = decoratedAppConfig.modResults.manifest
|
||
|
const metaData = androidManifest.application[0]['meta-data']
|
||
|
addOrModifyMetaData(
|
||
|
metaData,
|
||
|
'com.google.firebase.messaging.default_notification_color',
|
||
|
'@color/notification_icon_color',
|
||
|
)
|
||
|
addOrModifyMetaData(
|
||
|
metaData,
|
||
|
'com.google.firebase.messaging.default_notification_icon',
|
||
|
'@drawable/notification_icon',
|
||
|
)
|
||
|
return decoratedAppConfig
|
||
|
} catch (e) {
|
||
|
console.error(`withAndroidManifestFCMIconPlugin failed`, e)
|
||
|
}
|
||
|
return decoratedAppConfig
|
||
|
})
|
||
|
}
|