diff --git a/assets/js/components/BattleDialog.jsx b/assets/js/components/BattleDialog.jsx
index 3785839..05405ca 100644
--- a/assets/js/components/BattleDialog.jsx
+++ b/assets/js/components/BattleDialog.jsx
@@ -69,9 +69,11 @@ export const BattleDialog = ({ games }) => {
const endReason = resign
? `${resign.charAt(0).toUpperCase() + resign.slice(1)} resigned`
: 26 <= maxPoints ? 'Points' : 'Abandoned';
- const shareUrl = `${window.location.origin}/battle/${game.uuid}`;
- const canContinue = !resign && 26 > maxPoints;
+ const canShare = !canContinue;
+ const bothRegistered = game.bothRegistered;
+ const canContinue = bothRegistered && !resign && 26 > maxPoints;
const playUrl = `${window.location.origin}/play/${game.uuid}`;
+ const shareUrl = `${window.location.origin}/battle/${game.uuid}`;
const duration = formatDuration(game.created, game.date);
const pointDiff = Math.abs((game.redPoints ?? 0) - (game.bluePoints ?? 0));
@@ -108,7 +110,7 @@ export const BattleDialog = ({ games }) => {
Continue
- ) : (
+ ) : canShare ? (
- )}
+ ) : null}
diff --git a/src/Dto/ProfileGameDto.php b/src/Dto/ProfileGameDto.php
index 5fe8b7d..69b5894 100644
--- a/src/Dto/ProfileGameDto.php
+++ b/src/Dto/ProfileGameDto.php
@@ -46,6 +46,7 @@ final readonly class ProfileGameDto implements JsonSerializable
public float $blueBonusPoints,
public array $redBonusStats,
public array $blueBonusStats,
+ public bool $bothRegistered,
) {
}
diff --git a/src/Dto/ProfileGameDtoFactory.php b/src/Dto/ProfileGameDtoFactory.php
index cbd3dc1..0697b34 100644
--- a/src/Dto/ProfileGameDtoFactory.php
+++ b/src/Dto/ProfileGameDtoFactory.php
@@ -61,7 +61,8 @@ final readonly class ProfileGameDtoFactory
redBonusPoints: $game->redBonusPoints ?? 0.0,
blueBonusPoints: $game->blueBonusPoints ?? 0.0,
redBonusStats: $game->redBonusStats ?? [],
- blueBonusStats: $game->blueBonusStats ?? [],
+ blueBonusStats: $game->blueBonusStats ?? [],
+ bothRegistered: $game->red !== null && $game->blue !== null,
);
}
@@ -128,6 +129,7 @@ final readonly class ProfileGameDtoFactory
blueBonusPoints: $battle->blueBonusPoints,
redBonusStats: $battle->redBonusStats,
blueBonusStats: $battle->blueBonusStats,
+ bothRegistered: !$battle->oppIsGuest,
);
}
diff --git a/src/Repository/RecentBattleRepository.php b/src/Repository/RecentBattleRepository.php
index a8f69d4..91e0553 100644
--- a/src/Repository/RecentBattleRepository.php
+++ b/src/Repository/RecentBattleRepository.php
@@ -40,9 +40,19 @@ class RecentBattleRepository extends ServiceEntityRepository
public function findRecentForUser(int $userId, int $limit = 30): array
{
- return $this->createQueryBuilder('rb')
- ->where('rb.userId = :uid')
+ $qb = $this->createQueryBuilder('rb');
+
+ return $qb
+ ->where($qb->expr()->eq('rb.userId', ':uid'))
+ ->andWhere(
+ $qb->expr()->orX(
+ $qb->expr()->eq('rb.oppIsGuest', ':false'),
+ $qb->expr()->isNotNull('rb.redPoints'),
+ $qb->expr()->isNotNull('rb.bluePoints')
+ ),
+ )
->setParameter('uid', $userId)
+ ->setParameter('false', false)
->orderBy('rb.updated', 'DESC')
->setMaxResults($limit)
->getQuery()