gecko/lib/main.dart

142 lines
4.8 KiB
Dart

import 'package:dubp/dubp.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/models/cesiumPlus.dart';
import 'package:gecko/models/changePin.dart';
import 'package:gecko/models/generateWallets.dart';
import 'package:gecko/models/history.dart';
import 'package:gecko/models/home.dart';
import 'package:gecko/models/myWallets.dart';
import 'package:gecko/models/walletOptions.dart';
import 'package:gecko/screens/home.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:provider/provider.dart';
import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:catcher/catcher.dart';
// import 'dart:io';
// import 'package:flutter_logs/flutter_logs.dart';
// import 'package:downloads_path_provider/downloads_path_provider.dart';
final bool enableSentry = true;
Future<void> main() async {
try {
WidgetsFlutterBinding.ensureInitialized();
// var downloadsDirectory = DownloadsPathProvider.downloadsDirectory;
// File logFile = File(downloadsDirectory.toString() + '/gecko.log');
// await FlutterLogs.initLogs(
// logLevelsEnabled: [
// LogLevel.INFO,
// LogLevel.WARNING,
// LogLevel.ERROR,
// LogLevel.SEVERE
// ],
// timeStampFormat: TimeStampFormat.TIME_FORMAT_READABLE,
// directoryStructure: DirectoryStructure.FOR_EVENT,
// logTypesEnabled: ["Locations", "APIs"],
// logFileExtension: LogFileExtension.LOG,
// logsWriteDirectoryName: downloadsDirectory.toString(),
// logsExportDirectoryName: downloadsDirectory.toString());
HomeProvider _homeProvider = HomeProvider();
await _homeProvider.getAppPath();
await _homeProvider.createDefaultAvatar();
appVersion = await _homeProvider.getAppVersion();
prefs = await SharedPreferences.getInstance();
final HiveStore _store =
await HiveStore.open(path: '${appPath.path}/gqlCache');
// Get a valid GVA endpoint
endPointGVA = await _homeProvider.getValidEndpoint();
if (kReleaseMode && enableSentry) {
CatcherOptions debugOptions = CatcherOptions(DialogReportMode(), [
SentryHandler(SentryClient(SentryOptions(
dsn:
"https://c09587b46eaa42e8b9fda28d838ed180@o496840.ingest.sentry.io/5572110")))
]);
// CatcherOptions releaseOptions = CatcherOptions(NotificationReportMode(), [
// EmailManualHandler(["poka@p2p.legal"])
// ]);
Catcher(
rootWidget: Gecko(endPointGVA, _store), debugConfig: debugOptions);
// await SentryFlutter.init(
// (options) {
// options.dsn =
// 'https://c09587b46eaa42e8b9fda28d838ed180@o496840.ingest.sentry.io/5572110';
// },
// appRunner: () => runApp(Gecko(endPointGVA, _store)),
// );
} else {
print('Debug mode enabled: No sentry alerte');
runApp(Gecko(endPointGVA, _store));
}
} catch (e, stack) {
print(e);
if (kReleaseMode) {
await Sentry.captureException(
e,
stackTrace: stack,
);
}
}
}
class Gecko extends StatelessWidget {
Gecko(this.randomEndpoint, this._store);
final String randomEndpoint;
final HiveStore _store;
@override
Widget build(BuildContext context) {
final _httpLink = HttpLink(
randomEndpoint,
);
final _client = ValueNotifier(
GraphQLClient(
cache: GraphQLCache(store: _store),
link: _httpLink,
),
);
DubpRust.setup();
return MultiProvider(
providers: [
// Provider(create: (context) => HistoryProvider()),
ChangeNotifierProvider(create: (_) => HomeProvider()),
ChangeNotifierProvider(create: (_) => HistoryProvider('')),
ChangeNotifierProvider(create: (_) => MyWalletsProvider()),
ChangeNotifierProvider(create: (_) => GenerateWalletsProvider()),
ChangeNotifierProvider(create: (_) => WalletOptionsProvider()),
ChangeNotifierProvider(create: (_) => ChangePinProvider()),
ChangeNotifierProvider(create: (_) => CesiumPlusProvider())
],
child: GraphQLProvider(
client: _client,
child: MaterialApp(
navigatorKey: Catcher.navigatorKey,
title: 'Ğecko',
theme: ThemeData(
primaryColor: Color(0xffFFD58D),
accentColor: Colors.grey[850],
textTheme: TextTheme(
bodyText1: TextStyle(),
bodyText2: TextStyle(),
).apply(
bodyColor: Color(0xff855F2D),
),
),
home: HomeScreen(),
)));
}
}