Skip to content

Commit

Permalink
Remove eval from game result dialog
Browse files Browse the repository at this point in the history
Closes #1147
  • Loading branch information
veloce committed Nov 12, 2024
1 parent ff98f16 commit c75f3ed
Showing 1 changed file with 0 additions and 126 deletions.
126 changes: 0 additions & 126 deletions lib/src/view/game/game_result_dialog.dart
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
import 'dart:async';
import 'dart:math';

import 'package:collection/collection.dart';
import 'package:dartchess/dartchess.dart';
import 'package:fast_immutable_collections/fast_immutable_collections.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:lichess_mobile/src/constants.dart';
import 'package:lichess_mobile/src/model/analysis/analysis_controller.dart';
import 'package:lichess_mobile/src/model/analysis/server_analysis_service.dart';
import 'package:lichess_mobile/src/model/auth/auth_session.dart';
import 'package:lichess_mobile/src/model/common/eval.dart';
import 'package:lichess_mobile/src/model/common/id.dart';
import 'package:lichess_mobile/src/model/game/game.dart';
import 'package:lichess_mobile/src/model/game/game_controller.dart';
Expand All @@ -23,7 +18,6 @@ import 'package:lichess_mobile/src/utils/l10n_context.dart';
import 'package:lichess_mobile/src/utils/navigation.dart';
import 'package:lichess_mobile/src/view/analysis/analysis_screen.dart';
import 'package:lichess_mobile/src/widgets/buttons.dart';
import 'package:lichess_mobile/src/widgets/feedback.dart';
import 'package:lichess_mobile/src/widgets/pgn.dart';

import 'status_l10n.dart';
Expand Down Expand Up @@ -72,7 +66,6 @@ Widget _adaptiveDialog(BuildContext context, Widget content) {
class _GameEndDialogState extends ConsumerState<GameResultDialog> {
late Timer _buttonActivationTimer;
bool _activateButtons = false;
Future<void>? _pendingAnalysisRequestFuture;

@override
void initState() {
Expand All @@ -96,8 +89,6 @@ class _GameEndDialogState extends ConsumerState<GameResultDialog> {
Widget build(BuildContext context) {
final ctrlProvider = gameControllerProvider(widget.id);
final gameState = ref.watch(ctrlProvider).requireValue;
final session = ref.watch(authSessionProvider);
final currentGameAnalysis = ref.watch(currentAnalysisProvider);

final content = Column(
mainAxisSize: MainAxisSize.min,
Expand All @@ -107,21 +98,6 @@ class _GameEndDialogState extends ConsumerState<GameResultDialog> {
padding: const EdgeInsets.only(bottom: 16.0),
child: GameResult(game: gameState.game),
),
if (currentGameAnalysis == gameState.game.id)
const Padding(
padding: EdgeInsets.only(bottom: 16.0),
child: WaitingForServerAnalysis(),
),
if (gameState.game.evals != null)
Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: _AcplChart(evals: gameState.game.evals!),
),
if (gameState.game.white.analysis != null)
Padding(
padding: const EdgeInsets.only(bottom: 16.0),
child: PlayerSummary(game: gameState.game),
),
if (gameState.game.me?.offeringRematch == true)
SecondaryButton(
semanticsLabel: context.l10n.cancelRematchOffer,
Expand Down Expand Up @@ -163,49 +139,6 @@ class _GameEndDialogState extends ConsumerState<GameResultDialog> {
textAlign: TextAlign.center,
),
),
if (currentGameAnalysis != gameState.game.id &&
gameState.game.userAnalysable &&
gameState.game.evals == null &&
gameState.game.white.analysis == null)
FutureBuilder(
future: _pendingAnalysisRequestFuture,
builder: (context, snapshot) {
return SecondaryButton(
semanticsLabel: context.l10n.requestAComputerAnalysis,
onPressed: session == null
? () {
showPlatformSnackbar(
context,
context.l10n.youNeedAnAccountToDoThat,
);
}
: _activateButtons
? snapshot.connectionState == ConnectionState.waiting
? null
: () {
setState(() {
_pendingAnalysisRequestFuture = ref
.read(ctrlProvider.notifier)
.requestServerAnalysis()
.catchError((Object e) {
if (context.mounted) {
showPlatformSnackbar(
context,
e.toString(),
type: SnackBarType.error,
);
}
});
});
}
: null,
child: Text(
context.l10n.requestAComputerAnalysis,
textAlign: TextAlign.center,
),
);
},
),
if (gameState.game.userAnalysable)
SecondaryButton(
semanticsLabel: context.l10n.analysis,
Expand All @@ -230,65 +163,6 @@ class _GameEndDialogState extends ConsumerState<GameResultDialog> {
}
}

class _AcplChart extends StatelessWidget {
final IList<ExternalEval> evals;

const _AcplChart({required this.evals});

@override
Widget build(BuildContext context) {
final mainLineColor = Theme.of(context).colorScheme.secondary;
final brightness = Theme.of(context).brightness;
final white = Theme.of(context).colorScheme.surfaceContainerHighest;
final black = Theme.of(context).colorScheme.outline;
// yes it looks like below/above are inverted in fl_chart
final belowLineColor = brightness == Brightness.light ? white : black;
final aboveLineColor = brightness == Brightness.light ? black : white;
final spots = evals
.mapIndexed(
(i, e) => FlSpot(i.toDouble(), e.winningChances(Side.white)),
)
.toList(growable: false);
return AspectRatio(
aspectRatio: 2.5,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 2.0),
child: LineChart(
LineChartData(
minY: -1.0,
maxY: 1.0,
lineTouchData: const LineTouchData(enabled: false),
lineBarsData: [
LineChartBarData(
spots: spots,
isCurved: true,
color: mainLineColor.withValues(alpha: 0.3),
barWidth: 1,
aboveBarData: BarAreaData(
show: true,
color: aboveLineColor,
applyCutOffY: true,
),
belowBarData: BarAreaData(
show: true,
color: belowLineColor,
applyCutOffY: true,
),
dotData: const FlDotData(
show: false,
),
),
],
gridData: const FlGridData(show: false),
borderData: FlBorderData(show: false),
titlesData: const FlTitlesData(show: false),
),
),
),
);
}
}

class ArchivedGameResultDialog extends StatelessWidget {
const ArchivedGameResultDialog({required this.game, super.key});

Expand Down

0 comments on commit c75f3ed

Please sign in to comment.