fix: fix errors while refreshing token on app start

This commit is contained in:
Patryk Hegenberg 2026-01-22 15:47:01 +01:00
parent b58b7ca57a
commit 361c43f3c1
9 changed files with 280 additions and 90 deletions

View file

@ -1,24 +1,88 @@
import 'dart:developer';
// import 'dart:developer';
// import 'package:flutter/material.dart';
// import 'package:flutter/services.dart';
// import 'package:flutter_riverpod/flutter_riverpod.dart';
// import 'package:flutter_secure_storage/flutter_secure_storage.dart';
// import 'package:slrpg_app/src/shared/data/remote/secure_auth_store.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();
// const secureStorage = FlutterSecureStorage(
// aOptions: AndroidOptions(encryptedSharedPreferences: true));
// final authStore = PbAuthStore();
// // final authStore = SecureAuthStore(storage: secureStorage);
// await authStore.loadFromStorage();
// runApp(
// ProviderScope(
// overrides: [
// // Datenbank Override (wie gehabt)
// appDatabaseProvider.overrideWithValue(database),
// // ApiClient Override: Wir geben den BEREITS GELADENEN Store rein
// apiClientProvider.overrideWith((ref) => ApiClient(
// authStore: authStore, // Hier injizieren!
// storage: secureStorage)),
// ],
// child: const SLRPGApp(), // Dein Root Widget (Name prüfen, falls anders)
// ),
// );
// // }
// // runApp(
// // ProviderScope(
// // overrides: [
// // appDatabaseProvider.overrideWithValue(database),
// // apiClientProvider
// // .overrideWith((ref) => ApiClient(authStore: authStore)),
// // ],
// // child: const SLRPGApp(),
// // ),
// // );
// }
// final appDatabaseProvider =
// Provider<AppDatabase>((ref) => throw UnimplementedError());
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';
import 'package:slrpg_app/src/app.dart';
import 'package:slrpg_app/src/shared/data/local/app_database.dart';
import 'package:slrpg_app/src/shared/data/remote/api_client.dart';
import 'package:slrpg_app/src/shared/data/remote/pb_auth_store.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 1. Env laden
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([
@ -28,18 +92,13 @@ void main() async {
final database = AppDatabase();
// 2. Auth Store erstellen UND laden (Warten!)
final authStore = PbAuthStore();
await authStore.loadFromStorage();
await authStore.loadFromStorage(); // Das ist der entscheidende 'await'
if (authStore.isValid && authStore.record == null) {
final tempClient = ApiClient(authStore: authStore);
try {
await tempClient.refreshAuth();
} catch (e) {
log('Initial auth refresh failed: $e');
}
}
log("Auth loaded. Valid? ${authStore.isValid}"); // Debug Log
// 3. App starten mit injiziertem Store
runApp(
ProviderScope(
overrides: [
@ -52,5 +111,6 @@ void main() async {
);
}
// Provider Definition für DB (falls noch nicht vorhanden)
final appDatabaseProvider =
Provider<AppDatabase>((ref) => throw UnimplementedError());