1- import 'dart:convert' ;
21import 'dart:io' ;
3- import 'dart:math' ;
4- import 'dart:typed_data' ;
2+
53import 'package:bb_mobile/core/exchange/domain/entity/support_chat_message.dart' ;
64import 'package:bb_mobile/core/exchange/domain/entity/support_chat_message_attachment.dart' ;
5+ import 'package:bb_mobile/core/exchange/domain/usecases/create_log_attachment_usecase.dart' ;
76import 'package:bb_mobile/core/exchange/domain/usecases/get_exchange_user_summary_usecase.dart' ;
8- import 'package:bb_mobile/core/exchange/domain/usecases/get_support_chat_messages_usecase.dart' ;
97import 'package:bb_mobile/core/exchange/domain/usecases/get_support_chat_message_attachment_usecase.dart' ;
8+ import 'package:bb_mobile/core/exchange/domain/usecases/get_support_chat_messages_usecase.dart' ;
109import 'package:bb_mobile/core/exchange/domain/usecases/send_support_chat_message_usecase.dart' ;
11- import 'package:bb_mobile/core/utils/logger.dart' ;
1210import 'package:bb_mobile/features/exchange_support_chat/presentation/exchange_support_chat_state.dart' ;
1311import 'package:flutter_bloc/flutter_bloc.dart' ;
1412import 'package:image_picker/image_picker.dart' ;
15- import 'package:intl/intl.dart' ;
1613import 'package:path_provider/path_provider.dart' ;
1714import 'package:permission_handler/permission_handler.dart' ;
1815import 'package:share_plus/share_plus.dart' ;
@@ -23,16 +20,19 @@ class ExchangeSupportChatCubit extends Cubit<ExchangeSupportChatState> {
2320 required SendSupportChatMessageUsecase sendMessageUsecase,
2421 required GetSupportChatMessageAttachmentUsecase getAttachmentUsecase,
2522 required GetExchangeUserSummaryUsecase getUserSummaryUsecase,
23+ required CreateLogAttachmentUsecase createLogAttachmentUsecase,
2624 }) : _getMessagesUsecase = getMessagesUsecase,
2725 _sendMessageUsecase = sendMessageUsecase,
2826 _getAttachmentUsecase = getAttachmentUsecase,
2927 _getUserSummaryUsecase = getUserSummaryUsecase,
28+ _createLogAttachmentUsecase = createLogAttachmentUsecase,
3029 super (const ExchangeSupportChatState ());
3130
3231 final GetSupportChatMessagesUsecase _getMessagesUsecase;
3332 final SendSupportChatMessageUsecase _sendMessageUsecase;
3433 final GetSupportChatMessageAttachmentUsecase _getAttachmentUsecase;
3534 final GetExchangeUserSummaryUsecase _getUserSummaryUsecase;
35+ final CreateLogAttachmentUsecase _createLogAttachmentUsecase;
3636
3737 bool _limitFetchingOlderMessages = false ;
3838
@@ -285,54 +285,7 @@ class ExchangeSupportChatCubit extends Cubit<ExchangeSupportChatState> {
285285 try {
286286 emit (state.copyWith (errorPermissionDenied: '' ));
287287
288- // Read all available logs
289- List <String > logs;
290- try {
291- logs = await log.readLogs ();
292- } catch (e) {
293- // If logs file doesn't exist or can't be read, create a message explaining this
294- logs = [
295- 'timestamp\t level\t message\t error\t trace' ,
296- '${DateTime .now ().toIso8601String ()}\t INFO\t No logs file found or logs could not be read: $e \t\t ' ,
297- ];
298- }
299-
300- if (logs.isEmpty) {
301- // Create a minimal log entry if no logs exist
302- logs = [
303- 'timestamp\t level\t message\t error\t trace' ,
304- '${DateTime .now ().toIso8601String ()}\t INFO\t No logs have been recorded yet\t\t ' ,
305- ];
306- }
307-
308- // Create log file content and encode as UTF-8
309- final logContent = logs.join ('\n ' );
310- final bytes = Uint8List .fromList (utf8.encode (logContent));
311-
312- // Generate filename: timestamp.BullLog.random8alphanumeric
313- final random = Random ();
314- final timestamp = DateFormat ('yyyyMMdd_HHmmss' ).format (DateTime .now ());
315-
316- // Generate random 8-character alphanumeric string
317- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' ;
318- final randomAlphanumeric = String .fromCharCodes (
319- Iterable .generate (
320- 8 ,
321- (_) => chars.codeUnitAt (random.nextInt (chars.length)),
322- ),
323- );
324-
325- final fileName = '$timestamp .BullLog.$randomAlphanumeric .txt' ;
326-
327- // Create attachment with text/plain MIME type (more likely to be accepted by server)
328- final attachment = SupportChatMessageAttachment (
329- attachmentId: 'temp_logs_${DateTime .now ().millisecondsSinceEpoch }' ,
330- fileName: fileName,
331- fileType: 'text/plain' ,
332- fileSize: bytes.length,
333- fileData: bytes,
334- createdAt: DateTime .now (),
335- );
288+ final attachment = await _createLogAttachmentUsecase.execute ();
336289
337290 emit (
338291 state.copyWith (
0 commit comments