@@ -4,12 +4,12 @@ import 'package:bb_mobile/core/utils/constants.dart';
44import 'package:bb_mobile/core/utils/logger.dart' ;
55import 'package:bb_mobile/core/widgets/app_language_picker.dart' ;
66import 'package:bb_mobile/core/widgets/buttons/button.dart' ;
7+ import 'package:bb_mobile/core/widgets/share_logs_bottom_sheet.dart' ;
78import 'package:bb_mobile/core/widgets/snackbar_utils.dart' ;
89import 'package:bb_mobile/generated/l10n/localization.dart' ;
910import 'package:flutter/material.dart' ;
1011import 'package:flutter_svg/flutter_svg.dart' ;
1112import 'package:bull_ui/bull_ui.dart' show Gap;
12- import 'package:share_plus/share_plus.dart' ;
1313import 'package:url_launcher/url_launcher.dart' ;
1414
1515class AppInitErrorScreen extends StatefulWidget {
@@ -24,25 +24,40 @@ class AppInitErrorScreen extends StatefulWidget {
2424class _AppInitErrorScreenState extends State <AppInitErrorScreen > {
2525 Language _language = Language .fromKeyboard ();
2626
27- Future <void > _shareLogs (BuildContext context) async {
27+ Future <void > _shareLogs (BuildContext context, AppLocalizations loc ) async {
2828 try {
2929 final logs = await log.readLogs ();
30+ await shareLogsAsFile (logs);
31+ } catch (e) {
32+ log.severe (
33+ message: 'Failed to share logs' ,
34+ error: e,
35+ trace: StackTrace .current,
36+ );
3037 if (! context.mounted) return ;
31- await SharePlus .instance.share (
32- ShareParams (
33- text: logs.join ('\n ' ),
34- subject: 'bull_logs.tsv' ,
35- title: 'bull_logs.tsv' ,
36- ),
38+ SnackBarUtils .showSnackBar (
39+ context,
40+ loc.errorSharingLogsMessage (e.toString ()),
3741 );
42+ }
43+ }
44+
45+ Future <void > _exportLogs (BuildContext context, AppLocalizations loc) async {
46+ try {
47+ final logs = await log.readLogs ();
48+ final saved = await exportLogsAsFile (logs);
49+ if (! context.mounted) return ;
50+ if (saved) {
51+ SnackBarUtils .showSnackBar (context, loc.logsExportedMessage);
52+ }
3853 } catch (e) {
3954 log.severe (
40- message: 'Failed to share logs' ,
55+ message: 'Failed to export logs' ,
4156 error: e,
4257 trace: StackTrace .current,
4358 );
4459 if (! context.mounted) return ;
45- SnackBarUtils .showSnackBar (context, 'Failed to share logs: $ e ' );
60+ SnackBarUtils .showSnackBar (context, loc.logsExportFailedMessage );
4661 }
4762 }
4863
@@ -128,7 +143,18 @@ class _AppInitErrorScreenState extends State<AppInitErrorScreen> {
128143 textColor: context.appColors.text,
129144 borderColor: context.appColors.border,
130145 outlined: true ,
131- onPressed: () => _shareLogs (context),
146+ onPressed: () => _shareLogs (context, loc),
147+ ),
148+ const Gap (12 ),
149+ BBButton .big (
150+ label: loc.logsShareOptionExport,
151+ iconData: Icons .file_download_outlined,
152+ iconFirst: true ,
153+ bgColor: context.appColors.surface,
154+ textColor: context.appColors.text,
155+ borderColor: context.appColors.border,
156+ outlined: true ,
157+ onPressed: () => _exportLogs (context, loc),
132158 ),
133159 const Gap (12 ),
134160 BBButton .big (
0 commit comments