
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/utils/theme_utils.dart';
import 'package:flutter/material.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/extensions/email_address_extension.dart';
import 'package:tmail_ui_user/features/base/widget/material_text_button.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';

typedef OnOpenEmailAddressDetailAction = Function(BuildContext context, EmailAddress emailAddress);

class EmailSenderBuilder extends StatelessWidget {

  final EmailAddress emailAddress;
  final OnOpenEmailAddressDetailAction? openEmailAddressDetailAction;
  final bool showSenderEmail;
  final bool isMobileResponsive;

  const EmailSenderBuilder({
    super.key,
    required this.emailAddress,
    this.openEmailAddressDetailAction,
    this.showSenderEmail = true,
    this.isMobileResponsive = false,
  });

  @override
  Widget build(BuildContext context) {
    return Transform.translate(
      offset: const Offset(-2, 0),
      child: SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        physics: const NeverScrollableScrollPhysics(),
        child: Row(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisSize: MainAxisSize.min,
          children: [
            if (emailAddress.displayName.isNotEmpty)
              MaterialTextButton(
                label: emailAddress.displayName,
                onTap: () => openEmailAddressDetailAction?.call(context, emailAddress),
                onLongPress: () {
                  AppUtils.copyEmailAddressToClipboard(context, emailAddress.emailAddress);
                },
                borderRadius: 8,
                padding: const EdgeInsets.symmetric(horizontal: 2, vertical: 4),
                customStyle: ThemeUtils.textStyleInter500().copyWith(
                  color: Colors.black,
                  fontSize: isMobileResponsive ? 20 : 15,
                  height: isMobileResponsive ? 1 : 20 / 15,
                  letterSpacing: isMobileResponsive ? -0.2 : 0.0,
                ),
                overflow: CommonTextStyle.defaultTextOverFlow,
                softWrap: CommonTextStyle.defaultSoftWrap
              ),
            if (showSenderEmail)
              MaterialTextButton(
                label: '<${emailAddress.emailAddress}>',
                onTap: () => openEmailAddressDetailAction?.call(context, emailAddress),
                onLongPress: () {
                  AppUtils.copyEmailAddressToClipboard(context, emailAddress.emailAddress);
                },
                borderRadius: 8,
                padding: const EdgeInsets.symmetric(horizontal: 2, vertical: 4),
                customStyle: ThemeUtils.textStyleInter500().copyWith(
                  color: AppColor.gray6D7885,
                  fontSize: 14,
                  height: 1,
                  letterSpacing: -0.14,
                ),
                overflow: CommonTextStyle.defaultTextOverFlow,
                softWrap: CommonTextStyle.defaultSoftWrap
              )
          ]
        ),
      ),
    );
  }
}