TF-3719 Add handle export log to device if need

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-05-16 20:16:11 +07:00
committed by Dat H. Pham
parent a891e07887
commit 0ca3ca170d
20 changed files with 541 additions and 6 deletions
@@ -0,0 +1,13 @@
import 'package:tmail_ui_user/features/manage_account/data/datasource/trace_log_datasource.dart';
import 'package:tmail_ui_user/features/manage_account/data/repository/trace_log_repository.dart';
class TraceLogRepositoryImpl extends TraceLogRepository {
final TraceLogDataSource _traceLogDataSource;
TraceLogRepositoryImpl(this._traceLogDataSource);
@override
Future<String> exportTraceLog() {
return _traceLogDataSource.exportTraceLog();
}
}
@@ -0,0 +1,19 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class ExportTraceLogLoading extends LoadingState {}
class ExportTraceLogSuccess extends UIState {
String savePath;
ExportTraceLogSuccess(this.savePath);
@override
List<Object?> get props => [savePath];
}
class ExportTraceLogFailure extends FeatureFailure {
ExportTraceLogFailure(dynamic exception) : super(exception: exception);
}
@@ -0,0 +1,21 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/manage_account/data/repository/trace_log_repository.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/export_trace_log_state.dart';
class ExportTraceLogInteractor {
final TraceLogRepository _traceLogRepository;
ExportTraceLogInteractor(this._traceLogRepository);
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right<Failure, Success>(ExportTraceLogLoading());
final savePath = await _traceLogRepository.exportTraceLog();
yield Right<Failure, Success>(ExportTraceLogSuccess(savePath));
} catch (exception) {
yield Left<Failure, Success>(ExportTraceLogFailure(exception));
}
}
}