const { AndroidConfig, withAndroidManifest, withAppBuildGradle, } = require("@expo/config-plugins"); const BUILD_TYPES_MARKER = "// @generated by with-android-customizations"; const BUILD_TYPES_APPLY = `${BUILD_TYPES_MARKER} apply from: new File( rootDir, "../gradle/android-build-types.gradle", ) `; const withManifestCustomizations = config => withAndroidManifest(config, config => { const manifest = config.modResults; const app = AndroidConfig.Manifest.getMainApplicationOrThrow(manifest); const serviceName = "com.asterinet.react.bgactions.RNBackgroundActionsTask"; const services = app.service ?? []; let service = services.find( service => service.$?.["android:name"] === serviceName, ); if (!service) { service = { $: { "android:name": serviceName, }, }; services.push(service); app.service = services; } service.$ ??= {}; service.$["android:foregroundServiceType"] = "dataSync"; service.$["tools:replace"] = "android:foregroundServiceType"; return config; }); const withBuildGradleCustomizations = config => withAppBuildGradle(config, config => { const { contents } = config.modResults; if (!contents.includes(BUILD_TYPES_MARKER)) { config.modResults.contents = `${contents.trimEnd()} ${BUILD_TYPES_APPLY}`; } return config; }); const withAndroidCustomizations = config => { config = withManifestCustomizations(config); config = withBuildGradleCustomizations(config); return config; }; module.exports = withAndroidCustomizations;