import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';

import '../../constant/box_name.dart';
import '../../main.dart';

class SecurityChecks {
  static const platform = MethodChannel(
      'com.Intaleq.intaleq/security'); // Choose a unique channel name

  static Future<bool> isDeviceCompromised() async {
    try {
      final bool result = await platform
          .invokeMethod('isNativeRooted'); // Invoke the native method
      return result;
    } on PlatformException catch (e) {
      print("Failed to check security status: ${e.message}");
      return true; // Treat platform errors as a compromised device (for safety)
    }
  }

  static isDeviceRootedFromNative(BuildContext context) async {
    bool compromised = await isDeviceCompromised();
    if (compromised) {
      showDialog(
        barrierDismissible: false,
        context: context,
        builder: (context) => AlertDialog(
          title: Text("Security Warning".tr),
          content: Text(
              "Your device appears to be compromised.  The app will now close."
                  .tr),
          actions: [
            TextButton(
              onPressed: () {
                SystemNavigator.pop(); // Close the app
              },
              child: Text("OK"),
            ),
          ],
        ),
      );
    } else {
      // Continue with normal app flow

      box.write(BoxName.security_check, 'passed');

      print("Device is secure.");
    }
  }
}
