import 'package:flutter/widgets.dart';

import 'app.dart';
import 'data/species_repository.dart';
import 'data/variety_repository.dart';
import 'di/injector.dart';
import 'i18n/strings.g.dart';
import 'services/auto_backup_service.dart';
import 'services/coarse_location.dart';
import 'services/message_store.dart';
import 'services/offer_outbox.dart';
import 'services/onboarding_store.dart';
import 'services/social_service.dart';
import 'services/social_settings.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  LocaleSettings.useDeviceLocaleSync();
  await configureDependencies();
  final onboarding = getIt<OnboardingStore>();
  runApp(
    TranslationProvider(
      child: TaneApp(
        repository: getIt<VarietyRepository>(),
        species: getIt<SpeciesRepository>(),
        onboarding: onboarding,
        social: getIt<SocialService>(),
        socialSettings: getIt<SocialSettings>(),
        location: const GeolocatorCoarseLocation(),
        outbox: getIt<OfferOutbox>(),
        messageStore: getIt<MessageStore>(),
        showIntro: !await onboarding.introSeen(),
        autoBackup: getIt.isRegistered<AutoBackupService>()
            ? getIt<AutoBackupService>()
            : null,
      ),
    ),
  );
}
