This commit is contained in:
Horváth Gergely
2026-02-11 11:33:43 +01:00

View File

@@ -1,7 +1,6 @@
import 'dart:async';
import 'dart:io';
import 'dart:ui' as ui;
import 'package:dio/dio.dart';
import 'package:firka/helpers/api/client/kreta_client.dart';
import 'package:firka/helpers/db/models/app_settings_model.dart';
@@ -32,7 +31,6 @@ import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
import 'package:watch_connectivity/watch_connectivity.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'helpers/db/models/homework_cache_model.dart';
import 'helpers/update_notifier.dart';
import 'helpers/live_activity_service.dart';
@@ -301,7 +299,10 @@ Future<AppInitialization> initializeApp() async {
if (Platform.isIOS) {
try {
await LiveActivityService.initialize();
await LiveActivityService.initialize()
.timeout(const Duration(seconds: 8));
} on TimeoutException catch (e, st) {
logger.warning('LiveActivity init timed out: $e', e, st);
} catch (e, st) {
logger.severe('Failed to initialize LiveActivity: $e', e, st);
}
@@ -327,8 +328,12 @@ void main() async {
WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
await dotenv.load(fileName: ".env");
logger.info("Environment variables loaded");
try {
await dotenv.load(fileName: ".env");
logger.info("Environment variables loaded");
} catch (e, st) {
logger.severe("Failed to load .env: $e", e, st);
}
{
final jwtPattern =
@@ -422,9 +427,13 @@ void main() async {
})();
}
logger.finest('loading dirty words');
await loadDirtyWords();
logger.finest('loaded dirty words');
try {
logger.finest('loading dirty words');
await loadDirtyWords();
logger.finest('loaded dirty words');
} catch (e, st) {
logger.severe('Failed to load dirty words: $e', e, st);
}
// Run App Initialization
runApp(InitializationScreen());
@@ -447,7 +456,8 @@ final UpdateNotifier globalUpdate = UpdateNotifier();
class InitializationScreen extends StatelessWidget {
InitializationScreen({super.key});
final Future<AppInitialization> _init = initializeApp();
final Future<AppInitialization> _init =
initializeApp().timeout(const Duration(seconds: 20));
@override
Widget build(BuildContext context) {
@@ -460,6 +470,8 @@ class InitializationScreen extends StatelessWidget {
logger.shout("Error in InitializationScreen",
snapshot.error.toString(), snapshot.stackTrace);
FlutterNativeSplash.remove();
// Handle initialization error
return MaterialApp(
key: ValueKey('errorPage'),