import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/modules/backup/providers/ios_background_settings.provider.dart';
import 'package:intl/intl.dart';

/// This is a simple debug widget which should be removed later on when we are
/// more confident about background sync
class IosDebugInfoTile extends HookConsumerWidget {
  final IOSBackgroundSettings settings;
  const IosDebugInfoTile({
    super.key,
    required this.settings,
  });

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final fetch = settings.timeOfLastFetch;
    final processing = settings.timeOfLastProcessing;
    final processes = settings.numberOfBackgroundTasksQueued;

    final processOrProcesses = processes == 1 ? 'process' : 'processes';
    final numberOrZero = processes == 0 ? 'No' : processes.toString();
    final title = '$numberOrZero background $processOrProcesses queued';

    final df = DateFormat.yMd().add_jm();
    final String subtitle;
    if (fetch == null && processing == null) {
      subtitle = 'No background sync job has run yet';
    } else if (fetch != null && processing == null) {
      subtitle = 'Fetch ran ${df.format(fetch)}';
    } else if (processing != null && fetch == null) {
      subtitle = 'Processing ran ${df.format(processing)}';
    } else {
      final fetchOrProcessing =
          fetch!.isAfter(processing!) ? fetch : processing;
      subtitle = 'Last sync ${df.format(fetchOrProcessing)}';
    }

    return ListTile(
      key: ValueKey(title),
      title: Text(
        title,
        style: TextStyle(
          fontWeight: FontWeight.bold,
          fontSize: 14,
          color: context.primaryColor,
        ),
      ),
      subtitle: Text(
        subtitle,
        style: const TextStyle(
          fontSize: 14,
        ),
      ),
      leading: Icon(
        Icons.bug_report,
        color: context.primaryColor,
      ),
    );
  }
}
