diff --git a/lib/di_initialization.dart b/lib/di_initialization.dart new file mode 100644 index 0000000..3a0aee1 --- /dev/null +++ b/lib/di_initialization.dart @@ -0,0 +1,73 @@ +import 'package:logging/logging.dart'; +import 'package:result_monad/result_monad.dart'; + +import 'data/interfaces/connections_repo_intf.dart'; +import 'data/interfaces/groups_repo.intf.dart'; +import 'data/interfaces/hashtag_repo_intf.dart'; +import 'data/memory/memory_groups_repo.dart'; +import 'data/objectbox/objectbox_cache.dart'; +import 'data/objectbox/objectbox_connections_repo.dart'; +import 'data/objectbox/objectbox_hashtag_repo.dart'; +import 'globals.dart'; +import 'models/TimelineIdentifiers.dart'; +import 'services/auth_service.dart'; +import 'services/connections_manager.dart'; +import 'services/entry_manager_service.dart'; +import 'services/gallery_service.dart'; +import 'services/hashtag_service.dart'; +import 'services/media_upload_attachment_helper.dart'; +import 'services/notifications_manager.dart'; +import 'services/secrets_service.dart'; +import 'services/setting_service.dart'; +import 'services/timeline_manager.dart'; + +final _logger = Logger('DI_Init'); + +Future dependencyInjectionInitialization() async { + final authService = AuthService(); + final secretsService = SecretsService(); + final entryManagerService = EntryManagerService(); + final timelineManager = TimelineManager(); + final galleryService = GalleryService(); + + getIt.registerSingletonAsync(() async { + final service = SettingsService(); + await service.initialize(); + return service; + }); + + final objectBoxCache = await ObjectBoxCache.create(); + getIt.registerSingleton(objectBoxCache); + getIt.registerSingleton(ObjectBoxConnectionsRepo()); + getIt.registerSingleton(ObjectBoxHashtagRepo()); + getIt.registerSingleton(MemoryGroupsRepo()); + getIt.registerLazySingleton(() => ConnectionsManager()); + getIt.registerLazySingleton(() => HashtagService()); + getIt.registerSingleton(galleryService); + getIt.registerSingleton(entryManagerService); + getIt.registerSingleton(secretsService); + getIt.registerSingleton(authService); + getIt.registerSingleton(timelineManager); + getIt.registerLazySingleton( + () => MediaUploadAttachmentHelper()); + getIt.registerLazySingleton( + () => NotificationsManager()); + galleryService.getGalleries(); + + await secretsService.initialize().andThenSuccessAsync((credentials) async { + if (credentials.isEmpty) { + return; + } + + final wasLoggedIn = await authService.getStoredLoginState(); + if (wasLoggedIn) { + final result = await authService.signIn(credentials); + if (result.isSuccess) { + timelineManager.updateTimeline( + TimelineIdentifiers.home(), TimelineRefreshType.loadOlder); + } + } else { + _logger.severe('Was not logged in'); + } + }); +} diff --git a/lib/main.dart b/lib/main.dart index f9e016f..efa432e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,32 +3,20 @@ import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:logging/logging.dart'; import 'package:multi_trigger_autocomplete/multi_trigger_autocomplete.dart'; import 'package:provider/provider.dart'; -import 'package:result_monad/result_monad.dart'; -import 'data/interfaces/connections_repo_intf.dart'; -import 'data/interfaces/groups_repo.intf.dart'; -import 'data/interfaces/hashtag_repo_intf.dart'; -import 'data/memory/memory_groups_repo.dart'; -import 'data/objectbox/objectbox_cache.dart'; -import 'data/objectbox/objectbox_connections_repo.dart'; -import 'data/objectbox/objectbox_hashtag_repo.dart'; +import 'di_initialization.dart'; import 'globals.dart'; -import 'models/TimelineIdentifiers.dart'; import 'routes.dart'; import 'services/auth_service.dart'; import 'services/connections_manager.dart'; import 'services/entry_manager_service.dart'; import 'services/gallery_service.dart'; import 'services/hashtag_service.dart'; -import 'services/media_upload_attachment_helper.dart'; import 'services/notifications_manager.dart'; -import 'services/secrets_service.dart'; import 'services/setting_service.dart'; import 'services/timeline_manager.dart'; import 'utils/app_scrolling_behavior.dart'; -final _logger = Logger('Main'); - void main() async { WidgetsFlutterBinding.ensureInitialized(); await dotenv.load(fileName: '.env'); @@ -41,52 +29,7 @@ void main() async { print(msg); }); - final authService = AuthService(); - final secretsService = SecretsService(); - final entryManagerService = EntryManagerService(); - final timelineManager = TimelineManager(); - final galleryService = GalleryService(); - - getIt.registerSingletonAsync(() async { - final service = SettingsService(); - await service.initialize(); - return service; - }); - - final objectBoxCache = await ObjectBoxCache.create(); - getIt.registerSingleton(objectBoxCache); - getIt.registerSingleton(ObjectBoxConnectionsRepo()); - getIt.registerSingleton(ObjectBoxHashtagRepo()); - getIt.registerSingleton(MemoryGroupsRepo()); - getIt.registerLazySingleton(() => ConnectionsManager()); - getIt.registerLazySingleton(() => HashtagService()); - getIt.registerSingleton(galleryService); - getIt.registerSingleton(entryManagerService); - getIt.registerSingleton(secretsService); - getIt.registerSingleton(authService); - getIt.registerSingleton(timelineManager); - getIt.registerLazySingleton( - () => MediaUploadAttachmentHelper()); - getIt.registerLazySingleton( - () => NotificationsManager()); - galleryService.getGalleries(); - - await secretsService.initialize().andThenSuccessAsync((credentials) async { - if (credentials.isEmpty) { - return; - } - - final wasLoggedIn = await authService.getStoredLoginState(); - if (wasLoggedIn) { - final result = await authService.signIn(credentials); - if (result.isSuccess) { - timelineManager.updateTimeline( - TimelineIdentifiers.home(), TimelineRefreshType.loadOlder); - } - } else { - _logger.severe('Was not logged in'); - } - }); + dependencyInjectionInitialization(); runApp(const App()); }