TF-3719 Add handle export log to device if need
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/export_trace_log_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/export_trace_log_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/menu/trace_log_interactor_bindings.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
extension ExportTraceLogExtension on ManageAccountDashBoardController {
|
||||
|
||||
void injectTraceLogDependencies() {
|
||||
TraceLogInteractorBindings().dependencies();
|
||||
}
|
||||
|
||||
void disposeTraceLogDependencies() {
|
||||
TraceLogInteractorBindings().dispose();
|
||||
}
|
||||
|
||||
Future<void> showExportTraceLogConfirmDialog(BuildContext context) async {
|
||||
await showConfirmDialogAction(
|
||||
context,
|
||||
AppLocalizations.of(context).messageExportTraceLogDialog,
|
||||
AppLocalizations.of(context).yes,
|
||||
title: AppLocalizations.of(context).exportTraceLog,
|
||||
alignCenter: true,
|
||||
outsideDismissible: false,
|
||||
useIconAsBasicLogo: false,
|
||||
cancelTitle: AppLocalizations.of(context).no,
|
||||
onConfirmAction: _exportTraceLog,
|
||||
);
|
||||
}
|
||||
|
||||
void _exportTraceLog() {
|
||||
final exportTraceLogInteractor = getBinding<ExportTraceLogInteractor>();
|
||||
if (exportTraceLogInteractor != null) {
|
||||
consumeState(exportTraceLogInteractor.execute());
|
||||
}
|
||||
}
|
||||
|
||||
void handleExportTraceLogSuccess(ExportTraceLogSuccess success) {
|
||||
toastManager.showMessageSuccess(success);
|
||||
}
|
||||
|
||||
void handleExportTraceLogFailure(ExportTraceLogFailure failure) {
|
||||
toastManager.showMessageFailure(failure);
|
||||
}
|
||||
}
|
||||
@@ -16,12 +16,14 @@ 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/reloadable/reloadable_controller.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/domain/state/export_trace_log_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vacation_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/action/dashboard_setting_action.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/bindings/email_rules_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/export_trace_log_extension.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forward_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/language_and_region/language_and_region_bindings.dart';
|
||||
@@ -60,6 +62,9 @@ class ManageAccountDashBoardController extends ReloadableController with UserSet
|
||||
void onInit() {
|
||||
BackButtonInterceptor.add(_onBackButtonInterceptor, name: AppRoutes.settings);
|
||||
super.onInit();
|
||||
if (AppConfig.isApiLoggingEnabled) {
|
||||
injectTraceLogDependencies();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -77,11 +82,22 @@ class ManageAccountDashBoardController extends ReloadableController with UserSet
|
||||
}
|
||||
} else if (success is UpdateVacationSuccess) {
|
||||
_handleUpdateVacationSuccess(success);
|
||||
} else if (success is ExportTraceLogSuccess) {
|
||||
handleExportTraceLogSuccess(success);
|
||||
} else {
|
||||
super.handleSuccessViewState(success);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void handleFailureViewState(Failure failure) {
|
||||
if (failure is ExportTraceLogFailure) {
|
||||
handleExportTraceLogFailure(failure);
|
||||
} else {
|
||||
super.handleFailureViewState(failure);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void handleReloaded(Session session) {
|
||||
log('ManageAccountDashBoardController::handleReloaded:');
|
||||
@@ -400,6 +416,9 @@ class ManageAccountDashBoardController extends ReloadableController with UserSet
|
||||
@override
|
||||
void onClose() {
|
||||
BackButtonInterceptor.removeByName(AppRoutes.settings);
|
||||
if (AppConfig.isApiLoggingEnabled) {
|
||||
disposeTraceLogDependencies();
|
||||
}
|
||||
super.onClose();
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,13 @@
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/style_utils.dart';
|
||||
import 'package:core/presentation/views/button/icon_button_web.dart';
|
||||
import 'package:core/presentation/views/button/multi_click_widget.dart';
|
||||
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/manage_account/presentation/email_rules/email_rules_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/export_trace_log_extension.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/language_and_region/language_and_region_view.dart';
|
||||
@@ -21,6 +23,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/profiles/prof
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
|
||||
typedef CloseSettingsViewAction = void Function();
|
||||
|
||||
@@ -84,7 +87,7 @@ class SettingsView extends GetWidget<SettingsController> {
|
||||
}
|
||||
|
||||
Widget _buildUniversalSettingAppBar(BuildContext context) {
|
||||
return Stack(
|
||||
final appBarWidget = Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
Positioned(left: 0,child: _buildCloseSettingButton(context)),
|
||||
@@ -98,10 +101,23 @@ class SettingsView extends GetWidget<SettingsController> {
|
||||
style: const TextStyle(
|
||||
fontSize: 20,
|
||||
color: AppColor.colorNameEmail,
|
||||
fontWeight: FontWeight.w700))
|
||||
)
|
||||
]
|
||||
fontWeight: FontWeight.w700,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
if (AppConfig.isApiLoggingEnabled) {
|
||||
return MultiClickWidget(
|
||||
onMultiTap: () => controller
|
||||
.manageAccountDashboardController
|
||||
.showExportTraceLogConfirmDialog(context),
|
||||
child: appBarWidget,
|
||||
);
|
||||
} else {
|
||||
return appBarWidget;
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildSettingLevel1AppBar(BuildContext context) {
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
import 'package:core/data/utils/device_manager.dart';
|
||||
import 'package:core/utils/logger/log_tracking.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/datasource/trace_log_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/trace_log_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/repository/trace_log_repository.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/repository/trace_log_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/export_trace_log_interactor.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart';
|
||||
import 'package:tmail_ui_user/main/permissions/permission_service.dart';
|
||||
|
||||
class TraceLogInteractorBindings extends InteractorsBindings {
|
||||
@override
|
||||
void bindingsDataSource() {
|
||||
Get.lazyPut<TraceLogDataSource>(() => Get.find<TraceLogDataSourceImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSourceImpl() {
|
||||
Get.lazyPut(() => LogTracking());
|
||||
Get.lazyPut(() => TraceLogDataSourceImpl(
|
||||
Get.find<LogTracking>(),
|
||||
Get.find<DeviceManager>(),
|
||||
Get.find<PermissionService>(),
|
||||
Get.find<CacheExceptionThrower>(),
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {
|
||||
Get.lazyPut(() => ExportTraceLogInteractor(Get.find<TraceLogRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
Get.lazyPut<TraceLogRepository>(() => Get.find<TraceLogRepositoryImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {
|
||||
Get.lazyPut(() => TraceLogRepositoryImpl(Get.find<TraceLogDataSource>()));
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
Get.delete<ExportTraceLogInteractor>();
|
||||
Get.delete<TraceLogRepository>();
|
||||
Get.delete<TraceLogRepositoryImpl>();
|
||||
Get.delete<TraceLogDataSource>();
|
||||
Get.delete<TraceLogDataSourceImpl>();
|
||||
Get.delete<LogTracking>();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user