mucke/lib/injection_container.dart

331 lines
8.7 KiB
Dart
Raw Normal View History

2020-12-08 20:54:41 +01:00
import 'package:audio_service/audio_service.dart';
import 'package:audiotagger/audiotagger.dart';
2020-05-27 21:54:33 +02:00
import 'package:get_it/get_it.dart';
2021-02-26 22:07:18 +01:00
import 'package:just_audio/just_audio.dart';
2020-05-27 21:54:33 +02:00
2021-02-26 22:07:18 +01:00
import 'domain/actors/audio_player_actor.dart';
import 'domain/actors/platform_integration_actor.dart';
2021-03-06 19:09:19 +01:00
import 'domain/modules/queue_manager.dart';
2021-02-26 22:07:18 +01:00
import 'domain/repositories/audio_player_repository.dart';
2021-01-09 19:55:56 +01:00
import 'domain/repositories/music_data_modifier_repository.dart';
2020-05-27 21:54:33 +02:00
import 'domain/repositories/music_data_repository.dart';
2020-12-21 11:50:46 +01:00
import 'domain/repositories/persistent_player_state_repository.dart';
2021-02-26 22:07:18 +01:00
import 'domain/repositories/platform_integration_repository.dart';
import 'domain/repositories/settings_repository.dart';
2021-03-06 19:09:19 +01:00
import 'domain/usecases/add_to_queue.dart';
2021-02-26 22:07:18 +01:00
import 'domain/usecases/handle_playback_state.dart';
2021-04-18 13:46:16 +02:00
import 'domain/usecases/inrement_like_count.dart';
2021-03-06 19:09:19 +01:00
import 'domain/usecases/move_queue_item.dart';
2021-02-26 22:07:18 +01:00
import 'domain/usecases/pause.dart';
import 'domain/usecases/play.dart';
2021-04-16 18:58:27 +02:00
import 'domain/usecases/play_album.dart';
import 'domain/usecases/play_artist.dart';
2021-03-06 19:09:19 +01:00
import 'domain/usecases/play_next.dart';
2021-02-26 22:07:18 +01:00
import 'domain/usecases/play_songs.dart';
2021-03-06 19:09:19 +01:00
import 'domain/usecases/remove_queue_index.dart';
import 'domain/usecases/seek_to_index.dart';
2021-02-26 22:07:18 +01:00
import 'domain/usecases/seek_to_next.dart';
import 'domain/usecases/seek_to_previous.dart';
import 'domain/usecases/set_current_song.dart';
import 'domain/usecases/set_loop_mode.dart';
2021-03-06 19:09:19 +01:00
import 'domain/usecases/set_shuffle_mode.dart';
2021-02-26 22:07:18 +01:00
import 'domain/usecases/shuffle_all.dart';
import 'domain/usecases/update_database.dart';
2020-05-27 21:54:33 +02:00
import 'presentation/state/audio_store.dart';
import 'presentation/state/music_data_store.dart';
import 'presentation/state/navigation_store.dart';
2021-02-26 22:07:18 +01:00
import 'system/datasources/audio_player_data_source.dart';
import 'system/datasources/audio_player_data_source_impl.dart';
2020-05-27 21:54:33 +02:00
import 'system/datasources/local_music_fetcher.dart';
2021-02-26 22:07:18 +01:00
import 'system/datasources/local_music_fetcher_impl.dart';
2020-12-30 20:09:04 +01:00
import 'system/datasources/moor_database.dart';
2020-05-27 21:54:33 +02:00
import 'system/datasources/music_data_source_contract.dart';
2021-02-26 22:07:18 +01:00
import 'system/datasources/platform_integration_data_source.dart';
import 'system/datasources/platform_integration_data_source_impl.dart';
2020-12-21 11:50:46 +01:00
import 'system/datasources/player_state_data_source.dart';
import 'system/datasources/settings_data_source.dart';
2021-02-26 22:07:18 +01:00
import 'system/repositories/audio_player_repository_impl.dart';
2021-01-09 19:55:56 +01:00
import 'system/repositories/music_data_modifier_repository_impl.dart';
2020-05-27 21:54:33 +02:00
import 'system/repositories/music_data_repository_impl.dart';
2020-12-21 11:50:46 +01:00
import 'system/repositories/persistent_player_state_repository_impl.dart';
2021-02-26 22:07:18 +01:00
import 'system/repositories/platform_integration_repository_impl.dart';
import 'system/repositories/settings_repository_impl.dart';
2020-05-27 21:54:33 +02:00
final GetIt getIt = GetIt.instance;
Future<void> setupGetIt() async {
2020-06-03 20:32:59 +02:00
print('setupGetIt');
2020-05-27 21:54:33 +02:00
// stores
getIt.registerFactory<MusicDataStore>(
() {
final musicDataStore = MusicDataStore(
2021-02-26 22:07:18 +01:00
musicDataInfoRepository: getIt(),
settingsRepository: getIt(),
2021-01-09 19:55:56 +01:00
musicDataModifierRepository: getIt(),
2021-04-18 13:46:16 +02:00
incrementLikeCount: getIt(),
2021-02-26 22:07:18 +01:00
updateDatabase: getIt(),
2020-05-27 21:54:33 +02:00
);
return musicDataStore;
},
);
getIt.registerFactory<AudioStore>(
() {
final audioStore = AudioStore(
2021-02-26 22:07:18 +01:00
audioPlayerInfoRepository: getIt(),
2021-03-06 19:09:19 +01:00
addToQueue: getIt(),
moveQueueItem: getIt(),
2021-02-26 22:07:18 +01:00
pause: getIt(),
play: getIt(),
2021-04-16 18:58:27 +02:00
playAlbum: getIt(),
playArtist: getIt(),
2021-03-06 19:09:19 +01:00
playNext: getIt(),
2021-02-26 22:07:18 +01:00
playSongs: getIt(),
2021-03-06 19:09:19 +01:00
removeQueueIndex: getIt(),
seekToIndex: getIt(),
2021-02-26 22:07:18 +01:00
seekToNext: getIt(),
seekToPrevious: getIt(),
setLoopMode: getIt(),
2021-03-06 19:09:19 +01:00
setShuffleMode: getIt(),
2021-02-26 22:07:18 +01:00
shuffleAll: getIt(),
2020-05-27 21:54:33 +02:00
);
return audioStore;
},
);
getIt.registerFactory<NavigationStore>(
() {
final navigationStore = NavigationStore();
return navigationStore;
},
);
2021-02-26 22:07:18 +01:00
// use cases
2021-03-06 19:09:19 +01:00
getIt.registerLazySingleton<AddToQueue>(
() => AddToQueue(
getIt(),
getIt(),
getIt(),
getIt(),
),
);
2021-02-26 22:07:18 +01:00
getIt.registerLazySingleton<HandlePlaybackEvent>(
() => HandlePlaybackEvent(
getIt(),
),
);
2021-04-18 13:46:16 +02:00
getIt.registerLazySingleton<IncrementLikeCount>(
() => IncrementLikeCount(
getIt(),
),
);
2021-03-06 19:09:19 +01:00
getIt.registerLazySingleton<MoveQueueItem>(
() => MoveQueueItem(
getIt(),
getIt(),
getIt(),
getIt(),
),
);
2021-02-26 22:07:18 +01:00
getIt.registerLazySingleton<Pause>(
() => Pause(
getIt(),
),
);
getIt.registerLazySingleton<Play>(
() => Play(
getIt(),
),
);
2021-04-16 18:58:27 +02:00
getIt.registerLazySingleton<PlayAlbum>(
() => PlayAlbum(
getIt(),
getIt(),
getIt(),
),
);
getIt.registerLazySingleton<PlayArtist>(
() => PlayArtist(
getIt(),
getIt(),
getIt(),
),
);
2021-03-06 19:09:19 +01:00
getIt.registerLazySingleton<PlayNext>(
() => PlayNext(
getIt(),
getIt(),
getIt(),
getIt(),
),
);
2021-02-26 22:07:18 +01:00
getIt.registerLazySingleton<PlaySongs>(
() => PlaySongs(
getIt(),
getIt(),
getIt(),
getIt(),
),
);
2021-03-06 19:09:19 +01:00
getIt.registerLazySingleton<RemoveQueueIndex>(
() => RemoveQueueIndex(
getIt(),
getIt(),
getIt(),
getIt(),
),
);
getIt.registerLazySingleton<SeekToIndex>(
() => SeekToIndex(
getIt(),
),
);
2021-02-26 22:07:18 +01:00
getIt.registerLazySingleton<SeekToNext>(
() => SeekToNext(
getIt(),
),
);
getIt.registerLazySingleton<SeekToPrevious>(
() => SeekToPrevious(
getIt(),
),
);
getIt.registerLazySingleton<SetCurrentSong>(
() => SetCurrentSong(
getIt(),
),
);
getIt.registerLazySingleton<SetLoopMode>(
() => SetLoopMode(
getIt(),
),
);
2021-03-06 19:09:19 +01:00
getIt.registerLazySingleton<SetShuffleMode>(
() => SetShuffleMode(
getIt(),
getIt(),
getIt(),
getIt(),
),
);
2021-02-26 22:07:18 +01:00
getIt.registerLazySingleton<ShuffleAll>(
() => ShuffleAll(
getIt(),
getIt(),
getIt(),
),
);
getIt.registerLazySingleton<UpdateDatabase>(
() => UpdateDatabase(
getIt(),
),
);
// modules
2021-03-06 19:09:19 +01:00
getIt.registerLazySingleton<QueueManagerModule>(
() => QueueManagerModule(
2021-02-26 22:07:18 +01:00
getIt(),
),
);
2020-05-27 21:54:33 +02:00
// repositories
2021-02-26 22:07:18 +01:00
getIt.registerLazySingleton<AudioPlayerRepository>(
() => AudioPlayerRepositoryImpl(
getIt(),
),
);
getIt.registerLazySingleton<AudioPlayerInfoRepository>(
() => getIt<AudioPlayerRepository>(),
);
2020-05-27 21:54:33 +02:00
getIt.registerLazySingleton<MusicDataRepository>(
() => MusicDataRepositoryImpl(
2020-12-30 18:28:16 +01:00
getIt(),
getIt(),
2020-05-27 21:54:33 +02:00
),
);
2021-02-26 22:07:18 +01:00
getIt.registerLazySingleton<MusicDataInfoRepository>(
() => getIt<MusicDataRepository>(),
);
2021-01-09 19:55:56 +01:00
getIt.registerLazySingleton<MusicDataModifierRepository>(
() => MusicDataModifierRepositoryImpl(
getIt(),
),
);
2021-02-26 22:07:18 +01:00
2020-12-21 11:50:46 +01:00
getIt.registerLazySingleton<PlayerStateRepository>(
2021-01-09 19:55:56 +01:00
() => PlayerStateRepositoryImpl(
getIt(),
),
);
getIt.registerLazySingleton<SettingsRepository>(
() => SettingsRepositoryImpl(
getIt(),
),
2020-12-21 11:50:46 +01:00
);
2021-02-26 22:07:18 +01:00
getIt.registerLazySingleton<PlatformIntegrationRepository>(
() => PlatformIntegrationRepositoryImpl(
getIt(),
),
);
getIt.registerLazySingleton<PlatformIntegrationInfoRepository>(
() => getIt<PlatformIntegrationRepository>(),
);
2020-05-27 21:54:33 +02:00
// data sources
2020-12-30 20:09:04 +01:00
final MoorDatabase moorDatabase = MoorDatabase();
getIt.registerLazySingleton<MusicDataSource>(() => moorDatabase.musicDataDao);
getIt.registerLazySingleton<PlayerStateDataSource>(() => moorDatabase.playerStateDao);
getIt.registerLazySingleton<SettingsDataSource>(() => moorDatabase.settingsDao);
2020-05-27 21:54:33 +02:00
getIt.registerLazySingleton<LocalMusicFetcher>(
() => LocalMusicFetcherImpl(
getIt(),
getIt(),
2020-05-27 21:54:33 +02:00
),
);
2020-12-08 20:54:41 +01:00
2021-02-26 22:07:18 +01:00
final AudioPlayerDataSource audioPlayer = AudioPlayerDataSourceImpl(
AudioPlayer(),
);
getIt.registerLazySingleton<AudioPlayerDataSource>(() => audioPlayer);
final PlatformIntegrationDataSource _platformIntegrationDataSource =
PlatformIntegrationDataSourceImpl();
getIt.registerLazySingleton<PlatformIntegrationDataSource>(
() => _platformIntegrationDataSource,
2020-12-13 12:37:08 +01:00
);
2021-02-26 22:07:18 +01:00
// external
2020-12-08 20:54:41 +01:00
final _audioHandler = await AudioService.init(
2021-02-26 22:07:18 +01:00
builder: () => _platformIntegrationDataSource as AudioHandler,
2020-12-13 12:37:08 +01:00
config: AudioServiceConfig(
androidNotificationChannelName: 'mucke',
androidEnableQueue: true,
),
);
2020-12-08 20:54:41 +01:00
getIt.registerLazySingleton<AudioHandler>(() => _audioHandler);
2020-05-27 21:54:33 +02:00
2021-02-26 22:07:18 +01:00
getIt.registerFactory<AudioPlayer>(() => AudioPlayer());
2020-12-13 12:37:08 +01:00
getIt.registerLazySingleton<Audiotagger>(() => Audiotagger());
2021-02-26 22:07:18 +01:00
// actors
getIt.registerSingleton<PlatformIntegrationActor>(
PlatformIntegrationActor(
getIt(),
getIt(),
getIt(),
2021-04-11 15:44:10 +02:00
getIt(),
getIt(),
2021-02-26 22:07:18 +01:00
),
);
getIt.registerSingleton<AudioPlayerActor>(
AudioPlayerActor(
getIt(),
getIt(),
getIt(),
2021-04-18 13:46:16 +02:00
getIt(),
2021-02-26 22:07:18 +01:00
),
);
2020-05-27 21:54:33 +02:00
}