UNPKG

react-native-notificare-push-ui

Version:
137 lines (136 loc) 5.08 kB
"use strict"; /* eslint-disable @typescript-eslint/no-unused-vars */ Object.defineProperty(exports, "__esModule", { value: true }); exports.withNotificarePushUIAndroidStyle = void 0; const Manifest_1 = require("@expo/config-plugins/build/android/Manifest"); const config_plugins_1 = require("expo/config-plugins"); const TRANSLUCENT_STYLE_THEME = 'Theme.Notificare.PushUI.Translucent'; const PUSH_UI_ACTIVITY = 're.notifica.push.ui.NotificationActivity'; const withApplyCustomStyle = (config, props) => { return (0, config_plugins_1.withAndroidManifest)(config, (newConfig) => { if (!props?.android?.customStyle) return newConfig; const application = (0, Manifest_1.getMainApplication)(newConfig.modResults); if (!application) { console.warn('No ".MainApplication" found in manifest.'); return newConfig; } const notificationActivity = { $: { 'android:name': PUSH_UI_ACTIVITY, 'android:theme': `@style/${props.android.customStyle}`, }, }; const activities = application.activity; if (!activities) { application.activity = [notificationActivity]; return newConfig; } if (!activities.find((activity) => activity.$['android:name'] === notificationActivity.$['android:name'])) { activities.push(notificationActivity); } return newConfig; }); }; const withCreateTranslucentStyle = (config, props) => { return (0, config_plugins_1.withAndroidStyles)(config, (newConfig) => { const styles = newConfig.modResults.resources.style; const itemWindowTranslucent = { _: 'true', $: { name: 'android:windowIsTranslucent', }, }; const itemWindowBackground = { _: '@android:color/transparent', $: { name: 'android:windowBackground', }, }; const windowLightStatusBar = { _: '?attr/isLightTheme', $: { name: 'android:windowLightStatusBar', }, }; const statusBarColor = { _: '@android:color/transparent', $: { name: 'android:statusBarColor', }, }; const newStyle = { $: { name: TRANSLUCENT_STYLE_THEME, parent: 'Theme.AppCompat.DayNight', }, item: [ itemWindowTranslucent, itemWindowBackground, windowLightStatusBar, statusBarColor, ], }; if (!styles) { newConfig.modResults.resources.style = [newStyle]; return newConfig; } if (!styles.find((style) => style.$.name === TRANSLUCENT_STYLE_THEME)) { styles.push(newStyle); } return newConfig; }); }; const withApplyTranslucentStyle = (config, props) => { 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; } const notificationActivity = { $: { 'android:name': PUSH_UI_ACTIVITY, 'android:theme': `@style/${TRANSLUCENT_STYLE_THEME}`, }, }; const activities = application.activity; if (!activities) { application.activity = [notificationActivity]; return newConfig; } if (!activities.find((activity) => activity.$['android:name'] === notificationActivity.$['android:name'])) { activities.push(notificationActivity); } return newConfig; }); }; const withRemoveStyle = (config, props) => { 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; } const activities = application.activity; if (!activities) { return newConfig; } application.activity = activities.filter((activity) => activity.$['android:name'] !== PUSH_UI_ACTIVITY); return newConfig; }); }; const withNotificarePushUIAndroidStyle = (config, props) => { if (props?.android?.customStyle) { config = withApplyCustomStyle(config, props); return config; } if (props?.android?.useTranslucentStyle !== false) { config = withCreateTranslucentStyle(config, props); config = withApplyTranslucentStyle(config, props); return config; } config = withRemoveStyle(config, props); return config; }; exports.withNotificarePushUIAndroidStyle = withNotificarePushUIAndroidStyle;