import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show instantiateImageCodec;
import 'package:path_provider/path_provider.dart';

/// Utility to validate image files
class ImageValidator {
  /// Validate if a file is a valid image by trying to decode it
  static Future<bool> validateImageFile(String filePath) async {
    try {
      final file = File(filePath);
      if (!await file.exists()) {
        print('File does not exist: $filePath');
        return false;
      }
      
      final bytes = await file.readAsBytes();
      print('File size: ${bytes.length} bytes');
      
      if (bytes.isEmpty) {
        print('File is empty: $filePath');
        return false;
      }
      
      // Try to decode as image
      final codec = await instantiateImageCodec(bytes);
      final frameInfo = await codec.getNextFrame();
      final image = frameInfo.image;
      
      print('Image dimensions: ${image.width}x${image.height}');
      await image.dispose();
      await codec.dispose();
      
      return true;
    } catch (e) {
      print('Failed to validate image file $filePath: $e');
      return false;
    }
  }
  
  /// Validate images in the documents directory
  static Future<void> validateStoredImages() async {
    try {
      final dir = await getApplicationDocumentsDirectory();
      final logoDir = Directory('${dir.path}/logos');
      
      if (!await logoDir.exists()) {
        print('Logo directory does not exist');
        return;
      }
      
      final files = logoDir.listSync();
      print('Found ${files.length} files in logo directory');
      
      for (final file in files) {
        if (file is File) {
          print('Validating ${file.path}...');
          final isValid = await validateImageFile(file.path);
          print('Validation result: $isValid');
        }
      }
    } catch (e) {
      print('Error validating stored images: $e');
    }
  }
}