
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:core/presentation/views/html_viewer/html_content_viewer_widget.dart';
import 'package:core/presentation/views/html_viewer/ios_html_content_viewer_widget.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/email/presentation/model/eml_previewer.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';

class EmailPreviewerDialogView extends StatelessWidget {

  final EMLPreviewer emlPreviewer;
  final ImagePaths imagePaths;
  final OnMailtoDelegateAction onMailtoDelegateAction;
  final OnPreviewEMLDelegateAction onPreviewEMLDelegateAction;
  final OnDownloadAttachmentDelegateAction onDownloadAttachmentDelegateAction;

  const EmailPreviewerDialogView({
    super.key,
    required this.emlPreviewer,
    required this.imagePaths,
    required this.onMailtoDelegateAction,
    required this.onPreviewEMLDelegateAction,
    required this.onDownloadAttachmentDelegateAction,
  });

  @override
  Widget build(BuildContext context) {
    if (PlatformInfo.isIOS) {
      return Dialog(
        shape: const RoundedRectangleBorder(
          borderRadius: BorderRadius.only(
            topRight: Radius.circular(16),
            topLeft: Radius.circular(16),
          ),
        ),
        insetPadding: EdgeInsets.zero,
        alignment: Alignment.center,
        backgroundColor: Colors.white,
        child: Container(
          decoration: const BoxDecoration(
            borderRadius: BorderRadius.only(
              topRight: Radius.circular(16),
              topLeft: Radius.circular(16),
            ),
          ),
          width: double.infinity,
          height: double.infinity,
          clipBehavior: Clip.antiAlias,
          child: Column(
            children: [
              SizedBox(
                height: 52,
                child: Row(
                  children: [
                    const Spacer(),
                    TMailButtonWidget.fromIcon(
                      icon: imagePaths.icComposerClose,
                      backgroundColor: Colors.transparent,
                      margin: const EdgeInsetsDirectional.only(end: 12),
                      onTapActionCallback: popBack,
                    )
                  ],
                ),
              ),
              const Divider(color: AppColor.colorDivider, height: 1),
              Expanded(
                child: IosHtmlContentViewerWidget(
                  contentHtml: emlPreviewer.content,
                  direction: AppUtils.getCurrentDirection(context),
                  onMailtoDelegateAction: onMailtoDelegateAction,
                  onPreviewEMLDelegateAction: onPreviewEMLDelegateAction,
                  onDownloadAttachmentDelegateAction: onDownloadAttachmentDelegateAction,
                ),
              ),
            ],
          ),
        ),
      );
    } else {
      return Scaffold(
        backgroundColor: Colors.white,
        body: SingleChildScrollView(
          child: HtmlContentViewer(
            contentHtml: emlPreviewer.content,
            initialWidth: context.width,
            useDefaultFontStyle: true,
            direction: AppUtils.getCurrentDirection(context),
            onMailtoDelegateAction: onMailtoDelegateAction,
            onPreviewEMLDelegateAction: onPreviewEMLDelegateAction,
            onDownloadAttachmentDelegateAction: onDownloadAttachmentDelegateAction,
          ),
        ),
      );
    }
  }
}