/* eslint-disable @typescript-eslint/no-var-requires */
/**
 * Expo Config-Plugin — setzt den AppTheme-Parent auf
 * Theme.MaterialComponents.DayNight.NoActionBar.Bridge damit react-native-bottom-tabs'
 * BadgeDrawable nicht mit IllegalArgumentException crasht.
 *
 * Warum Bridge-Variante: bridged MaterialComponents ist ein Superset von AppCompat —
 * alle AppCompat-Abhängigkeiten im RN-Stack bleiben kompatibel, aber Material-APIs
 * (BadgeDrawable, NavigationBarMenuView etc.) funktionieren.
 *
 * Warum Plugin statt Hand-Edit: `prebuild --clean` regeneriert styles.xml aus dem
 * Expo-AppCompat-Default. Dieses Plugin patcht den Parent-Wert nach jedem prebuild
 * idempotent per withAndroidStyles (offizielles Config-Plugins-API).
 */

const { withAndroidStyles } = require('@expo/config-plugins');

const MATERIAL_THEME = 'Theme.MaterialComponents.DayNight.NoActionBar.Bridge';

function withMaterialThemeAndroid(config) {
  return withAndroidStyles(config, (cfg) => {
    const styles = cfg.modResults.resources.style;

    if (!Array.isArray(styles)) return cfg;

    const appTheme = styles.find(
      (s) => s.$ && s.$['name'] === 'AppTheme',
    );

    if (appTheme) {
      appTheme.$['parent'] = MATERIAL_THEME;
    }

    return cfg;
  });
}

module.exports = withMaterialThemeAndroid;
