Compare commits
2 Commits
v2026.2.7-
...
v2026.2.7-
| Author | SHA1 | Date | |
|---|---|---|---|
| 1d8efa4e61 | |||
| 69fce52bed |
33
CHANGELOG.md
33
CHANGELOG.md
@@ -1,6 +1,39 @@
|
||||
# Changelog
|
||||
|
||||
|
||||
## v2026.2.7-0 (2026-04-21)
|
||||
|
||||
### Changes
|
||||
|
||||
* Small changes on docs - and improve text on homepage #8. [Lang]
|
||||
|
||||
* Massive refactor on front-end for unification and readiness #8. [Lang]
|
||||
|
||||
* Update all doc blocks on back-end #8. [Lang]
|
||||
|
||||
* Small refactors on back-end #8. [Lang]
|
||||
|
||||
* Add RecentBattle entity that is a Materialized View to speed up the view - and further refactor on ProfileController #8. [Lang]
|
||||
|
||||
* Create the UserStats entity what is a Materialized View to store Profile stats for every user - & massive ProfileController refactor #8. [Lang]
|
||||
|
||||
* Refactor the SecurityController #7. [Lang]
|
||||
|
||||
* Refactor the code - there was unnecessary codes and wrongly formatted or designed code that are related to Repositories #7. [Lang]
|
||||
|
||||
* Upgrade the doctrine related back-end pkgs to the latest available version #7. [Lang]
|
||||
|
||||
* Add filter to the Profile page's recent plays and an infite list too #7. [Lang]
|
||||
|
||||
* Upgrade to the latest doctrine pkg on back-end #7. [Lang]
|
||||
|
||||
### Fix
|
||||
|
||||
* Do not hide the end-game overlay ever #8. [Lang]
|
||||
|
||||
* The username was not recognized properly #7. [Lang]
|
||||
|
||||
|
||||
## v2026.2.6-1 (2026-04-19)
|
||||
|
||||
### Fix
|
||||
|
||||
@@ -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 }) => {
|
||||
<i className="fa fa-play" />
|
||||
Continue
|
||||
</a>
|
||||
) : (
|
||||
) : canShare ? (
|
||||
<button
|
||||
className={`bd-share${copied ? ' bd-share--copied' : ''}`}
|
||||
onClick={handleShare}
|
||||
@@ -118,7 +120,7 @@ export const BattleDialog = ({ games }) => {
|
||||
<i className={`fa ${copied ? 'fa-check' : 'fa-share-alt'}`} />
|
||||
{copied ? 'Copied!' : 'Share'}
|
||||
</button>
|
||||
)}
|
||||
) : null}
|
||||
<button className="bd-close" onClick={() => setOpen(false)} aria-label="Close">
|
||||
<i className="fa fa-times" />
|
||||
</button>
|
||||
|
||||
@@ -46,6 +46,7 @@ final readonly class ProfileGameDto implements JsonSerializable
|
||||
public float $blueBonusPoints,
|
||||
public array $redBonusStats,
|
||||
public array $blueBonusStats,
|
||||
public bool $bothRegistered,
|
||||
) {
|
||||
}
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ final readonly class ProfileGameDtoFactory
|
||||
blueBonusPoints: $game->blueBonusPoints ?? 0.0,
|
||||
redBonusStats: $game->redBonusStats ?? [],
|
||||
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,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user