From f59293da8039f1052cb33d4bf989ebe7a53b5ec0 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 18 Nov 2024 09:42:24 -0300 Subject: [PATCH] WIP --- lib/main.dart | 24 ++++++++++++++++-------- lib/shared/utils/log_util.dart | 26 +++++++++++++++++++++++--- pubspec.yaml | 1 + 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 5669db47..c9a71851 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -23,6 +23,8 @@ import 'package:hub/shared/helpers/storage_helper.dart'; import 'package:hub/shared/services/localization/localization_service.dart'; import 'package:hub/shared/utils/device_util.dart'; import 'package:hub/shared/utils/dialog_util.dart'; +import 'package:hub/shared/utils/log_util.dart'; +import 'package:logging/logging.dart'; import 'package:responsive_framework/responsive_framework.dart'; import 'backend/notifications/firebase_messaging_service.dart'; @@ -37,6 +39,7 @@ void main() async { Future initializeApp() async { WidgetsFlutterBinding.ensureInitialized(); + LogUtil.setupLogging(); await _initializeTracking(); await StorageHelper().init(); @@ -182,33 +185,37 @@ class _AppState extends State with WidgetsBindingObserver { }; Future initDeepLinks() async { + final Logger logger = Logger('initDeepLinks'); try { _appLinks = AppLinks(); + logger.severe('initDeepLinks'); _linkSubscription = _appLinks.uriLinkStream.listen((uri) async { final bool isRecovered = StorageHelper().isRecovered; - await DialogUtil.error(context, 'isRecovered: $isRecovered'); + logger.severe('isRecovered: $isRecovered'); if (!isRecovered) await openAppLink(uri); }); } catch (e) { - await DialogUtil.error(context, 'Erro ao tentar abrir o link'); + logger.severe('initDeepLinks error: $e'); } } Future openAppLink(Uri uri) async { + final Logger logger = Logger('openAppLink'); + logger.severe('open app link: $uri'); final bool isRecovered = StorageHelper().isRecovered; - log('isRecovered: $isRecovered'); - await DialogUtil.warning(context, 'isRecovered: $isRecovered'); + logger.severe('isRecovered: $isRecovered'); if (isRecovered) return; StorageHelper().isRecovered = true; final String email = uri.queryParameters['email'] ?? ''; final String token = uri.queryParameters['token'] ?? ''; + logger.severe('email: $email, token: $token'); final bool isNotEmpty = email.isNotEmpty && token.isNotEmpty; if (isNotEmpty) { final BuildContext context = StorageHelper().context!; final FlutterFlowTheme theme = FlutterFlowTheme.of(context); final Widget screen = ForgotPasswordScreen(email: email, token: token); builder(context) => screen; - await DialogUtil.warning(context, 'Builder: $builder'); + logger.severe('showModalBottomSheet'); await showModalBottomSheet( context: context, builder: (context) => Padding(padding: MediaQuery.viewInsetsOf(context), child: builder(context)), @@ -219,9 +226,9 @@ class _AppState extends State with WidgetsBindingObserver { useSafeArea: true, enableDrag: true, // isDismissible: true, - ).whenComplete(() async { + ).whenComplete(() { StorageHelper().isRecovered = false; - await DialogUtil.success(context, 'isRecovered: ${StorageHelper().isRecovered}'); + logger.severe('showModalBottomSheet completed'); }); } } @@ -277,7 +284,8 @@ class _AppState extends State with WidgetsBindingObserver { const Duration(milliseconds: 1000), () => setState(() => _appStateNotifier.stopShowingSplashImage())); _setupFirebaseMessaging(); - WidgetsBinding.instance.addPersistentFrameCallback((_) async => await initDeepLinks()); + // WidgetsBinding.instance.addPersistentFrameCallback((_) async => await initDeepLinks()); + initDeepLinks(); } @override diff --git a/lib/shared/utils/log_util.dart b/lib/shared/utils/log_util.dart index 5b9e2dc2..c139c3e1 100644 --- a/lib/shared/utils/log_util.dart +++ b/lib/shared/utils/log_util.dart @@ -1,19 +1,39 @@ import 'dart:developer'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; +import 'package:flutter/foundation.dart'; import 'package:hub/backend/api_requests/api_calls.dart'; +import 'package:logging/logging.dart'; class LogUtil { static void requestAPIFailed(String url, String body, String reason, dynamic error, StackTrace stack) async { - log("URL: ${PhpGroup.getBaseUrl()}/$url"); + final fullUrl = "${PhpGroup.getBaseUrl()}/$url"; + log("URL: $fullUrl"); log("Body: $body"); - log("Motivo: $reason"); + log("Reason: $reason"); log("Error: ${error.toString()}"); log("Stack: ${stack.toString()}"); - FirebaseCrashlytics.instance.setCustomKey('URL', "${PhpGroup.getBaseUrl()}/$url"); + FirebaseCrashlytics.instance.setCustomKey('URL', fullUrl); FirebaseCrashlytics.instance.setCustomKey('Body', body); await FirebaseCrashlytics.instance.recordError(error, stack, reason: reason); } + + static void setupLogging() { + Logger.root.level = Level.ALL; + Logger.root.onRecord.listen((record) { + final logMessage = '${record.level.name}: ${record.time}: ${record.message}'; + if (kReleaseMode) { + log( + logMessage, + name: record.loggerName, + error: record.error, + stackTrace: record.stackTrace, + ); + } else { + print(logMessage); + } + }); + } } diff --git a/pubspec.yaml b/pubspec.yaml index 1c073b80..56479be6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -48,6 +48,7 @@ dependencies: flutter_svg: 2.0.10+1 font_awesome_flutter: 10.7.0 from_css_color: 2.0.0 + logging: ^1.3.0 go_router: ^14.3.0 google_fonts: 6.2.1 http: 1.2.1