From 8b9dfc63d508237fff1bf7aebbdb3e3f428a11f5 Mon Sep 17 00:00:00 2001 From: nanaya Date: Fri, 25 Aug 2023 16:31:09 +0900 Subject: [PATCH 1/3] 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/3] 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(), ]; From 09fd4cc2917f2bb9579baf84e2d9dece9c0977e9 Mon Sep 17 00:00:00 2001 From: nanaya Date: Tue, 29 Aug 2023 19:21:14 +0900 Subject: [PATCH 3/3] Support more variation of YouTube URLs for `youtube` tag --- app/Libraries/BBCodeForDB.php | 2 +- .../bbcode_examples/basic_youtube.base.txt | 19 +++++++++ .../bbcode_examples/basic_youtube.db.txt | 19 +++++++++ .../bbcode_examples/basic_youtube.html | 39 +++++++++++++++++++ 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 tests/Libraries/bbcode_examples/basic_youtube.base.txt create mode 100644 tests/Libraries/bbcode_examples/basic_youtube.db.txt create mode 100644 tests/Libraries/bbcode_examples/basic_youtube.html diff --git a/app/Libraries/BBCodeForDB.php b/app/Libraries/BBCodeForDB.php index a20c675307f..8d3fb94e44d 100644 --- a/app/Libraries/BBCodeForDB.php +++ b/app/Libraries/BBCodeForDB.php @@ -375,7 +375,7 @@ function ($m) { public function parseYoutube($text) { return preg_replace_callback( - '#\[youtube\](.+?)\[/youtube\]#', + '#\[youtube\](?:https?://(?:youtu\.be/|(?:m\.|www\.|)youtube\.com/(?:embed/|shorts/|watch\?v=))|)(.+?)\[/youtube\]#', function ($m) { $videoId = preg_replace('/\?.*/', '', $this->extraEscapes($m[1])); diff --git a/tests/Libraries/bbcode_examples/basic_youtube.base.txt b/tests/Libraries/bbcode_examples/basic_youtube.base.txt new file mode 100644 index 00000000000..0803895bc75 --- /dev/null +++ b/tests/Libraries/bbcode_examples/basic_youtube.base.txt @@ -0,0 +1,19 @@ +[youtube]https://youtube.com/shorts/mT5vq7egFqQ?si=ThgVtuwBmOJ3QFq9[/youtube] + +[youtube]https://m.youtube.com/shorts/mT5vq7egFqQ?si=ThgVtuwBmOJ3QFq9[/youtube] + +[youtube]https://www.youtube.com/shorts/mT5vq7egFqQ[/youtube] + +[youtube]https://www.youtube.com/embed/mT5vq7egFqQ?rel=0[/youtube] + +[youtube]mT5vq7egFqQ[/youtube] + +[youtube]https://youtu.be/YOeKD8ig3eM?si=DM3l66PIt6uXhv0K[/youtube] + +[youtube]https://m.youtube.com/watch?v=YOeKD8ig3eM[/youtube] + +[youtube]https://www.youtube.com/watch?v=YOeKD8ig3eM[/youtube] + +[youtube]https://www.youtube.com/embed/YOeKD8ig3eM?rel=0[/youtube] + +[youtube]YOeKD8ig3eM[/youtube] diff --git a/tests/Libraries/bbcode_examples/basic_youtube.db.txt b/tests/Libraries/bbcode_examples/basic_youtube.db.txt new file mode 100644 index 00000000000..c0b0b48eb1c --- /dev/null +++ b/tests/Libraries/bbcode_examples/basic_youtube.db.txt @@ -0,0 +1,19 @@ +[youtube:1]mT5vq7egFqQ[/youtube:1] + +[youtube:1]mT5vq7egFqQ[/youtube:1] + +[youtube:1]mT5vq7egFqQ[/youtube:1] + +[youtube:1]mT5vq7egFqQ[/youtube:1] + +[youtube:1]mT5vq7egFqQ[/youtube:1] + +[youtube:1]YOeKD8ig3eM[/youtube:1] + +[youtube:1]YOeKD8ig3eM[/youtube:1] + +[youtube:1]YOeKD8ig3eM[/youtube:1] + +[youtube:1]YOeKD8ig3eM[/youtube:1] + +[youtube:1]YOeKD8ig3eM[/youtube:1] diff --git a/tests/Libraries/bbcode_examples/basic_youtube.html b/tests/Libraries/bbcode_examples/basic_youtube.html new file mode 100644 index 00000000000..e65d4accbfb --- /dev/null +++ b/tests/Libraries/bbcode_examples/basic_youtube.html @@ -0,0 +1,39 @@ +
+ +
+

+
+ +
+

+
+ +
+

+
+ +
+

+
+ +
+

+
+ +
+

+
+ +
+

+
+ +
+

+
+ +
+

+
+ +