import 'package:flutter/material.dart';
import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/pref.dart';
import 'package:nc_photos/snack_bar_manager.dart';

class DoubleTapExitHandler {
  factory DoubleTapExitHandler() => _inst;

  DoubleTapExitHandler._();

  /// Return if this back button event should actually exit the app
  bool call() {
    if (!Pref().isDoubleTapExitOr()) {
      return true;
    }
    final now = DateTime.now().toUtc();
    _lastBackButtonAt ??= now.subtract(const Duration(days: 1));
    if (now.difference(_lastBackButtonAt!) < const Duration(seconds: 5)) {
      return true;
    } else {
      _lastBackButtonAt = now;
      SnackBarManager().showSnackBar(SnackBar(
        content: Text(L10n.global().doubleTapExitNotification),
        duration: k.snackBarDurationShort,
      ));
      return false;
    }
  }

  static final _inst = DoubleTapExitHandler._();

  DateTime? _lastBackButtonAt;
}