This commit is contained in:
J. A. Messias 2024-11-18 09:42:24 -03:00
parent c2d54b6b3f
commit f59293da80
3 changed files with 40 additions and 11 deletions

View File

@ -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<void> initializeApp() async {
WidgetsFlutterBinding.ensureInitialized();
LogUtil.setupLogging();
await _initializeTracking();
await StorageHelper().init();
@ -182,33 +185,37 @@ class _AppState extends State<App> with WidgetsBindingObserver {
};
Future<void> 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<void> 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<App> 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<App> with WidgetsBindingObserver {
const Duration(milliseconds: 1000), () => setState(() => _appStateNotifier.stopShowingSplashImage()));
_setupFirebaseMessaging();
WidgetsBinding.instance.addPersistentFrameCallback((_) async => await initDeepLinks());
// WidgetsBinding.instance.addPersistentFrameCallback((_) async => await initDeepLinks());
initDeepLinks();
}
@override

View File

@ -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);
}
});
}
}

View File

@ -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