WIP
This commit is contained in:
parent
c2d54b6b3f
commit
f59293da80
|
@ -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/services/localization/localization_service.dart';
|
||||||
import 'package:hub/shared/utils/device_util.dart';
|
import 'package:hub/shared/utils/device_util.dart';
|
||||||
import 'package:hub/shared/utils/dialog_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 'package:responsive_framework/responsive_framework.dart';
|
||||||
|
|
||||||
import 'backend/notifications/firebase_messaging_service.dart';
|
import 'backend/notifications/firebase_messaging_service.dart';
|
||||||
|
@ -37,6 +39,7 @@ void main() async {
|
||||||
|
|
||||||
Future<void> initializeApp() async {
|
Future<void> initializeApp() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
LogUtil.setupLogging();
|
||||||
await _initializeTracking();
|
await _initializeTracking();
|
||||||
await StorageHelper().init();
|
await StorageHelper().init();
|
||||||
|
|
||||||
|
@ -182,33 +185,37 @@ class _AppState extends State<App> with WidgetsBindingObserver {
|
||||||
};
|
};
|
||||||
|
|
||||||
Future<void> initDeepLinks() async {
|
Future<void> initDeepLinks() async {
|
||||||
|
final Logger logger = Logger('initDeepLinks');
|
||||||
try {
|
try {
|
||||||
_appLinks = AppLinks();
|
_appLinks = AppLinks();
|
||||||
|
logger.severe('initDeepLinks');
|
||||||
_linkSubscription = _appLinks.uriLinkStream.listen((uri) async {
|
_linkSubscription = _appLinks.uriLinkStream.listen((uri) async {
|
||||||
final bool isRecovered = StorageHelper().isRecovered;
|
final bool isRecovered = StorageHelper().isRecovered;
|
||||||
await DialogUtil.error(context, 'isRecovered: $isRecovered');
|
logger.severe('isRecovered: $isRecovered');
|
||||||
if (!isRecovered) await openAppLink(uri);
|
if (!isRecovered) await openAppLink(uri);
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
await DialogUtil.error(context, 'Erro ao tentar abrir o link');
|
logger.severe('initDeepLinks error: $e');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> openAppLink(Uri uri) async {
|
Future<void> openAppLink(Uri uri) async {
|
||||||
|
final Logger logger = Logger('openAppLink');
|
||||||
|
logger.severe('open app link: $uri');
|
||||||
final bool isRecovered = StorageHelper().isRecovered;
|
final bool isRecovered = StorageHelper().isRecovered;
|
||||||
log('isRecovered: $isRecovered');
|
logger.severe('isRecovered: $isRecovered');
|
||||||
await DialogUtil.warning(context, 'isRecovered: $isRecovered');
|
|
||||||
if (isRecovered) return;
|
if (isRecovered) return;
|
||||||
StorageHelper().isRecovered = true;
|
StorageHelper().isRecovered = true;
|
||||||
final String email = uri.queryParameters['email'] ?? '';
|
final String email = uri.queryParameters['email'] ?? '';
|
||||||
final String token = uri.queryParameters['token'] ?? '';
|
final String token = uri.queryParameters['token'] ?? '';
|
||||||
|
logger.severe('email: $email, token: $token');
|
||||||
final bool isNotEmpty = email.isNotEmpty && token.isNotEmpty;
|
final bool isNotEmpty = email.isNotEmpty && token.isNotEmpty;
|
||||||
if (isNotEmpty) {
|
if (isNotEmpty) {
|
||||||
final BuildContext context = StorageHelper().context!;
|
final BuildContext context = StorageHelper().context!;
|
||||||
final FlutterFlowTheme theme = FlutterFlowTheme.of(context);
|
final FlutterFlowTheme theme = FlutterFlowTheme.of(context);
|
||||||
final Widget screen = ForgotPasswordScreen(email: email, token: token);
|
final Widget screen = ForgotPasswordScreen(email: email, token: token);
|
||||||
builder(context) => screen;
|
builder(context) => screen;
|
||||||
await DialogUtil.warning(context, 'Builder: $builder');
|
logger.severe('showModalBottomSheet');
|
||||||
await showModalBottomSheet(
|
await showModalBottomSheet(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) => Padding(padding: MediaQuery.viewInsetsOf(context), child: builder(context)),
|
builder: (context) => Padding(padding: MediaQuery.viewInsetsOf(context), child: builder(context)),
|
||||||
|
@ -219,9 +226,9 @@ class _AppState extends State<App> with WidgetsBindingObserver {
|
||||||
useSafeArea: true,
|
useSafeArea: true,
|
||||||
enableDrag: true,
|
enableDrag: true,
|
||||||
// isDismissible: true,
|
// isDismissible: true,
|
||||||
).whenComplete(() async {
|
).whenComplete(() {
|
||||||
StorageHelper().isRecovered = false;
|
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()));
|
const Duration(milliseconds: 1000), () => setState(() => _appStateNotifier.stopShowingSplashImage()));
|
||||||
|
|
||||||
_setupFirebaseMessaging();
|
_setupFirebaseMessaging();
|
||||||
WidgetsBinding.instance.addPersistentFrameCallback((_) async => await initDeepLinks());
|
// WidgetsBinding.instance.addPersistentFrameCallback((_) async => await initDeepLinks());
|
||||||
|
initDeepLinks();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -1,19 +1,39 @@
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:hub/backend/api_requests/api_calls.dart';
|
import 'package:hub/backend/api_requests/api_calls.dart';
|
||||||
|
import 'package:logging/logging.dart';
|
||||||
|
|
||||||
class LogUtil {
|
class LogUtil {
|
||||||
static void requestAPIFailed(String url, String body, String reason, dynamic error, StackTrace stack) async {
|
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("Body: $body");
|
||||||
log("Motivo: $reason");
|
log("Reason: $reason");
|
||||||
log("Error: ${error.toString()}");
|
log("Error: ${error.toString()}");
|
||||||
log("Stack: ${stack.toString()}");
|
log("Stack: ${stack.toString()}");
|
||||||
|
|
||||||
FirebaseCrashlytics.instance.setCustomKey('URL', "${PhpGroup.getBaseUrl()}/$url");
|
FirebaseCrashlytics.instance.setCustomKey('URL', fullUrl);
|
||||||
FirebaseCrashlytics.instance.setCustomKey('Body', body);
|
FirebaseCrashlytics.instance.setCustomKey('Body', body);
|
||||||
|
|
||||||
await FirebaseCrashlytics.instance.recordError(error, stack, reason: reason);
|
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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@ dependencies:
|
||||||
flutter_svg: 2.0.10+1
|
flutter_svg: 2.0.10+1
|
||||||
font_awesome_flutter: 10.7.0
|
font_awesome_flutter: 10.7.0
|
||||||
from_css_color: 2.0.0
|
from_css_color: 2.0.0
|
||||||
|
logging: ^1.3.0
|
||||||
go_router: ^14.3.0
|
go_router: ^14.3.0
|
||||||
google_fonts: 6.2.1
|
google_fonts: 6.2.1
|
||||||
http: 1.2.1
|
http: 1.2.1
|
||||||
|
|
Loading…
Reference in New Issue