Skip to content

Commit f34c092

Browse files
committed
Merge branch 'broadcast-feature' of https://github.com/julien4215/mobile into julien4215-broadcast-feature
2 parents 36793b1 + 1db183e commit f34c092

29 files changed

Lines changed: 3746 additions & 360 deletions

lib/src/model/broadcast/broadcast.dart

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ typedef BroadcastsList = ({
1212
int? nextPage,
1313
});
1414

15+
enum BroadcastResult { whiteWins, blackWins, draw, ongoing, noResultPgnTag }
16+
1517
@freezed
1618
class Broadcast with _$Broadcast {
1719
const Broadcast._();
1820

1921
const factory Broadcast({
20-
required BroadcastTournament tour,
22+
required BroadcastTournamentData tour,
2123
required BroadcastRound round,
2224
required String? group,
2325

@@ -32,9 +34,42 @@ class Broadcast with _$Broadcast {
3234
String get title => group ?? tour.name;
3335
}
3436

35-
typedef BroadcastTournament = ({
37+
@freezed
38+
class BroadcastTournament with _$BroadcastTournament {
39+
const factory BroadcastTournament({
40+
required BroadcastTournamentData data,
41+
required IList<BroadcastRound> rounds,
42+
required BroadcastRoundId defaultRoundId,
43+
required IList<BroadcastTournamentGroup>? group,
44+
}) = _BroadcastTournament;
45+
}
46+
47+
@freezed
48+
class BroadcastTournamentData with _$BroadcastTournamentData {
49+
const factory BroadcastTournamentData({
50+
required BroadcastTournamentId id,
51+
required String name,
52+
required String? imageUrl,
53+
required String? description,
54+
required BroadcastTournamentInformation information,
55+
}) = _BroadcastTournamentData;
56+
}
57+
58+
typedef BroadcastTournamentInformation = ({
59+
String? format,
60+
String? timeControl,
61+
String? players,
62+
BroadcastTournamentDates? dates,
63+
});
64+
65+
typedef BroadcastTournamentDates = ({
66+
DateTime startsAt,
67+
DateTime? endsAt,
68+
});
69+
70+
typedef BroadcastTournamentGroup = ({
71+
BroadcastTournamentId id,
3672
String name,
37-
String? imageUrl,
3873
});
3974

4075
@freezed
@@ -45,25 +80,31 @@ class BroadcastRound with _$BroadcastRound {
4580
required BroadcastRoundId id,
4681
required String name,
4782
required RoundStatus status,
48-
required DateTime startsAt,
83+
required DateTime? startsAt,
4984
}) = _BroadcastRound;
5085
}
5186

52-
typedef BroadcastRoundGames = IMap<BroadcastGameId, BroadcastGameSnapshot>;
87+
typedef BroadcastRoundGames = IMap<BroadcastGameId, BroadcastGame>;
5388

5489
@freezed
55-
class BroadcastGameSnapshot with _$BroadcastGameSnapshot {
56-
const BroadcastGameSnapshot._();
90+
class BroadcastGame with _$BroadcastGame {
91+
const BroadcastGame._();
5792

58-
const factory BroadcastGameSnapshot({
93+
const factory BroadcastGame({
94+
required BroadcastGameId id,
5995
required IMap<Side, BroadcastPlayer> players,
6096
required String fen,
6197
required Move? lastMove,
62-
required String status,
63-
64-
/// The amount of time that the player whose turn it is has been thinking since his last move
65-
required Duration? thinkTime,
66-
}) = _BroadcastGameSnapshot;
98+
required BroadcastResult status,
99+
required DateTime updatedClockAt,
100+
}) = _BroadcastGame;
101+
102+
bool get isOngoing => status == BroadcastResult.ongoing;
103+
bool get isOver =>
104+
status == BroadcastResult.draw ||
105+
status == BroadcastResult.whiteWins ||
106+
status == BroadcastResult.blackWins;
107+
Side get sideToMove => Setup.parseFen(fen).turn;
67108
}
68109

69110
@freezed

0 commit comments

Comments
 (0)