From 8b9dfc63d508237fff1bf7aebbdb3e3f428a11f5 Mon Sep 17 00:00:00 2001 From: nanaya Date: Fri, 25 Aug 2023 16:31:09 +0900 Subject: [PATCH 1/2] Add has_replay attribute to match with database column --- app/Transformers/ScoreTransformer.php | 14 +++++++++----- resources/js/interfaces/solo-score-json.ts | 4 ++-- resources/js/utils/score-helper.ts | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/Transformers/ScoreTransformer.php b/app/Transformers/ScoreTransformer.php index d0d63f225ed..68859c83747 100644 --- a/app/Transformers/ScoreTransformer.php +++ b/app/Transformers/ScoreTransformer.php @@ -78,21 +78,25 @@ public function transformSolo(ScoreModel|SoloScore $score) if ($best !== null) { $bestId = $best->getKey(); $pp = $best->pp; - $replay = $best->replay; + $hasReplay = $best->replay; } } elseif ($score instanceof SoloScore) { $pp = $score->pp; - $replay = $score->has_replay; + $hasReplay = $score->has_replay; } - return array_merge($score->data->jsonSerialize(), [ + $hasReplay ??= false; + + return [ + ...$score->data->jsonSerialize(), 'best_id' => $bestId ?? null, + 'has_replay' => $hasReplay, 'id' => $score->getKey(), 'legacy_perfect' => $legacyPerfect ?? null, 'pp' => $pp ?? null, - 'replay' => $replay ?? false, + 'replay' => $hasReplay, 'type' => $score->getMorphClass(), - ]); + ]; } public function transformLegacy(LegacyMatch\Score|ScoreModel|SoloScore $score) diff --git a/resources/js/interfaces/solo-score-json.ts b/resources/js/interfaces/solo-score-json.ts index 7ac5ecb9b0c..d33708bdaa1 100644 --- a/resources/js/interfaces/solo-score-json.ts +++ b/resources/js/interfaces/solo-score-json.ts @@ -31,6 +31,7 @@ type SoloScoreJsonDefaultAttributes = { best_id: number | null; build_id: number | null; ended_at: string; + has_replay: boolean; id: number; legacy_score_id: number | null; legacy_total_score: number | null; @@ -39,7 +40,6 @@ type SoloScoreJsonDefaultAttributes = { passed: boolean; pp: number | null; rank: Rank; - replay: boolean | null; ruleset_id: number; started_at: string | null; statistics: Partial>; @@ -61,7 +61,7 @@ export default SoloScoreJson; export type SoloScoreJsonForBeatmap = SoloScoreJson & Required>; export type SoloScoreJsonForShow = SoloScoreJson -& Required> +& Required> & { beatmap: BeatmapExtendedJson & Required>; }; diff --git a/resources/js/utils/score-helper.ts b/resources/js/utils/score-helper.ts index ce068c20e6f..d258d63722d 100644 --- a/resources/js/utils/score-helper.ts +++ b/resources/js/utils/score-helper.ts @@ -20,7 +20,7 @@ export function hasMenu(score: SoloScoreJson) { } export function hasReplay(score: SoloScoreJson) { - return score.replay != null && score.replay; + return score.has_replay; } export function hasShow(score: SoloScoreJson) { From 3bf807f61e437aef6a412b088434a664d0278cd2 Mon Sep 17 00:00:00 2001 From: nanaya Date: Tue, 29 Aug 2023 17:30:12 +0900 Subject: [PATCH 2/2] Add note about the now redundant field --- app/Transformers/ScoreTransformer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Transformers/ScoreTransformer.php b/app/Transformers/ScoreTransformer.php index 68859c83747..0af044cca6c 100644 --- a/app/Transformers/ScoreTransformer.php +++ b/app/Transformers/ScoreTransformer.php @@ -94,6 +94,7 @@ public function transformSolo(ScoreModel|SoloScore $score) 'id' => $score->getKey(), 'legacy_perfect' => $legacyPerfect ?? null, 'pp' => $pp ?? null, + // TODO: remove this redundant field sometime after 2024-02 'replay' => $hasReplay, 'type' => $score->getMorphClass(), ];