From 1301a9c1148098b1151c6de8c26a9b80d8300db7 Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 14 Feb 2022 18:01:58 +0700 Subject: [PATCH] TF-221 Create emails with User-Agent header --- .../presentation/composer_controller.dart | 27 ++++++++++++++++++- pubspec.yaml | 3 +++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 747c54358..5e2311a47 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -5,7 +5,9 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:enough_html_editor/enough_html_editor.dart'; import 'package:file_picker/file_picker.dart'; +import 'package:fk_user_agent/fk_user_agent.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_chips_input/flutter_chips_input.dart'; import 'package:get/get.dart'; import 'package:http_parser/http_parser.dart'; @@ -14,6 +16,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_body_value.dart'; +import 'package:jmap_dart_client/jmap/mail/email/individual_header_identifier.dart'; import 'package:model/model.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart'; @@ -34,7 +37,9 @@ import 'package:tmail_ui_user/features/upload/domain/state/local_file_picker_sta import 'package:tmail_ui_user/features/upload/domain/usecases/local_file_picker_interactor.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; +import 'package:tmail_ui_user/main/utils/app_logger.dart'; import 'package:uuid/uuid.dart'; +import 'dart:developer' as developer; class ComposerController extends BaseController { @@ -79,6 +84,14 @@ class ComposerController extends BaseController { this._uploadMultipleAttachmentInteractor, ); + @override + void onInit() { + super.onInit(); + WidgetsBinding.instance?.addPostFrameCallback((timeStamp) async { + await FkUserAgent.init(); + }); + } + @override void onReady() async { super.onReady(); @@ -267,10 +280,22 @@ class ComposerController extends BaseController { bodyValues: { generatePartId: EmailBodyValue(emailBodyText, false, false) }, - attachments: attachments.isNotEmpty ? _generateAttachments() : null + headerUserAgent: {IndividualHeaderIdentifier.headerUserAgent : userAgentPlatform}, + attachments: attachments.isNotEmpty ? _generateAttachments() : null, ); } + String get userAgentPlatform { + String userAgent; + try { + userAgent = FkUserAgent.userAgent ?? ''; + log('ComposerController - userAgentPlatform(): userAgent: $userAgent'); + } on PlatformException { + userAgent = ''; + } + return userAgent; + } + Set _generateAttachments() { return attachments.map((attachment) => attachment.toEmailBodyPart(ContentDisposition.attachment.value)).toSet(); diff --git a/pubspec.yaml b/pubspec.yaml index d72518c29..d4bd6816f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -122,6 +122,9 @@ dependencies: url: https://github.com/dab246/enough_html_editor.git ref: fix_bug_enough_platform_widgets + # fk_user_agent + fk_user_agent: 2.1.0 + dev_dependencies: flutter_test: sdk: flutter