import 'package:flutter_local_notifications/flutter_local_notifications.dart';

class NotifService {
  static final FlutterLocalNotificationsPlugin _notif =
      FlutterLocalNotificationsPlugin();

  static Future<void> init() async {
    const android = AndroidInitializationSettings('@mipmap/ic_launcher');
    const settings = InitializationSettings(android: android);

    await _notif.initialize(settings);

    // Mendaftarkan pintu gerbang utama channel melayang ke OS Android
    final androidImplementation = _notif
        .resolvePlatformSpecificImplementation<
          AndroidFlutterLocalNotificationsPlugin
        >();

    if (androidImplementation != null) {
      // Meminta izin notifikasi langsung ke layar HP saat aplikasi dibuka
      await androidImplementation.requestNotificationsPermission();

      const channel = AndroidNotificationChannel(
        'channel_kebun_id', // Wajib sama persis dengan yang ada di AndroidManifest.xml
        'Notifikasi Burung',
        description: 'Mendeteksi pergerakan hama burung kebun',
        importance: Importance.max, // Memaksa spanduk muncul di atas layar
        playSound: true,
        enableVibration: true,
      );

      await androidImplementation.createNotificationChannel(channel);
    }
  }

  static Future<void> showNotif(String title, String body) async {
    const androidDetails = AndroidNotificationDetails(
      'channel_kebun_id', // Disamakan dengan manifest & init channel di atas
      'Notifikasi Burung',
      importance: Importance.max,
      priority: Priority.high,
      ticker: 'ticker',
      icon: '@mipmap/ic_launcher',
    );

    const details = NotificationDetails(android: androidDetails);

    // Membuat ID Notifikasi acak berbasis waktu agar setiap notifikasi baru tidak saling menimpa
    int idUnik = DateTime.now().millisecondsSinceEpoch ~/ 1000;
    await _notif.show(idUnik, title, body, details);
  }
}
