Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Application] Added initials blocs for the characters per region chart
- Loading branch information
Showing
7 changed files
with
97 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
lib/application/characters_per_region/characters_per_region_bloc.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
import 'package:bloc/bloc.dart'; | ||
import 'package:freezed_annotation/freezed_annotation.dart'; | ||
import 'package:shiori/domain/enums/enums.dart'; | ||
import 'package:shiori/domain/models/models.dart'; | ||
import 'package:shiori/domain/services/genshin_service.dart'; | ||
|
||
part 'characters_per_region_bloc.freezed.dart'; | ||
part 'characters_per_region_event.dart'; | ||
part 'characters_per_region_state.dart'; | ||
|
||
class CharactersPerRegionBloc extends Bloc<CharactersPerRegionEvent, CharactersPerRegionState> { | ||
final GenshinService _genshinService; | ||
|
||
CharactersPerRegionBloc(this._genshinService) : super(const CharactersPerRegionState.loading()); | ||
|
||
@override | ||
Stream<CharactersPerRegionState> mapEventToState(CharactersPerRegionEvent event) async* { | ||
final s = event.map( | ||
init: (e) => _init(e.type), | ||
); | ||
yield s; | ||
} | ||
|
||
CharactersPerRegionState _init(RegionType type) { | ||
final characters = _genshinService.getCharactersForItemsByRegion(type); | ||
return CharactersPerRegionState.loaded(regionType: type, items: characters); | ||
} | ||
} |
8 changes: 8 additions & 0 deletions
8
lib/application/characters_per_region/characters_per_region_event.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
part of 'characters_per_region_bloc.dart'; | ||
|
||
@freezed | ||
class CharactersPerRegionEvent with _$CharactersPerRegionEvent { | ||
const factory CharactersPerRegionEvent.init({ | ||
required RegionType type, | ||
}) = _Init; | ||
} |
11 changes: 11 additions & 0 deletions
11
lib/application/characters_per_region/characters_per_region_state.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
part of 'characters_per_region_bloc.dart'; | ||
|
||
@freezed | ||
class CharactersPerRegionState with _$CharactersPerRegionState { | ||
const factory CharactersPerRegionState.loading() = _LoadingState; | ||
|
||
const factory CharactersPerRegionState.loaded({ | ||
required RegionType regionType, | ||
required List<ItemCommonWithName> items, | ||
}) = _LoadedState; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import 'dart:math'; | ||
|
||
import 'package:bloc/bloc.dart'; | ||
import 'package:freezed_annotation/freezed_annotation.dart'; | ||
import 'package:shiori/domain/models/models.dart'; | ||
import 'package:shiori/domain/services/genshin_service.dart'; | ||
|
||
part 'chart_regions_bloc.freezed.dart'; | ||
part 'chart_regions_event.dart'; | ||
part 'chart_regions_state.dart'; | ||
|
||
class ChartRegionsBloc extends Bloc<ChartRegionsEvent, ChartRegionsState> { | ||
final GenshinService _genshinService; | ||
|
||
ChartRegionsBloc(this._genshinService) : super(const ChartRegionsState.loading()); | ||
|
||
@override | ||
Stream<ChartRegionsState> mapEventToState(ChartRegionsEvent event) async* { | ||
final s = event.map( | ||
init: (_) => _init(), | ||
); | ||
|
||
yield s; | ||
} | ||
|
||
ChartRegionsState _init() { | ||
final items = _genshinService.getCharacterRegionsForCharts(); | ||
final maxCount = items.map((e) => e.quantity).reduce(max); | ||
return ChartRegionsState.loaded(maxCount: maxCount, items: items); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
part of 'chart_regions_bloc.dart'; | ||
|
||
@freezed | ||
class ChartRegionsEvent with _$ChartRegionsEvent { | ||
const factory ChartRegionsEvent.init() = _Init; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
part of 'chart_regions_bloc.dart'; | ||
|
||
@freezed | ||
class ChartRegionsState with _$ChartRegionsState { | ||
const factory ChartRegionsState.loading() = _LoadingState; | ||
|
||
const factory ChartRegionsState.loaded({ | ||
required int maxCount, | ||
required List<ChartCharacterRegionModel> items, | ||
}) = _LoadedState; | ||
} |