#!/bin/bash

# Script de correction automatique pour permission_handler_apple
# Problème : Le package embarque ses propres headers Flutter qui créent des conflits
# Solution : Supprimer le dossier Flutter/ et corriger les imports
# Date : 14/10/2025
# Usage : ./fix-permission-handler.sh

set -e  # Arrêter en cas d'erreur

# Détection de l'OS pour la syntaxe sed
if [[ "$OSTYPE" == "darwin"* ]]; then
    # macOS (BSD sed)
    SED_INPLACE="sed -i ''"
else
    # Linux (GNU sed)
    SED_INPLACE="sed -i"
fi

echo "🔧 Fix permission_handler_apple - Correction des conflits Flutter headers"
echo ""

# Couleurs pour les messages
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# Trouver le chemin du package dans .pub-cache
# Utilise $PUB_CACHE si défini (cache local projet), sinon $HOME/.pub-cache
PUB_CACHE_BASE="${PUB_CACHE:-$HOME/.pub-cache}"
PERMISSION_HANDLER_PATH=$(find "${PUB_CACHE_BASE}/hosted/pub.dev" -maxdepth 1 -name "permission_handler_apple-*" -type d | sort -V | tail -n 1)

if [ -z "$PERMISSION_HANDLER_PATH" ]; then
    echo -e "${RED}❌ Erreur : Package permission_handler_apple introuvable dans .pub-cache${NC}"
    exit 1
fi

echo -e "${YELLOW}📦 Package trouvé : $PERMISSION_HANDLER_PATH${NC}"
echo ""

CLASSES_PATH="$PERMISSION_HANDLER_PATH/ios/Classes"
FLUTTER_DIR="$CLASSES_PATH/Flutter"

# Étape 1 : Vérifier si le dossier Flutter existe
if [ -d "$FLUTTER_DIR" ]; then
    echo -e "${YELLOW}🗑️  Suppression du dossier Flutter embarqué...${NC}"
    rm -rf "$FLUTTER_DIR"
    echo -e "${GREEN}✅ Dossier Flutter supprimé${NC}"
else
    echo -e "${GREEN}✅ Dossier Flutter déjà supprimé${NC}"
fi

# Étape 2 : Corriger les imports dans PermissionHandlerPlugin.h
PLUGIN_HEADER="$CLASSES_PATH/PermissionHandlerPlugin.h"
if [ -f "$PLUGIN_HEADER" ]; then
    if grep -q '#import "Flutter/Flutter.h"' "$PLUGIN_HEADER"; then
        echo -e "${YELLOW}📝 Correction de PermissionHandlerPlugin.h...${NC}"
        eval "$SED_INPLACE 's|#import \"Flutter/Flutter.h\"|#import <Flutter/Flutter.h>|g' \"$PLUGIN_HEADER\""
        echo -e "${GREEN}✅ PermissionHandlerPlugin.h corrigé${NC}"
    else
        echo -e "${GREEN}✅ PermissionHandlerPlugin.h déjà corrigé${NC}"
    fi
else
    echo -e "${RED}⚠️  Fichier PermissionHandlerPlugin.h introuvable${NC}"
fi

# Étape 3 : Corriger les imports dans PermissionManager.h
MANAGER_HEADER="$CLASSES_PATH/PermissionManager.h"
if [ -f "$MANAGER_HEADER" ]; then
    if grep -q '#import "Flutter/Flutter.h"' "$MANAGER_HEADER"; then
        echo -e "${YELLOW}📝 Correction de PermissionManager.h...${NC}"
        eval "$SED_INPLACE 's|#import \"Flutter/Flutter.h\"|#import <Flutter/Flutter.h>|g' \"$MANAGER_HEADER\""
        echo -e "${GREEN}✅ PermissionManager.h corrigé${NC}"
    else
        echo -e "${GREEN}✅ PermissionManager.h déjà corrigé${NC}"
    fi
else
    echo -e "${RED}⚠️  Fichier PermissionManager.h introuvable${NC}"
fi

echo ""
echo -e "${GREEN}🎉 Correction terminée avec succès !${NC}"
echo ""
echo -e "${YELLOW}ℹ️  Ce script doit être exécuté après chaque 'flutter pub get'${NC}"
echo -e "${YELLOW}ℹ️  Raison : Le package permission_handler_apple embarque des headers Flutter qui créent des conflits${NC}"
echo ""
