1*435bbba8SBrent Vatneimport { ExpoConfig } from 'expo/config'; 213c5c8bdSEvan Baconimport { 313c5c8bdSEvan Bacon AndroidConfig, 413c5c8bdSEvan Bacon ConfigPlugin, 513c5c8bdSEvan Bacon withAndroidColors, 613c5c8bdSEvan Bacon withAndroidStyles, 7*435bbba8SBrent Vatne} from 'expo/config-plugins'; 813c5c8bdSEvan Bacon 913c5c8bdSEvan Baconconst { assignColorValue } = AndroidConfig.Colors; 1013c5c8bdSEvan Baconconst { assignStylesValue, getAppThemeLightNoActionBarGroup } = AndroidConfig.Styles; 1113c5c8bdSEvan Bacon 1213c5c8bdSEvan Baconconst ANDROID_WINDOW_BACKGROUND = 'android:windowBackground'; 1313c5c8bdSEvan Baconconst WINDOW_BACKGROUND_COLOR = 'activityBackground'; 1413c5c8bdSEvan Bacon 1513c5c8bdSEvan Baconexport const withAndroidRootViewBackgroundColor: ConfigPlugin = (config) => { 1613c5c8bdSEvan Bacon config = withRootViewBackgroundColorColors(config); 1713c5c8bdSEvan Bacon config = withRootViewBackgroundColorStyles(config); 1813c5c8bdSEvan Bacon return config; 1913c5c8bdSEvan Bacon}; 2013c5c8bdSEvan Bacon 2113c5c8bdSEvan Baconexport const withRootViewBackgroundColorColors: ConfigPlugin = (config) => { 2213c5c8bdSEvan Bacon return withAndroidColors(config, async (config) => { 2313c5c8bdSEvan Bacon config.modResults = assignColorValue(config.modResults, { 2413c5c8bdSEvan Bacon value: getRootViewBackgroundColor(config), 2513c5c8bdSEvan Bacon name: WINDOW_BACKGROUND_COLOR, 2613c5c8bdSEvan Bacon }); 2713c5c8bdSEvan Bacon return config; 2813c5c8bdSEvan Bacon }); 2913c5c8bdSEvan Bacon}; 3013c5c8bdSEvan Bacon 3113c5c8bdSEvan Baconexport const withRootViewBackgroundColorStyles: ConfigPlugin = (config) => { 3213c5c8bdSEvan Bacon return withAndroidStyles(config, async (config) => { 3313c5c8bdSEvan Bacon config.modResults = assignStylesValue(config.modResults, { 3413c5c8bdSEvan Bacon add: !!getRootViewBackgroundColor(config), 3513c5c8bdSEvan Bacon parent: getAppThemeLightNoActionBarGroup(), 3613c5c8bdSEvan Bacon name: ANDROID_WINDOW_BACKGROUND, 3713c5c8bdSEvan Bacon value: `@color/${WINDOW_BACKGROUND_COLOR}`, 3813c5c8bdSEvan Bacon }); 3913c5c8bdSEvan Bacon return config; 4013c5c8bdSEvan Bacon }); 4113c5c8bdSEvan Bacon}; 4213c5c8bdSEvan Bacon 4313c5c8bdSEvan Baconexport function getRootViewBackgroundColor( 4413c5c8bdSEvan Bacon config: Pick<ExpoConfig, 'android' | 'backgroundColor'> 4513c5c8bdSEvan Bacon) { 4613c5c8bdSEvan Bacon return config.android?.backgroundColor || config.backgroundColor || null; 4713c5c8bdSEvan Bacon} 48