chore(all): Format

This commit is contained in:
2023-04-12 16:16:58 +02:00
parent 67c1903bd1
commit 9dcc99ca36
22 changed files with 913 additions and 625 deletions

View File

@@ -30,30 +30,35 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
}
/// Internal anime state
final List<AnimeTrackingData> _animes = List<AnimeTrackingData>.empty(growable: true);
final List<MangaTrackingData> _mangas = List<MangaTrackingData>.empty(growable: true);
final List<AnimeTrackingData> _animes =
List<AnimeTrackingData>.empty(growable: true);
final List<MangaTrackingData> _mangas =
List<MangaTrackingData>.empty(growable: true);
List<AnimeTrackingData> _getFilteredAnime({MediumTrackingState? trackingState}) {
List<AnimeTrackingData> _getFilteredAnime({
MediumTrackingState? trackingState,
}) {
final filterState = trackingState ?? state.animeFilterState;
if (filterState == MediumTrackingState.all) return _animes;
return _animes
.where((anime) => anime.state == filterState)
.toList();
return _animes.where((anime) => anime.state == filterState).toList();
}
List<MangaTrackingData> _getFilteredManga({MediumTrackingState? trackingState}) {
List<MangaTrackingData> _getFilteredManga({
MediumTrackingState? trackingState,
}) {
final filterState = trackingState ?? state.mangaFilterState;
if (state.mangaFilterState == MediumTrackingState.all) return _mangas;
return _mangas
.where((manga) => manga.state == filterState)
.toList();
return _mangas.where((manga) => manga.state == filterState).toList();
}
Future<void> _onAnimeAdded(AnimeAddedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onAnimeAdded(
AnimeAddedEvent event,
Emitter<AnimeListState> emit,
) async {
// Add the anime to the database
await GetIt.I.get<DatabaseService>().addAnime(event.data);
@@ -67,7 +72,10 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
);
}
Future<void> _onMangaAdded(MangaAddedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onMangaAdded(
MangaAddedEvent event,
Emitter<AnimeListState> emit,
) async {
// Add the manga to the database
await GetIt.I.get<DatabaseService>().addManga(event.data);
@@ -80,13 +88,17 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
),
);
}
Future<void> _onAnimeIncremented(AnimeEpisodeIncrementedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onAnimeIncremented(
AnimeEpisodeIncrementedEvent event,
Emitter<AnimeListState> emit,
) async {
final index = state.animes.indexWhere((item) => item.id == event.id);
if (index == -1) return;
final anime = state.animes[index];
if (anime.episodesTotal != null && anime.episodesWatched + 1 > anime.episodesTotal!) return;
if (anime.episodesTotal != null &&
anime.episodesWatched + 1 > anime.episodesTotal!) return;
final newList = List<AnimeTrackingData>.from(state.animes);
final newAnime = anime.copyWith(
@@ -103,7 +115,10 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
await GetIt.I.get<DatabaseService>().updateAnime(newAnime);
}
Future<void> _onAnimeDecremented(AnimeEpisodeDecrementedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onAnimeDecremented(
AnimeEpisodeDecrementedEvent event,
Emitter<AnimeListState> emit,
) async {
final index = state.animes.indexWhere((item) => item.id == event.id);
if (index == -1) return;
@@ -125,14 +140,17 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
await GetIt.I.get<DatabaseService>().updateAnime(newAnime);
}
Future<void> _onAnimesLoaded(AnimesLoadedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onAnimesLoaded(
AnimesLoadedEvent event,
Emitter<AnimeListState> emit,
) async {
_animes.addAll(
await GetIt.I.get<DatabaseService>().loadAnimes(),
);
_mangas.addAll(
await GetIt.I.get<DatabaseService>().loadMangas(),
);
emit(
state.copyWith(
animes: _getFilteredAnime(),
@@ -141,7 +159,10 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
);
}
Future<void> _onAnimesFiltered(AnimeFilterChangedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onAnimesFiltered(
AnimeFilterChangedEvent event,
Emitter<AnimeListState> emit,
) async {
emit(
state.copyWith(
animeFilterState: event.filterState,
@@ -150,7 +171,10 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
);
}
Future<void> _onMangasFiltered(MangaFilterChangedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onMangasFiltered(
MangaFilterChangedEvent event,
Emitter<AnimeListState> emit,
) async {
emit(
state.copyWith(
mangaFilterState: event.filterState,
@@ -158,8 +182,11 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
),
);
}
Future<void> _onTrackingTypeChanged(AnimeTrackingTypeChanged event, Emitter<AnimeListState> emit) async {
Future<void> _onTrackingTypeChanged(
AnimeTrackingTypeChanged event,
Emitter<AnimeListState> emit,
) async {
emit(
state.copyWith(
trackingType: event.type,
@@ -168,12 +195,16 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
);
}
Future<void> _onMangaIncremented(MangaChapterIncrementedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onMangaIncremented(
MangaChapterIncrementedEvent event,
Emitter<AnimeListState> emit,
) async {
final index = state.mangas.indexWhere((item) => item.id == event.id);
assert(index != -1, 'The manga must exist');
final manga = state.mangas[index];
if (manga.chaptersTotal != null && manga.chaptersRead + 1 > manga.chaptersTotal!) return;
if (manga.chaptersTotal != null &&
manga.chaptersRead + 1 > manga.chaptersTotal!) return;
final newList = List<MangaTrackingData>.from(state.mangas);
final newManga = manga.copyWith(
@@ -185,7 +216,7 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
final cacheIndex = _mangas.indexWhere((m) => m.id == event.id);
assert(cacheIndex != -1, 'The manga must exist');
_mangas[cacheIndex] = newManga;
emit(
state.copyWith(
mangas: newList,
@@ -195,7 +226,10 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
await GetIt.I.get<DatabaseService>().updateManga(newManga);
}
Future<void> _onMangaDecremented(MangaChapterDecrementedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onMangaDecremented(
MangaChapterDecrementedEvent event,
Emitter<AnimeListState> emit,
) async {
final index = state.mangas.indexWhere((item) => item.id == event.id);
if (index == -1) return;
@@ -212,7 +246,7 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
final cacheIndex = _mangas.indexWhere((m) => m.id == event.id);
assert(cacheIndex != -1, 'The manga must exist');
_mangas[cacheIndex] = newManga;
emit(
state.copyWith(
mangas: newList,
@@ -222,7 +256,10 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
await GetIt.I.get<DatabaseService>().updateManga(newManga);
}
Future<void> _onAnimeUpdated(AnimeUpdatedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onAnimeUpdated(
AnimeUpdatedEvent event,
Emitter<AnimeListState> emit,
) async {
final index = _animes.indexWhere((anime) => anime.id == event.anime.id);
assert(index != -1, 'The anime must exist');
@@ -235,7 +272,10 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
);
}
Future<void> _onMangaUpdated(MangaUpdatedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onMangaUpdated(
MangaUpdatedEvent event,
Emitter<AnimeListState> emit,
) async {
final index = _mangas.indexWhere((manga) => manga.id == event.manga.id);
assert(index != -1, 'The manga must exist');
@@ -248,7 +288,10 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
);
}
Future<void> _onAnimeRemoved(AnimeRemovedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onAnimeRemoved(
AnimeRemovedEvent event,
Emitter<AnimeListState> emit,
) async {
emit(
state.copyWith(
animes: List.from(
@@ -265,8 +308,11 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
// Update the database
await GetIt.I.get<DatabaseService>().deleteAnime(event.id);
}
Future<void> _onMangaRemoved(MangaRemovedEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onMangaRemoved(
MangaRemovedEvent event,
Emitter<AnimeListState> emit,
) async {
emit(
state.copyWith(
mangas: List.from(
@@ -279,12 +325,15 @@ class AnimeListBloc extends Bloc<AnimeListEvent, AnimeListState> {
final cacheIndex = _animes.indexWhere((a) => a.id == event.id);
assert(cacheIndex != -1, 'The manga must exist');
_animes.removeAt(cacheIndex);
// Update the database
await GetIt.I.get<DatabaseService>().deleteManga(event.id);
}
Future<void> _onButtonVisibilityToggled(AddButtonVisibilitySetEvent event, Emitter<AnimeListState> emit) async {
Future<void> _onButtonVisibilityToggled(
AddButtonVisibilitySetEvent event,
Emitter<AnimeListState> emit,
) async {
emit(
state.copyWith(
buttonVisibility: event.state,

View File

@@ -18,7 +18,7 @@ class AnimeEpisodeDecrementedEvent extends AnimeListEvent {
class AnimeAddedEvent extends AnimeListEvent {
AnimeAddedEvent(this.data);
/// The anime to add.
final AnimeTrackingData data;
}
@@ -57,7 +57,7 @@ class AnimeRemovedEvent extends AnimeListEvent {
class MangaAddedEvent extends AnimeListEvent {
MangaAddedEvent(this.data);
/// The manga to add.
final MangaTrackingData data;
}

View File

@@ -22,7 +22,10 @@ class AnimeSearchBloc extends Bloc<AnimeSearchEvent, AnimeSearchState> {
on<ResultTappedEvent>(_onResultTapped);
}
Future<void> _onRequested(AnimeSearchRequestedEvent event, Emitter<AnimeSearchState> emit) async {
Future<void> _onRequested(
AnimeSearchRequestedEvent event,
Emitter<AnimeSearchState> emit,
) async {
emit(
state.copyWith(
searchQuery: '',
@@ -33,21 +36,27 @@ class AnimeSearchBloc extends Bloc<AnimeSearchEvent, AnimeSearchState> {
);
GetIt.I.get<NavigationBloc>().add(
PushedNamedEvent(
const NavigationDestination(animeSearchRoute),
),
);
PushedNamedEvent(
const NavigationDestination(animeSearchRoute),
),
);
}
Future<void> _onQueryChanged(SearchQueryChangedEvent event, Emitter<AnimeSearchState> emit) async {
Future<void> _onQueryChanged(
SearchQueryChangedEvent event,
Emitter<AnimeSearchState> emit,
) async {
emit(
state.copyWith(
searchQuery: event.query,
),
);
}
Future<void> _onQuerySubmitted(SearchQuerySubmittedEvent event, Emitter<AnimeSearchState> emit) async {
Future<void> _onQuerySubmitted(
SearchQuerySubmittedEvent event,
Emitter<AnimeSearchState> emit,
) async {
if (state.searchQuery.isEmpty) return;
emit(
@@ -65,13 +74,17 @@ class AnimeSearchBloc extends Bloc<AnimeSearchEvent, AnimeSearchState> {
emit(
state.copyWith(
working: false,
searchResults: result.map((Anime anime) => SearchResult(
anime.title,
anime.malId.toString(),
anime.episodes,
anime.imageUrl,
anime.synopsis ?? '',
),).toList(),
searchResults: result
.map(
(Anime anime) => SearchResult(
anime.title,
anime.malId.toString(),
anime.episodes,
anime.imageUrl,
anime.synopsis ?? '',
),
)
.toList(),
),
);
} else {
@@ -83,46 +96,53 @@ class AnimeSearchBloc extends Bloc<AnimeSearchEvent, AnimeSearchState> {
emit(
state.copyWith(
working: false,
searchResults: result.map((Manga manga) => SearchResult(
manga.title,
manga.malId.toString(),
manga.chapters,
manga.imageUrl,
manga.synopsis ?? '',
),).toList(),
searchResults: result
.map(
(Manga manga) => SearchResult(
manga.title,
manga.malId.toString(),
manga.chapters,
manga.imageUrl,
manga.synopsis ?? '',
),
)
.toList(),
),
);
}
}
Future<void> _onResultTapped(ResultTappedEvent event, Emitter<AnimeSearchState> emit) async {
Future<void> _onResultTapped(
ResultTappedEvent event,
Emitter<AnimeSearchState> emit,
) async {
GetIt.I.get<list.AnimeListBloc>().add(
state.trackingType == TrackingMediumType.anime ?
list.AnimeAddedEvent(
AnimeTrackingData(
event.result.id,
MediumTrackingState.ongoing,
event.result.title,
0,
event.result.total,
event.result.thumbnailUrl,
),
) :
list.MangaAddedEvent(
MangaTrackingData(
event.result.id,
MediumTrackingState.ongoing,
event.result.title,
0,
0,
event.result.total,
event.result.thumbnailUrl,
),
),
);
state.trackingType == TrackingMediumType.anime
? list.AnimeAddedEvent(
AnimeTrackingData(
event.result.id,
MediumTrackingState.ongoing,
event.result.title,
0,
event.result.total,
event.result.thumbnailUrl,
),
)
: list.MangaAddedEvent(
MangaTrackingData(
event.result.id,
MediumTrackingState.ongoing,
event.result.title,
0,
0,
event.result.total,
event.result.thumbnailUrl,
),
),
);
GetIt.I.get<NavigationBloc>().add(
PoppedRouteEvent(),
);
PoppedRouteEvent(),
);
}
}

View File

@@ -12,7 +12,7 @@ class AnimeSearchRequestedEvent extends AnimeSearchEvent {
/// Triggered when the search query is changed.
class SearchQueryChangedEvent extends AnimeSearchEvent {
SearchQueryChangedEvent(this.query);
/// The current value of the query
final String query;
}

View File

@@ -21,7 +21,10 @@ class DetailsBloc extends Bloc<DetailsEvent, DetailsState> {
on<ItemRemovedEvent>(_onItemRemoved);
}
Future<void> _onAnimeRequested(AnimeDetailsRequestedEvent event, Emitter<DetailsState> emit) async {
Future<void> _onAnimeRequested(
AnimeDetailsRequestedEvent event,
Emitter<DetailsState> emit,
) async {
emit(
state.copyWith(
trackingType: TrackingMediumType.anime,
@@ -30,13 +33,16 @@ class DetailsBloc extends Bloc<DetailsEvent, DetailsState> {
);
GetIt.I.get<NavigationBloc>().add(
PushedNamedEvent(
const NavigationDestination(detailsRoute),
),
);
PushedNamedEvent(
const NavigationDestination(detailsRoute),
),
);
}
Future<void> _onMangaRequested(MangaDetailsRequestedEvent event, Emitter<DetailsState> emit) async {
Future<void> _onMangaRequested(
MangaDetailsRequestedEvent event,
Emitter<DetailsState> emit,
) async {
emit(
state.copyWith(
trackingType: TrackingMediumType.manga,
@@ -45,13 +51,16 @@ class DetailsBloc extends Bloc<DetailsEvent, DetailsState> {
);
GetIt.I.get<NavigationBloc>().add(
PushedNamedEvent(
const NavigationDestination(detailsRoute),
),
);
PushedNamedEvent(
const NavigationDestination(detailsRoute),
),
);
}
Future<void> _onDetailsUpdated(DetailsUpdatedEvent event, Emitter<DetailsState> emit) async {
Future<void> _onDetailsUpdated(
DetailsUpdatedEvent event,
Emitter<DetailsState> emit,
) async {
if (state.trackingType == TrackingMediumType.anime) {
emit(
state.copyWith(
@@ -59,11 +68,13 @@ class DetailsBloc extends Bloc<DetailsEvent, DetailsState> {
),
);
await GetIt.I.get<DatabaseService>().updateAnime(event.data as AnimeTrackingData);
await GetIt.I
.get<DatabaseService>()
.updateAnime(event.data as AnimeTrackingData);
GetIt.I.get<AnimeListBloc>().add(
AnimeUpdatedEvent(event.data as AnimeTrackingData),
);
AnimeUpdatedEvent(event.data as AnimeTrackingData),
);
} else {
emit(
state.copyWith(
@@ -71,15 +82,20 @@ class DetailsBloc extends Bloc<DetailsEvent, DetailsState> {
),
);
await GetIt.I.get<DatabaseService>().updateManga(event.data as MangaTrackingData);
await GetIt.I
.get<DatabaseService>()
.updateManga(event.data as MangaTrackingData);
GetIt.I.get<AnimeListBloc>().add(
MangaUpdatedEvent(event.data as MangaTrackingData),
);
MangaUpdatedEvent(event.data as MangaTrackingData),
);
}
}
Future<void> _onItemRemoved(ItemRemovedEvent event, Emitter<DetailsState> emit) async {
Future<void> _onItemRemoved(
ItemRemovedEvent event,
Emitter<DetailsState> emit,
) async {
emit(
state.copyWith(
data: null,

View File

@@ -13,14 +13,20 @@ class NavigationBloc extends Bloc<NavigationEvent, NavigationState> {
}
final GlobalKey<NavigatorState> navigationKey;
Future<void> _onPushedNamed(PushedNamedEvent event, Emitter<NavigationState> emit) async {
Future<void> _onPushedNamed(
PushedNamedEvent event,
Emitter<NavigationState> emit,
) async {
await navigationKey.currentState!.pushNamed(
event.destination.path,
arguments: event.destination.arguments,
);
}
Future<void> _onPushedNamedAndRemoveUntil(PushedNamedAndRemoveUntilEvent event, Emitter<NavigationState> emit) async {
Future<void> _onPushedNamedAndRemoveUntil(
PushedNamedAndRemoveUntilEvent event,
Emitter<NavigationState> emit,
) async {
await navigationKey.currentState!.pushNamedAndRemoveUntil(
event.destination.path,
event.predicate,
@@ -28,14 +34,20 @@ class NavigationBloc extends Bloc<NavigationEvent, NavigationState> {
);
}
Future<void> _onPushedNamedReplaceEvent(PushedNamedReplaceEvent event, Emitter<NavigationState> emit) async {
Future<void> _onPushedNamedReplaceEvent(
PushedNamedReplaceEvent event,
Emitter<NavigationState> emit,
) async {
await navigationKey.currentState!.pushReplacementNamed(
event.destination.path,
arguments: event.destination.arguments,
);
}
Future<void> _onPoppedRoute(PoppedRouteEvent event, Emitter<NavigationState> emit) async {
Future<void> _onPoppedRoute(
PoppedRouteEvent event,
Emitter<NavigationState> emit,
) async {
navigationKey.currentState!.pop();
}

View File

@@ -2,11 +2,9 @@ part of 'navigation_bloc.dart';
class NavigationDestination {
const NavigationDestination(
this.path,
{
this.arguments,
}
);
this.path, {
this.arguments,
});
final String path;
final Object? arguments;
}