TF-2667 Create ApplicationVersionWidget to display app version
This commit is contained in:
@@ -304,6 +304,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
fk_user_agent:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fk_user_agent
|
||||||
|
sha256: fd6c94e120786985a292d12f61422a581f4e851148d5940af38b819357b8ad0d
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.0"
|
||||||
flex_color_picker:
|
flex_color_picker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -671,6 +679,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
|
package_info_plus:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_info_plus
|
||||||
|
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.2.0"
|
||||||
|
package_info_plus_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_info_plus_platform_interface
|
||||||
|
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
|
import 'package:core/utils/platform_info.dart';
|
||||||
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
|
import 'package:fk_user_agent/fk_user_agent.dart';
|
||||||
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
|
|
||||||
|
class ApplicationManager {
|
||||||
|
|
||||||
|
final DeviceInfoPlugin _deviceInfoPlugin;
|
||||||
|
|
||||||
|
ApplicationManager(this._deviceInfoPlugin);
|
||||||
|
|
||||||
|
Future<PackageInfo> getPackageInfo() async {
|
||||||
|
final packageInfo = await PackageInfo.fromPlatform();
|
||||||
|
log('ApplicationManager::getPackageInto: $packageInfo');
|
||||||
|
return packageInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> getVersion() async {
|
||||||
|
final version = (await getPackageInfo()).version;
|
||||||
|
log('ApplicationManager::getVersion: $version');
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> getUserAgent() async {
|
||||||
|
try {
|
||||||
|
String userAgent;
|
||||||
|
if (PlatformInfo.isWeb) {
|
||||||
|
final webBrowserInfo = await _deviceInfoPlugin.webBrowserInfo;
|
||||||
|
userAgent = webBrowserInfo.userAgent ?? '';
|
||||||
|
} else {
|
||||||
|
await FkUserAgent.init();
|
||||||
|
userAgent = FkUserAgent.userAgent ?? '';
|
||||||
|
FkUserAgent.release();
|
||||||
|
}
|
||||||
|
return userAgent;
|
||||||
|
} catch(e) {
|
||||||
|
logError('ApplicationManager::getUserAgent: Exception: $e');
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> generateApplicationUserAgent() async {
|
||||||
|
final userAgent = await getUserAgent();
|
||||||
|
final version = await getVersion();
|
||||||
|
return 'Team-Mail/$version $userAgent';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -185,6 +185,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.4"
|
version: "6.1.4"
|
||||||
|
fk_user_agent:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: fk_user_agent
|
||||||
|
sha256: fd6c94e120786985a292d12f61422a581f4e851148d5940af38b819357b8ad0d
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.0"
|
||||||
flex_color_picker:
|
flex_color_picker:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -440,6 +448,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.10.0"
|
version: "1.10.0"
|
||||||
|
package_info_plus:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: package_info_plus
|
||||||
|
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.2.0"
|
||||||
|
package_info_plus_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_info_plus_platform_interface
|
||||||
|
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -75,6 +75,10 @@ dependencies:
|
|||||||
|
|
||||||
printing: 5.12.0
|
printing: 5.12.0
|
||||||
|
|
||||||
|
package_info_plus: 4.2.0
|
||||||
|
|
||||||
|
fk_user_agent: 2.1.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import 'package:core/presentation/utils/app_toast.dart';
|
|||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||||
import 'package:core/presentation/views/toast/tmail_toast.dart';
|
import 'package:core/presentation/views/toast/tmail_toast.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
|
import 'package:core/utils/application_manager.dart';
|
||||||
import 'package:core/utils/fps_manager.dart';
|
import 'package:core/utils/fps_manager.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
@@ -76,6 +77,7 @@ abstract class BaseController extends GetxController
|
|||||||
final ImagePaths imagePaths = Get.find<ImagePaths>();
|
final ImagePaths imagePaths = Get.find<ImagePaths>();
|
||||||
final ResponsiveUtils responsiveUtils = Get.find<ResponsiveUtils>();
|
final ResponsiveUtils responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
final Uuid uuid = Get.find<Uuid>();
|
final Uuid uuid = Get.find<Uuid>();
|
||||||
|
final ApplicationManager applicationManager = Get.find<ApplicationManager>();
|
||||||
|
|
||||||
bool _isFcmEnabled = false;
|
bool _isFcmEnabled = false;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
|
import 'package:core/utils/application_manager.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class ApplicationVersionWidget extends StatelessWidget {
|
||||||
|
|
||||||
|
final ApplicationManager applicationManager;
|
||||||
|
final EdgeInsetsGeometry? padding;
|
||||||
|
final String? title;
|
||||||
|
final TextStyle? textStyle;
|
||||||
|
|
||||||
|
const ApplicationVersionWidget({
|
||||||
|
super.key,
|
||||||
|
required this.applicationManager,
|
||||||
|
this.title,
|
||||||
|
this.textStyle,
|
||||||
|
this.padding,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return FutureBuilder(
|
||||||
|
future: applicationManager.getVersion(),
|
||||||
|
builder: (context, snapshot) {
|
||||||
|
if (snapshot.hasData) {
|
||||||
|
return Padding(
|
||||||
|
padding: padding ?? const EdgeInsets.only(top: 6),
|
||||||
|
child: Text(
|
||||||
|
'${title ?? 'v.'}${snapshot.data}',
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: textStyle ?? Theme.of(context).textTheme.labelMedium?.copyWith(
|
||||||
|
fontSize: 13,
|
||||||
|
color: AppColor.colorContentEmail,
|
||||||
|
fontWeight: FontWeight.w500
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -207,7 +207,6 @@ class ComposerBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => UploadController(Get.find<UploadAttachmentInteractor>()));
|
Get.lazyPut(() => UploadController(Get.find<UploadAttachmentInteractor>()));
|
||||||
Get.lazyPut(() => RichTextWebController());
|
Get.lazyPut(() => RichTextWebController());
|
||||||
Get.lazyPut(() => ComposerController(
|
Get.lazyPut(() => ComposerController(
|
||||||
Get.find<DeviceInfoPlugin>(),
|
|
||||||
Get.find<LocalFilePickerInteractor>(),
|
Get.find<LocalFilePickerInteractor>(),
|
||||||
Get.find<LocalImagePickerInteractor>(),
|
Get.find<LocalImagePickerInteractor>(),
|
||||||
Get.find<GetEmailContentInteractor>(),
|
Get.find<GetEmailContentInteractor>(),
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import 'package:device_info_plus/device_info_plus.dart';
|
|||||||
import 'package:dropdown_button2/dropdown_button2.dart';
|
import 'package:dropdown_button2/dropdown_button2.dart';
|
||||||
import 'package:file_picker/file_picker.dart';
|
import 'package:file_picker/file_picker.dart';
|
||||||
import 'package:filesize/filesize.dart';
|
import 'package:filesize/filesize.dart';
|
||||||
import 'package:fk_user_agent/fk_user_agent.dart';
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
@@ -123,7 +122,6 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
|||||||
|
|
||||||
final LocalFilePickerInteractor _localFilePickerInteractor;
|
final LocalFilePickerInteractor _localFilePickerInteractor;
|
||||||
final LocalImagePickerInteractor _localImagePickerInteractor;
|
final LocalImagePickerInteractor _localImagePickerInteractor;
|
||||||
final DeviceInfoPlugin _deviceInfoPlugin;
|
|
||||||
final GetEmailContentInteractor _getEmailContentInteractor;
|
final GetEmailContentInteractor _getEmailContentInteractor;
|
||||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||||
final UploadController uploadController;
|
final UploadController uploadController;
|
||||||
@@ -189,7 +187,6 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
|||||||
late bool _isEmailBodyLoaded;
|
late bool _isEmailBodyLoaded;
|
||||||
|
|
||||||
ComposerController(
|
ComposerController(
|
||||||
this._deviceInfoPlugin,
|
|
||||||
this._localFilePickerInteractor,
|
this._localFilePickerInteractor,
|
||||||
this._localImagePickerInteractor,
|
this._localImagePickerInteractor,
|
||||||
this._getEmailContentInteractor,
|
this._getEmailContentInteractor,
|
||||||
@@ -209,11 +206,7 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
|||||||
createFocusNodeInput();
|
createFocusNodeInput();
|
||||||
scrollControllerEmailAddress.addListener(_scrollControllerEmailAddressListener);
|
scrollControllerEmailAddress.addListener(_scrollControllerEmailAddressListener);
|
||||||
_listenStreamEvent();
|
_listenStreamEvent();
|
||||||
if (PlatformInfo.isMobile) {
|
if (PlatformInfo.isWeb) {
|
||||||
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
|
|
||||||
await FkUserAgent.init();
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
_listenBrowserEventAction();
|
_listenBrowserEventAction();
|
||||||
});
|
});
|
||||||
@@ -244,9 +237,6 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
|||||||
_subscriptionOnDragOver?.cancel();
|
_subscriptionOnDragOver?.cancel();
|
||||||
_subscriptionOnDragLeave?.cancel();
|
_subscriptionOnDragLeave?.cancel();
|
||||||
_subscriptionOnDrop?.cancel();
|
_subscriptionOnDrop?.cancel();
|
||||||
if (PlatformInfo.isMobile) {
|
|
||||||
FkUserAgent.release();
|
|
||||||
}
|
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -729,7 +719,7 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
|||||||
attachments.addAll(listInlineEmailBodyPart);
|
attachments.addAll(listInlineEmailBodyPart);
|
||||||
}
|
}
|
||||||
|
|
||||||
final userAgent = await userAgentPlatform;
|
final userAgent = await applicationManager.getUserAgent();
|
||||||
log('ComposerController::_generateEmail(): userAgent: $userAgent');
|
log('ComposerController::_generateEmail(): userAgent: $userAgent');
|
||||||
|
|
||||||
Map<MailboxId, bool> mailboxIds = {};
|
Map<MailboxId, bool> mailboxIds = {};
|
||||||
@@ -814,21 +804,6 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String> get userAgentPlatform async {
|
|
||||||
String userAgent;
|
|
||||||
try {
|
|
||||||
if (kIsWeb) {
|
|
||||||
final webBrowserInfo = await _deviceInfoPlugin.webBrowserInfo;
|
|
||||||
userAgent = webBrowserInfo.userAgent ?? '';
|
|
||||||
} else {
|
|
||||||
userAgent = FkUserAgent.userAgent ?? '';
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
userAgent = '';
|
|
||||||
}
|
|
||||||
return 'Team-Mail/${mailboxDashBoardController.appInformation.value?.version} $userAgent';
|
|
||||||
}
|
|
||||||
|
|
||||||
void validateInformationBeforeSending(BuildContext context) async {
|
void validateInformationBeforeSending(BuildContext context) async {
|
||||||
if (isSendEmailLoading.isTrue) {
|
if (isSendEmailLoading.isTrue) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:tmail_ui_user/features/base/widget/application_version_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/base_mailbox_view.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/base_mailbox_view.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||||
@@ -85,13 +85,25 @@ class MailboxView extends BaseMailboxView {
|
|||||||
: const SizedBox.shrink(),
|
: const SizedBox.shrink(),
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
final appInformation = controller.mailboxDashBoardController.appInformation.value;
|
if (!controller.isSelectionEnabled() && controller.responsiveUtils.isPortraitMobile(context)) {
|
||||||
if (appInformation != null
|
return Container(
|
||||||
&& !controller.isSelectionEnabled()) {
|
color: AppColor.colorBgMailbox,
|
||||||
if (controller.responsiveUtils.isLandscapeMobile(context)) {
|
width: double.infinity,
|
||||||
return const SizedBox.shrink();
|
padding: const EdgeInsets.all(16),
|
||||||
}
|
child: SafeArea(
|
||||||
return _buildVersionInformation(context, appInformation);
|
top: false,
|
||||||
|
child: ApplicationVersionWidget(
|
||||||
|
applicationManager: controller.applicationManager,
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
title: '${AppLocalizations.of(context).version} ',
|
||||||
|
textStyle: Theme.of(context).textTheme.labelMedium?.copyWith(
|
||||||
|
fontSize: 16,
|
||||||
|
color: AppColor.colorContentEmail,
|
||||||
|
fontWeight: FontWeight.w500
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
@@ -365,20 +377,4 @@ class MailboxView extends BaseMailboxView {
|
|||||||
}
|
}
|
||||||
}).toList() ?? <Widget>[];
|
}).toList() ?? <Widget>[];
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildVersionInformation(BuildContext context, PackageInfo packageInfo) {
|
|
||||||
return Container(
|
|
||||||
color: AppColor.colorBgMailbox,
|
|
||||||
width: double.infinity,
|
|
||||||
padding: const EdgeInsets.all(16),
|
|
||||||
child: SafeArea(
|
|
||||||
top: false,
|
|
||||||
child: Text(
|
|
||||||
'${AppLocalizations.of(context).version} ${packageInfo.version}',
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
style: const TextStyle(fontSize: 16, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@ import 'package:flutter/gestures.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:tmail_ui_user/features/base/widget/application_version_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart';
|
import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/base_mailbox_view.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/base_mailbox_view.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart';
|
||||||
@@ -68,13 +68,10 @@ class MailboxView extends BaseMailboxView {
|
|||||||
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
||||||
logoSVG: controller.imagePaths.icTMailLogo
|
logoSVG: controller.imagePaths.icTMailLogo
|
||||||
),
|
),
|
||||||
Obx(() {
|
ApplicationVersionWidget(
|
||||||
if (controller.mailboxDashBoardController.appInformation.value != null) {
|
applicationManager: controller.mailboxDashBoardController.applicationManager,
|
||||||
return _buildVersionInformation(context, controller.mailboxDashBoardController.appInformation.value!);
|
padding: const EdgeInsets.only(top: 4),
|
||||||
} else {
|
)
|
||||||
return const SizedBox.shrink();
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -331,15 +328,4 @@ class MailboxView extends BaseMailboxView {
|
|||||||
controller.mailboxDashBoardController.dragSelectedMultipleEmailToMailboxAction(listEmails, presentationMailbox);
|
controller.mailboxDashBoardController.dragSelectedMultipleEmailToMailboxAction(listEmails, presentationMailbox);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildVersionInformation(BuildContext context, PackageInfo packageInfo) {
|
|
||||||
return Container(
|
|
||||||
padding: const EdgeInsets.only(top: 4),
|
|
||||||
child: Text(
|
|
||||||
'v.${packageInfo.version}',
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
style: const TextStyle(fontSize: 13, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+9
-14
@@ -23,7 +23,6 @@ import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
|||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
|
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
|
||||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||||
import 'package:rxdart/transformers.dart';
|
import 'package:rxdart/transformers.dart';
|
||||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||||
@@ -203,7 +202,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
final mailboxUIAction = Rxn<MailboxUIAction>();
|
final mailboxUIAction = Rxn<MailboxUIAction>();
|
||||||
final emailUIAction = Rxn<EmailUIAction>();
|
final emailUIAction = Rxn<EmailUIAction>();
|
||||||
final dashboardRoute = DashboardRoutes.waiting.obs;
|
final dashboardRoute = DashboardRoutes.waiting.obs;
|
||||||
final appInformation = Rxn<PackageInfo>();
|
|
||||||
final currentSelectMode = SelectMode.INACTIVE.obs;
|
final currentSelectMode = SelectMode.INACTIVE.obs;
|
||||||
final filterMessageOption = FilterMessageOption.all.obs;
|
final filterMessageOption = FilterMessageOption.all.obs;
|
||||||
final listEmailSelected = <PresentationEmail>[].obs;
|
final listEmailSelected = <PresentationEmail>[].obs;
|
||||||
@@ -281,7 +279,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
_registerPendingEmailContents();
|
_registerPendingEmailContents();
|
||||||
_registerPendingFileInfo();
|
_registerPendingFileInfo();
|
||||||
_handleArguments();
|
_handleArguments();
|
||||||
_getAppVersion();
|
|
||||||
super.onReady();
|
super.onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -541,12 +538,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
_handleNotificationMessageFromEmailId(arguments.emailId);
|
_handleNotificationMessageFromEmailId(arguments.emailId);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _getAppVersion() async {
|
|
||||||
final info = await PackageInfo.fromPlatform();
|
|
||||||
log('MailboxDashBoardController::_getAppVersion(): ${info.version}');
|
|
||||||
appInformation.value = info;
|
|
||||||
}
|
|
||||||
|
|
||||||
void _getVacationResponse() {
|
void _getVacationResponse() {
|
||||||
if (accountId.value != null && _getAllVacationInteractor != null) {
|
if (accountId.value != null && _getAllVacationInteractor != null) {
|
||||||
consumeState(_getAllVacationInteractor!.execute(accountId.value!));
|
consumeState(_getAllVacationInteractor!.execute(accountId.value!));
|
||||||
@@ -1941,12 +1932,16 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _storeSendingEmailInCaseOfSendingFailureInMobile(SendEmailFailure failure) {
|
void _storeSendingEmailInCaseOfSendingFailureInMobile(SendEmailFailure failure) {
|
||||||
if (PlatformInfo.isMobile) {
|
if (PlatformInfo.isMobile &&
|
||||||
|
failure.session != null &&
|
||||||
|
failure.accountId != null &&
|
||||||
|
failure.emailRequest != null
|
||||||
|
) {
|
||||||
_tryToStoreSendingEmail(
|
_tryToStoreSendingEmail(
|
||||||
failure.session,
|
failure.session!,
|
||||||
failure.accountId,
|
failure.accountId!,
|
||||||
failure.emailRequest,
|
failure.emailRequest!,
|
||||||
failure.mailboxRequest
|
failure.mailboxRequest
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import 'package:flutter_svg/flutter_svg.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:model/extensions/username_extension.dart';
|
import 'package:model/extensions/username_extension.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
|
import 'package:tmail_ui_user/features/base/widget/application_version_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/popup_item_no_icon_widget.dart';
|
import 'package:tmail_ui_user/features/base/widget/popup_item_no_icon_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
||||||
@@ -76,21 +77,9 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
logoSVG: controller.imagePaths.icTMailLogo,
|
logoSVG: controller.imagePaths.icTMailLogo,
|
||||||
onTapCallback: controller.redirectToInboxAction,
|
onTapCallback: controller.redirectToInboxAction,
|
||||||
),
|
),
|
||||||
Obx(() {
|
ApplicationVersionWidget(
|
||||||
if (controller.appInformation.value != null) {
|
applicationManager: controller.applicationManager
|
||||||
return Padding(padding: const EdgeInsets.only(top: 6),
|
)
|
||||||
child: Text(
|
|
||||||
'v${controller.appInformation.value!.version}',
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
style: const TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
color: AppColor.colorContentEmail,
|
|
||||||
fontWeight: FontWeight.w500),
|
|
||||||
));
|
|
||||||
} else {
|
|
||||||
return const SizedBox.shrink();
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
])
|
])
|
||||||
),
|
),
|
||||||
Expanded(child: Container(
|
Expanded(child: Container(
|
||||||
@@ -340,7 +329,10 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
: const SizedBox.shrink(),
|
: const SizedBox.shrink(),
|
||||||
const SizedBox(width: 24),
|
const SizedBox(width: 24),
|
||||||
Obx(() => (AvatarBuilder()
|
Obx(() => (AvatarBuilder()
|
||||||
..text(controller.sessionCurrent?.username.firstCharacter ?? '')
|
..text(controller.accountId.value != null
|
||||||
|
? controller.sessionCurrent?.username.firstCharacter ?? ''
|
||||||
|
: ''
|
||||||
|
)
|
||||||
..backgroundColor(Colors.white)
|
..backgroundColor(Colors.white)
|
||||||
..textColor(Colors.black)
|
..textColor(Colors.black)
|
||||||
..context(context)
|
..context(context)
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart
|
|||||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
|
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
|
||||||
import 'package:rule_filter/rule_filter/capability_rule_filter.dart';
|
import 'package:rule_filter/rule_filter/capability_rule_filter.dart';
|
||||||
import 'package:server_settings/server_settings/capability_server_settings.dart';
|
import 'package:server_settings/server_settings/capability_server_settings.dart';
|
||||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||||
@@ -44,7 +43,6 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||||
UpdateVacationInteractor? _updateVacationInteractor;
|
UpdateVacationInteractor? _updateVacationInteractor;
|
||||||
|
|
||||||
final appInformation = Rxn<PackageInfo>();
|
|
||||||
final accountId = Rxn<AccountId>();
|
final accountId = Rxn<AccountId>();
|
||||||
final accountMenuItemSelected = AccountMenuItem.profiles.obs;
|
final accountMenuItemSelected = AccountMenuItem.profiles.obs;
|
||||||
final settingsPageLevel = SettingsPageLevel.universal.obs;
|
final settingsPageLevel = SettingsPageLevel.universal.obs;
|
||||||
@@ -66,7 +64,6 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
void onReady() {
|
void onReady() {
|
||||||
_initialPageLevel();
|
_initialPageLevel();
|
||||||
_getArguments();
|
_getArguments();
|
||||||
_getAppVersion();
|
|
||||||
super.onReady();
|
super.onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,12 +148,6 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _getAppVersion() async {
|
|
||||||
final info = await PackageInfo.fromPlatform();
|
|
||||||
log('ManageAccountDashBoardController::_getAppVersion(): ${info.version}');
|
|
||||||
appInformation.value = info;
|
|
||||||
}
|
|
||||||
|
|
||||||
void _getVacationResponse() {
|
void _getVacationResponse() {
|
||||||
if (accountId.value != null && _getAllVacationInteractor != null) {
|
if (accountId.value != null && _getAllVacationInteractor != null) {
|
||||||
consumeState(_getAllVacationInteractor!.execute(accountId.value!));
|
consumeState(_getAllVacationInteractor!.execute(accountId.value!));
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:tmail_ui_user/features/base/state/banner_state.dart';
|
import 'package:tmail_ui_user/features/base/state/banner_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/base/widget/application_version_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/user_setting_popup_menu_mixin.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/user_setting_popup_menu_mixin.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/always_read_receipt/always_read_receipt_view.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/always_read_receipt/always_read_receipt_view.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_view.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_view.dart';
|
||||||
@@ -55,18 +56,9 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
|
|||||||
logoSVG: controller.imagePaths.icTMailLogo,
|
logoSVG: controller.imagePaths.icTMailLogo,
|
||||||
onTapCallback: () => controller.backToMailboxDashBoard(context: context),
|
onTapCallback: () => controller.backToMailboxDashBoard(context: context),
|
||||||
),
|
),
|
||||||
Obx(() {
|
ApplicationVersionWidget(
|
||||||
if (controller.appInformation.value != null) {
|
applicationManager: controller.applicationManager
|
||||||
return Padding(padding: const EdgeInsets.only(top: 6),
|
)
|
||||||
child: Text(
|
|
||||||
'v.${controller.appInformation.value!.version}',
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
style: const TextStyle(fontSize: 13, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500),
|
|
||||||
));
|
|
||||||
} else {
|
|
||||||
return const SizedBox.shrink();
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
])
|
])
|
||||||
),
|
),
|
||||||
Expanded(child: Padding(
|
Expanded(child: Padding(
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'package:core/utils/direction_utils.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:tmail_ui_user/features/base/widget/application_version_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_controller.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/account_menu_item_tile_builder.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/account_menu_item_tile_builder.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
@@ -31,20 +32,10 @@ class ManageAccountMenuView extends GetWidget<ManageAccountMenuController> {
|
|||||||
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
textStyle: const TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
|
||||||
logoSVG: controller.imagePaths.icTMailLogo
|
logoSVG: controller.imagePaths.icTMailLogo
|
||||||
),
|
),
|
||||||
Obx(() {
|
ApplicationVersionWidget(
|
||||||
if (controller.dashBoardController.appInformation.value != null) {
|
applicationManager: controller.dashBoardController.applicationManager,
|
||||||
return Padding(
|
padding: const EdgeInsets.only(top: 4),
|
||||||
padding: const EdgeInsets.only(top: 4),
|
)
|
||||||
child: Text(
|
|
||||||
'v.${controller.dashBoardController.appInformation.value!.version}',
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
style: const TextStyle(fontSize: 13, color: AppColor.colorContentEmail, fontWeight: FontWeight.w500),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return const SizedBox.shrink();
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
])
|
])
|
||||||
),
|
),
|
||||||
if (!controller.responsiveUtils.isWebDesktop(context))
|
if (!controller.responsiveUtils.isWebDesktop(context))
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:core/data/utils/device_manager.dart';
|
|||||||
import 'package:core/presentation/resources/image_paths.dart';
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
import 'package:core/presentation/utils/app_toast.dart';
|
import 'package:core/presentation/utils/app_toast.dart';
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||||
|
import 'package:core/utils/application_manager.dart';
|
||||||
import 'package:core/utils/config/app_config_loader.dart';
|
import 'package:core/utils/config/app_config_loader.dart';
|
||||||
import 'package:core/utils/file_utils.dart';
|
import 'package:core/utils/file_utils.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
@@ -62,6 +63,7 @@ class CoreBindings extends Bindings {
|
|||||||
Get.put(AppConfigLoader());
|
Get.put(AppConfigLoader());
|
||||||
Get.put(FileUtils());
|
Get.put(FileUtils());
|
||||||
Get.put(PrintUtils());
|
Get.put(PrintUtils());
|
||||||
|
Get.put(ApplicationManager(Get.find<DeviceInfoPlugin>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void _bindingIsolate() {
|
void _bindingIsolate() {
|
||||||
|
|||||||
@@ -304,6 +304,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
fk_user_agent:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fk_user_agent
|
||||||
|
sha256: fd6c94e120786985a292d12f61422a581f4e851148d5940af38b819357b8ad0d
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.0"
|
||||||
flex_color_picker:
|
flex_color_picker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -648,6 +656,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
|
package_info_plus:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_info_plus
|
||||||
|
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.2.0"
|
||||||
|
package_info_plus_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_info_plus_platform_interface
|
||||||
|
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
+2
-2
@@ -594,7 +594,7 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
fk_user_agent:
|
fk_user_agent:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fk_user_agent
|
name: fk_user_agent
|
||||||
sha256: fd6c94e120786985a292d12f61422a581f4e851148d5940af38b819357b8ad0d
|
sha256: fd6c94e120786985a292d12f61422a581f4e851148d5940af38b819357b8ad0d
|
||||||
@@ -1272,7 +1272,7 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
package_info_plus:
|
package_info_plus:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: package_info_plus
|
name: package_info_plus
|
||||||
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
|
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
|
||||||
|
|||||||
@@ -152,16 +152,12 @@ dependencies:
|
|||||||
|
|
||||||
hive: 2.2.3
|
hive: 2.2.3
|
||||||
|
|
||||||
fk_user_agent: 2.1.0
|
|
||||||
|
|
||||||
pointer_interceptor: 0.9.1
|
pointer_interceptor: 0.9.1
|
||||||
|
|
||||||
rxdart: 0.27.7
|
rxdart: 0.27.7
|
||||||
|
|
||||||
connectivity_plus: 3.0.3
|
connectivity_plus: 3.0.3
|
||||||
|
|
||||||
package_info_plus: 4.2.0
|
|
||||||
|
|
||||||
dropdown_button2: 2.0.0
|
dropdown_button2: 2.0.0
|
||||||
|
|
||||||
flutter_staggered_grid_view: 0.6.2
|
flutter_staggered_grid_view: 0.6.2
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
|
import 'package:core/utils/application_manager.dart';
|
||||||
import 'package:dartz/dartz.dart' hide State;
|
import 'package:dartz/dartz.dart' hide State;
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -86,6 +87,7 @@ const fallbackGenerators = {
|
|||||||
MockSpec<RejectCalendarEventInteractor>(),
|
MockSpec<RejectCalendarEventInteractor>(),
|
||||||
MockSpec<StoreEventAttendanceStatusInteractor>(),
|
MockSpec<StoreEventAttendanceStatusInteractor>(),
|
||||||
MockSpec<PrintUtils>(),
|
MockSpec<PrintUtils>(),
|
||||||
|
MockSpec<ApplicationManager>(),
|
||||||
])
|
])
|
||||||
void main() {
|
void main() {
|
||||||
TestWidgetsFlutterBinding.ensureInitialized();
|
TestWidgetsFlutterBinding.ensureInitialized();
|
||||||
@@ -118,6 +120,7 @@ void main() {
|
|||||||
final printEmailInteractor = MockPrintEmailInteractor();
|
final printEmailInteractor = MockPrintEmailInteractor();
|
||||||
final storeEventAttendanceStatusInteractor = MockStoreEventAttendanceStatusInteractor();
|
final storeEventAttendanceStatusInteractor = MockStoreEventAttendanceStatusInteractor();
|
||||||
final printUtils = MockPrintUtils();
|
final printUtils = MockPrintUtils();
|
||||||
|
final applicationManager = MockApplicationManager();
|
||||||
|
|
||||||
late SingleEmailController singleEmailController;
|
late SingleEmailController singleEmailController;
|
||||||
|
|
||||||
@@ -151,6 +154,7 @@ void main() {
|
|||||||
Get.put<ResponsiveUtils>(responsiveUtils);
|
Get.put<ResponsiveUtils>(responsiveUtils);
|
||||||
Get.put<Uuid>(uuid);
|
Get.put<Uuid>(uuid);
|
||||||
Get.put<PrintUtils>(printUtils);
|
Get.put<PrintUtils>(printUtils);
|
||||||
|
Get.put<ApplicationManager>(applicationManager);
|
||||||
|
|
||||||
when(mailboxDashboardController.accountId).thenReturn(Rxn(testAccountId));
|
when(mailboxDashboardController.accountId).thenReturn(Rxn(testAccountId));
|
||||||
when(uuid.v4()).thenReturn(testTaskId);
|
when(uuid.v4()).thenReturn(testTaskId);
|
||||||
@@ -257,7 +261,7 @@ void main() {
|
|||||||
BlobCalendarEvent(
|
BlobCalendarEvent(
|
||||||
blobId: blobId,
|
blobId: blobId,
|
||||||
calendarEventList: [calendarEvent])]));
|
calendarEventList: [calendarEvent])]));
|
||||||
|
|
||||||
// act
|
// act
|
||||||
singleEmailController.onCalendarEventReplyAction(EventActionType.no, emailId);
|
singleEmailController.onCalendarEventReplyAction(EventActionType.no, emailId);
|
||||||
await untilCalled(rejectCalendarEventInteractor.execute(any, any, any, any));
|
await untilCalled(rejectCalendarEventInteractor.execute(any, any, any, any));
|
||||||
|
|||||||
Reference in New Issue
Block a user