slrpg-app/lib/main.dart

56 lines
1.5 KiB
Dart

import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'src/app.dart';
import 'src/shared/data/local/app_database.dart';
import 'src/shared/data/remote/api_client.dart';
import 'src/shared/data/remote/pb_auth_store.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
try {
await dotenv.load(fileName: '.env');
log('Environment loaded: ${dotenv.env['ENVIRONMENT']}');
log('API URL: ${dotenv.env['API_BASE_URL']}');
} catch (e) {
log('Could not load .env file: $e');
log('Using default production values');
}
await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
final database = AppDatabase();
final authStore = PbAuthStore();
await authStore.loadFromStorage();
if (authStore.isValid && authStore.record == null) {
final tempClient = ApiClient(authStore: authStore);
try {
await tempClient.refreshAuth();
} catch (e) {
log('Initial auth refresh failed: $e');
}
}
runApp(
ProviderScope(
overrides: [
appDatabaseProvider.overrideWithValue(database),
apiClientProvider
.overrideWith((ref) => ApiClient(authStore: authStore)),
],
child: const SLRPGApp(),
),
);
}
final appDatabaseProvider =
Provider<AppDatabase>((ref) => throw UnimplementedError());