doc: documented leaderboard bloc

pull/57/head
RuiAlonso 4 years ago
parent 3c09e16c43
commit ccd724909c

@ -17,7 +17,13 @@ class LeaderboardRepository {
} }
} }
/// {@template leaderboard_bloc}
/// Bloc for manage events on leaderboard.
///
/// Uses a [LeaderboardRepository] to request and update players participations.
/// {@endtemplate}
class LeaderboardBloc extends Bloc<LeaderboardEvent, LeaderboardState> { class LeaderboardBloc extends Bloc<LeaderboardEvent, LeaderboardState> {
/// {@macro leaderboard_bloc}
LeaderboardBloc(this._leaderboardRepository) LeaderboardBloc(this._leaderboardRepository)
: super(const LeaderboardState()) { : super(const LeaderboardState()) {
on<Top10Fetched>(_onTop10Fetched); on<Top10Fetched>(_onTop10Fetched);
@ -26,7 +32,7 @@ class LeaderboardBloc extends Bloc<LeaderboardEvent, LeaderboardState> {
final LeaderboardRepository _leaderboardRepository; final LeaderboardRepository _leaderboardRepository;
FutureOr<void> _onTop10Fetched( Future<void> _onTop10Fetched(
Top10Fetched event, Top10Fetched event,
Emitter<LeaderboardState> emit, Emitter<LeaderboardState> emit,
) async { ) async {
@ -46,7 +52,7 @@ class LeaderboardBloc extends Bloc<LeaderboardEvent, LeaderboardState> {
} }
} }
FutureOr<void> _onLeaderboardEntryAdded( Future<void> _onLeaderboardEntryAdded(
LeaderboardEntryAdded event, LeaderboardEntryAdded event,
Emitter<LeaderboardState> emit, Emitter<LeaderboardState> emit,
) async { ) async {

@ -1,5 +1,6 @@
part of 'leaderboard_bloc.dart'; part of 'leaderboard_bloc.dart';
/// Represents the events available for [LeaderboardBloc].
abstract class LeaderboardEvent extends Equatable { abstract class LeaderboardEvent extends Equatable {
const LeaderboardEvent(); const LeaderboardEvent();
@ -7,13 +8,16 @@ abstract class LeaderboardEvent extends Equatable {
List<Object?> get props => []; List<Object?> get props => [];
} }
/// Request the top 10 from leaderboard.
class Top10Fetched extends LeaderboardEvent { class Top10Fetched extends LeaderboardEvent {
const Top10Fetched(); const Top10Fetched();
} }
/// Insert new entry at leaderboard when user ends game.
class LeaderboardEntryAdded extends LeaderboardEvent { class LeaderboardEntryAdded extends LeaderboardEvent {
const LeaderboardEntryAdded({required this.entry}); const LeaderboardEntryAdded({required this.entry});
/// Current entry to persist at leaderboard.
final LeaderboardEntry entry; final LeaderboardEntry entry;
@override @override

@ -1,8 +1,22 @@
part of 'leaderboard_bloc.dart'; part of 'leaderboard_bloc.dart';
enum LeaderboardStatus { loading, success, error } /// Defines request status
enum LeaderboardStatus {
/// While loading request.
loading,
/// Everything run ok and received response.
success,
/// There were some error on request.
error,
}
/// {@template leaderboard_state}
/// Represents the state of the leaderboard.
/// {@endtemplate}
class LeaderboardState extends Equatable { class LeaderboardState extends Equatable {
/// {@macro leaderboard_state}
const LeaderboardState({ const LeaderboardState({
this.status = LeaderboardStatus.loading, this.status = LeaderboardStatus.loading,
this.ranking = const LeaderboardRanking( this.ranking = const LeaderboardRanking(
@ -12,13 +26,20 @@ class LeaderboardState extends Equatable {
this.leaderboard = const [], this.leaderboard = const [],
}); });
/// The current [LeaderboardStatus] of the state
final LeaderboardStatus status; final LeaderboardStatus status;
/// Ranking for the user.
final LeaderboardRanking ranking; final LeaderboardRanking ranking;
/// List of users at leaderboard.
final List<LeaderboardEntry> leaderboard; final List<LeaderboardEntry> leaderboard;
@override @override
List<Object> get props => [status, ranking, leaderboard]; List<Object> get props => [status, ranking, leaderboard];
/// Method to copy [LeaderboardState] modifying only explicit params and
/// keeping others.
LeaderboardState copyWith({ LeaderboardState copyWith({
LeaderboardStatus? status, LeaderboardStatus? status,
LeaderboardRanking? ranking, LeaderboardRanking? ranking,

Loading…
Cancel
Save