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