TF-2667 Create ApplicationVersionWidget to display app version
This commit is contained in:
@@ -304,6 +304,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -671,6 +679,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: transitive
|
||||
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"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -440,6 +448,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -75,6 +75,10 @@ dependencies:
|
||||
|
||||
printing: 5.12.0
|
||||
|
||||
package_info_plus: 4.2.0
|
||||
|
||||
fk_user_agent: 2.1.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
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/views/toast/tmail_toast.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/platform_info.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
@@ -76,6 +77,7 @@ abstract class BaseController extends GetxController
|
||||
final ImagePaths imagePaths = Get.find<ImagePaths>();
|
||||
final ResponsiveUtils responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
final Uuid uuid = Get.find<Uuid>();
|
||||
final ApplicationManager applicationManager = Get.find<ApplicationManager>();
|
||||
|
||||
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(() => RichTextWebController());
|
||||
Get.lazyPut(() => ComposerController(
|
||||
Get.find<DeviceInfoPlugin>(),
|
||||
Get.find<LocalFilePickerInteractor>(),
|
||||
Get.find<LocalImagePickerInteractor>(),
|
||||
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:file_picker/file_picker.dart';
|
||||
import 'package:filesize/filesize.dart';
|
||||
import 'package:fk_user_agent/fk_user_agent.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@@ -123,7 +122,6 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
|
||||
final LocalFilePickerInteractor _localFilePickerInteractor;
|
||||
final LocalImagePickerInteractor _localImagePickerInteractor;
|
||||
final DeviceInfoPlugin _deviceInfoPlugin;
|
||||
final GetEmailContentInteractor _getEmailContentInteractor;
|
||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||
final UploadController uploadController;
|
||||
@@ -189,7 +187,6 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
late bool _isEmailBodyLoaded;
|
||||
|
||||
ComposerController(
|
||||
this._deviceInfoPlugin,
|
||||
this._localFilePickerInteractor,
|
||||
this._localImagePickerInteractor,
|
||||
this._getEmailContentInteractor,
|
||||
@@ -209,11 +206,7 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
createFocusNodeInput();
|
||||
scrollControllerEmailAddress.addListener(_scrollControllerEmailAddressListener);
|
||||
_listenStreamEvent();
|
||||
if (PlatformInfo.isMobile) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
|
||||
await FkUserAgent.init();
|
||||
});
|
||||
} else {
|
||||
if (PlatformInfo.isWeb) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
_listenBrowserEventAction();
|
||||
});
|
||||
@@ -244,9 +237,6 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
_subscriptionOnDragOver?.cancel();
|
||||
_subscriptionOnDragLeave?.cancel();
|
||||
_subscriptionOnDrop?.cancel();
|
||||
if (PlatformInfo.isMobile) {
|
||||
FkUserAgent.release();
|
||||
}
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
@@ -729,7 +719,7 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
attachments.addAll(listInlineEmailBodyPart);
|
||||
}
|
||||
|
||||
final userAgent = await userAgentPlatform;
|
||||
final userAgent = await applicationManager.getUserAgent();
|
||||
log('ComposerController::_generateEmail(): userAgent: $userAgent');
|
||||
|
||||
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 {
|
||||
if (isSendEmailLoading.isTrue) {
|
||||
return;
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.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/model/mailbox_categories.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
@@ -85,13 +85,25 @@ class MailboxView extends BaseMailboxView {
|
||||
: const SizedBox.shrink(),
|
||||
),
|
||||
Obx(() {
|
||||
final appInformation = controller.mailboxDashBoardController.appInformation.value;
|
||||
if (appInformation != null
|
||||
&& !controller.isSelectionEnabled()) {
|
||||
if (controller.responsiveUtils.isLandscapeMobile(context)) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return _buildVersionInformation(context, appInformation);
|
||||
if (!controller.isSelectionEnabled() && controller.responsiveUtils.isPortraitMobile(context)) {
|
||||
return Container(
|
||||
color: AppColor.colorBgMailbox,
|
||||
width: double.infinity,
|
||||
padding: const EdgeInsets.all(16),
|
||||
child: SafeArea(
|
||||
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 {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
@@ -365,20 +377,4 @@ class MailboxView extends BaseMailboxView {
|
||||
}
|
||||
}).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:get/get.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/mailbox/presentation/base_mailbox_view.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),
|
||||
logoSVG: controller.imagePaths.icTMailLogo
|
||||
),
|
||||
Obx(() {
|
||||
if (controller.mailboxDashBoardController.appInformation.value != null) {
|
||||
return _buildVersionInformation(context, controller.mailboxDashBoardController.appInformation.value!);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
ApplicationVersionWidget(
|
||||
applicationManager: controller.mailboxDashBoardController.applicationManager,
|
||||
padding: const EdgeInsets.only(top: 4),
|
||||
)
|
||||
])
|
||||
);
|
||||
}
|
||||
@@ -331,15 +328,4 @@ class MailboxView extends BaseMailboxView {
|
||||
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),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
+8
-13
@@ -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/vacation/vacation_response.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:rxdart/transformers.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 emailUIAction = Rxn<EmailUIAction>();
|
||||
final dashboardRoute = DashboardRoutes.waiting.obs;
|
||||
final appInformation = Rxn<PackageInfo>();
|
||||
final currentSelectMode = SelectMode.INACTIVE.obs;
|
||||
final filterMessageOption = FilterMessageOption.all.obs;
|
||||
final listEmailSelected = <PresentationEmail>[].obs;
|
||||
@@ -281,7 +279,6 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
_registerPendingEmailContents();
|
||||
_registerPendingFileInfo();
|
||||
_handleArguments();
|
||||
_getAppVersion();
|
||||
super.onReady();
|
||||
}
|
||||
|
||||
@@ -541,12 +538,6 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
_handleNotificationMessageFromEmailId(arguments.emailId);
|
||||
}
|
||||
|
||||
Future<void> _getAppVersion() async {
|
||||
final info = await PackageInfo.fromPlatform();
|
||||
log('MailboxDashBoardController::_getAppVersion(): ${info.version}');
|
||||
appInformation.value = info;
|
||||
}
|
||||
|
||||
void _getVacationResponse() {
|
||||
if (accountId.value != null && _getAllVacationInteractor != null) {
|
||||
consumeState(_getAllVacationInteractor!.execute(accountId.value!));
|
||||
@@ -1941,11 +1932,15 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
|
||||
void _storeSendingEmailInCaseOfSendingFailureInMobile(SendEmailFailure failure) {
|
||||
if (PlatformInfo.isMobile) {
|
||||
if (PlatformInfo.isMobile &&
|
||||
failure.session != null &&
|
||||
failure.accountId != null &&
|
||||
failure.emailRequest != null
|
||||
) {
|
||||
_tryToStoreSendingEmail(
|
||||
failure.session,
|
||||
failure.accountId,
|
||||
failure.emailRequest,
|
||||
failure.session!,
|
||||
failure.accountId!,
|
||||
failure.emailRequest!,
|
||||
failure.mailboxRequest
|
||||
);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/extensions/username_extension.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/composer/presentation/composer_view_web.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
|
||||
@@ -76,21 +77,9 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
logoSVG: controller.imagePaths.icTMailLogo,
|
||||
onTapCallback: controller.redirectToInboxAction,
|
||||
),
|
||||
Obx(() {
|
||||
if (controller.appInformation.value != null) {
|
||||
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();
|
||||
}
|
||||
}),
|
||||
ApplicationVersionWidget(
|
||||
applicationManager: controller.applicationManager
|
||||
)
|
||||
])
|
||||
),
|
||||
Expanded(child: Container(
|
||||
@@ -340,7 +329,10 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
: const SizedBox.shrink(),
|
||||
const SizedBox(width: 24),
|
||||
Obx(() => (AvatarBuilder()
|
||||
..text(controller.sessionCurrent?.username.firstCharacter ?? '')
|
||||
..text(controller.accountId.value != null
|
||||
? controller.sessionCurrent?.username.firstCharacter ?? ''
|
||||
: ''
|
||||
)
|
||||
..backgroundColor(Colors.white)
|
||||
..textColor(Colors.black)
|
||||
..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/mail/vacation/vacation_response.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:server_settings/server_settings/capability_server_settings.dart';
|
||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||
@@ -44,7 +43,6 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||
UpdateVacationInteractor? _updateVacationInteractor;
|
||||
|
||||
final appInformation = Rxn<PackageInfo>();
|
||||
final accountId = Rxn<AccountId>();
|
||||
final accountMenuItemSelected = AccountMenuItem.profiles.obs;
|
||||
final settingsPageLevel = SettingsPageLevel.universal.obs;
|
||||
@@ -66,7 +64,6 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
void onReady() {
|
||||
_initialPageLevel();
|
||||
_getArguments();
|
||||
_getAppVersion();
|
||||
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() {
|
||||
if (accountId.value != null && _getAllVacationInteractor != null) {
|
||||
consumeState(_getAllVacationInteractor!.execute(accountId.value!));
|
||||
|
||||
@@ -9,6 +9,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/model.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/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';
|
||||
@@ -55,18 +56,9 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
|
||||
logoSVG: controller.imagePaths.icTMailLogo,
|
||||
onTapCallback: () => controller.backToMailboxDashBoard(context: context),
|
||||
),
|
||||
Obx(() {
|
||||
if (controller.appInformation.value != null) {
|
||||
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();
|
||||
}
|
||||
}),
|
||||
ApplicationVersionWidget(
|
||||
applicationManager: controller.applicationManager
|
||||
)
|
||||
])
|
||||
),
|
||||
Expanded(child: Padding(
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:core/utils/direction_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.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/widgets/account_menu_item_tile_builder.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),
|
||||
logoSVG: controller.imagePaths.icTMailLogo
|
||||
),
|
||||
Obx(() {
|
||||
if (controller.dashBoardController.appInformation.value != null) {
|
||||
return Padding(
|
||||
ApplicationVersionWidget(
|
||||
applicationManager: controller.dashBoardController.applicationManager,
|
||||
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))
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:core/data/utils/device_manager.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/app_toast.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/file_utils.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
@@ -62,6 +63,7 @@ class CoreBindings extends Bindings {
|
||||
Get.put(AppConfigLoader());
|
||||
Get.put(FileUtils());
|
||||
Get.put(PrintUtils());
|
||||
Get.put(ApplicationManager(Get.find<DeviceInfoPlugin>()));
|
||||
}
|
||||
|
||||
void _bindingIsolate() {
|
||||
|
||||
@@ -304,6 +304,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -648,6 +656,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
+2
-2
@@ -594,7 +594,7 @@ packages:
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
fk_user_agent:
|
||||
dependency: "direct main"
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fk_user_agent
|
||||
sha256: fd6c94e120786985a292d12f61422a581f4e851148d5940af38b819357b8ad0d
|
||||
@@ -1272,7 +1272,7 @@ packages:
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
package_info_plus:
|
||||
dependency: "direct main"
|
||||
dependency: transitive
|
||||
description:
|
||||
name: package_info_plus
|
||||
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
|
||||
|
||||
@@ -152,16 +152,12 @@ dependencies:
|
||||
|
||||
hive: 2.2.3
|
||||
|
||||
fk_user_agent: 2.1.0
|
||||
|
||||
pointer_interceptor: 0.9.1
|
||||
|
||||
rxdart: 0.27.7
|
||||
|
||||
connectivity_plus: 3.0.3
|
||||
|
||||
package_info_plus: 4.2.0
|
||||
|
||||
dropdown_button2: 2.0.0
|
||||
|
||||
flutter_staggered_grid_view: 0.6.2
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/utils/application_manager.dart';
|
||||
import 'package:dartz/dartz.dart' hide State;
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -86,6 +87,7 @@ const fallbackGenerators = {
|
||||
MockSpec<RejectCalendarEventInteractor>(),
|
||||
MockSpec<StoreEventAttendanceStatusInteractor>(),
|
||||
MockSpec<PrintUtils>(),
|
||||
MockSpec<ApplicationManager>(),
|
||||
])
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -118,6 +120,7 @@ void main() {
|
||||
final printEmailInteractor = MockPrintEmailInteractor();
|
||||
final storeEventAttendanceStatusInteractor = MockStoreEventAttendanceStatusInteractor();
|
||||
final printUtils = MockPrintUtils();
|
||||
final applicationManager = MockApplicationManager();
|
||||
|
||||
late SingleEmailController singleEmailController;
|
||||
|
||||
@@ -151,6 +154,7 @@ void main() {
|
||||
Get.put<ResponsiveUtils>(responsiveUtils);
|
||||
Get.put<Uuid>(uuid);
|
||||
Get.put<PrintUtils>(printUtils);
|
||||
Get.put<ApplicationManager>(applicationManager);
|
||||
|
||||
when(mailboxDashboardController.accountId).thenReturn(Rxn(testAccountId));
|
||||
when(uuid.v4()).thenReturn(testTaskId);
|
||||
|
||||
Reference in New Issue
Block a user