import 'package:common/.generated/l10n/app_localizations.dart';
import 'package:common/services/msal_service.dart';
import 'package:common/utils/env_utils.dart';
import 'package:comwell_key_app/utils/firebase.dart';
import 'package:comwell_key_app/utils/locator.dart';
import 'package:comwell_key_app/services/http_client.dart';
import 'package:comwell_key_app/utils/secure_storage.dart';
import 'package:concierge/flavors.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'comwell_app.dart';
import 'package:payment_plugin/payment_plugin.dart';
void main() async {
print("step 0");
F.appFlavor = Flavor.values.firstWhere((f) => f.name == appFlavor?.toLowerCase());
await AppLocalizations.delegate.load(const Locale("en"));
print("step 1");
WidgetsFlutterBinding.ensureInitialized();
print("Current flavor: $appFlavor");
try {
switch (appFlavor?.toLowerCase()) {
case "develop":
await dotenv.load(fileName: 'env/.dev.env');
print("step 2");
case "stage":
await dotenv.load(fileName: 'env/.stage.env');
print("step 3");
case "prod":
await dotenv.load(fileName: 'env/.prod.env');
print("step 4");
}
print("Successfully loaded environment file");
await configureFirebase();
print("step 5");
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
print("step 6");
setupLocator();
await SentryFlutter.init((options) {
options.dsn = dotenv.SENTRY_DSN;
options.tracesSampleRate = 1.0;
options.profilesSampleRate = 1.0;
options.environment = appFlavor;
});
print("step 7");
await locator<ComwellPreferences>().init();
print("step 8");
await locator<MSALService>().init();
print("step 9");
await PaymentPlugin.initialize(config: PaymentConfig(dio: locator.get<ComwellHttpClient>().dio,),);
print("step 10");
// Setting System UI overlay
SystemChrome.setSystemUIOverlayStyle(
const SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarBrightness: Brightness.dark,
systemStatusBarContrastEnforced: false,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
systemNavigationBarContrastEnforced: false,
systemNavigationBarIconBrightness: Brightness.dark,
statusBarIconBrightness: Brightness.dark,
),
);
} catch (e, st) {
print("Error init app: $e");
if (!kDebugMode) Sentry.captureException(e, stackTrace: st);
rethrow;
}
// Render UI immediately; do heavy initialization after first frame to avoid ANR.
runApp(SentryWidget(child: const ComwellApp()));
}