import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

import 'fifth_screen/export_dialog.dart';

class SelectExportMethodDialog extends StatelessWidget {
  const SelectExportMethodDialog(
      {super.key, this.onlyOneWalletSelected = false});

  final bool onlyOneWalletSelected;

  @override
  Widget build(BuildContext context) {
    return Dialog(
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(16.0),
      ),
      child: SingleChildScrollView(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(bottom: 16.0),
                child: Text(
                  tr('select_export_method'),
                  style: Theme.of(context).textTheme.titleLarge,
                ),
              ),
              Column(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: <Widget>[
                  TextButton.icon(
                    icon: const Icon(Icons.file_present),
                    label: Text(tr('file_export')),
                    onPressed: () => Navigator.of(context).pop(ExportType.file),
                  ),
                  TextButton.icon(
                    icon: const Icon(Icons.content_paste),
                    label: Text(tr('clipboard_export')),
                    onPressed: () =>
                        Navigator.of(context).pop(ExportType.clipboard),
                  ),
                  TextButton.icon(
                    icon: const Icon(Icons.share),
                    label: Text(tr('share_export')),
                    onPressed: () =>
                        Navigator.of(context).pop(ExportType.share),
                  ),
                ],
              ),
              if (onlyOneWalletSelected) _buildKeyExportContent(context),
            ],
          ),
        ),
      ),
    );
  }

  Widget _buildKeyExportContent(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.only(top: 16.0),
      child: Column(
        mainAxisSize: MainAxisSize.min,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          const Divider(),
          const SizedBox(height: 8),
          Text(
            tr('cesium_compatible_exports'),
            style: Theme.of(context).textTheme.titleMedium,
          ),
          const SizedBox(height: 8),
          _buildExportOption(
            context,
            ExportType.pubsec,
            tr('export_pubsec_format'),
            tr('export_pubsec_format_description'),
          ),
          _buildExportOption(
            context,
            ExportType.wif,
            tr('export_wif_format'),
            tr('export_wif_format_description'),
          ),
          _buildExportOption(
            context,
            ExportType.ewif,
            tr('export_ewif_format'),
            tr('export_ewif_format_description'),
          ),
        ],
      ),
    );
  }

  Widget _buildExportOption(
    BuildContext context,
    ExportType type,
    String buttonText,
    String descriptionText,
  ) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        TextButton.icon(
          icon: const Icon(Icons.article_outlined),
          label: Text(buttonText),
          onPressed: () {
            Navigator.of(context).pop(type);
          },
        ),
        Padding(
          padding: const EdgeInsets.only(left: 16, right: 16, bottom: 8),
          child: Text(
            descriptionText,
            style: Theme.of(context).textTheme.bodySmall?.copyWith(
                  color: Colors.grey[700],
                ),
            textAlign: TextAlign.left,
          ),
        ),
      ],
    );
  }
}