Skip to content

Commit f79c14f

Browse files
committed
move main_ruleset to beatmapset level
1 parent 0e4c51b commit f79c14f

File tree

7 files changed

+13
-7
lines changed

7 files changed

+13
-7
lines changed

app/Models/Beatmapset.php

+1
Original file line numberDiff line numberDiff line change
@@ -1298,6 +1298,7 @@ public function defaultDiscussionJson()
12981298
'discussions.posts',
12991299
'discussions.votes',
13001300
'events',
1301+
'main_ruleset',
13011302
'nominations',
13021303
'related_users',
13031304
'related_users.groups',

app/Transformers/BeatmapsetCompactTransformer.php

+6
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class BeatmapsetCompactTransformer extends TransformerAbstract
3333
'has_favourited',
3434
'language',
3535
'pack_tags',
36+
'main_ruleset',
3637
'nominations',
3738
'ratings',
3839
'recent_favourites',
@@ -182,6 +183,11 @@ public function includeLanguage(Beatmapset $beatmapset)
182183
return $this->item($beatmapset->language, new LanguageTransformer());
183184
}
184185

186+
public function includeMainRuleset(Beatmapset $beatmapset)
187+
{
188+
return $this->primitive($beatmapset->mainRuleset()?->legacyName());
189+
}
190+
185191
public function includeNominations(Beatmapset $beatmapset)
186192
{
187193
$result = [

app/Transformers/BeatmapsetTransformer.php

-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ public function transform(Beatmapset $beatmapset)
2323
// only for showing in BeatmapPanel.
2424
$nominationsSummary = [
2525
'current' => $beatmapset->nominations,
26-
'main_ruleset' => $beatmapset->mainRuleset()?->legacyName(),
2726
// TODO: this is a placeholder value for now.
2827
'required' => $beatmapset->playmodeCount() * $GLOBALS['cfg']['osu']['beatmapset']['required_nominations'], // $this->requiredNominationCount(),
2928
];

resources/js/beatmap-discussions/nominator.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,9 @@ export class Nominator extends React.Component<Props> {
129129
}
130130

131131
private get calculatedMode() {
132-
return this.beatmapset.nominations_summary.main_ruleset
133-
// TODO: document
132+
return this.beatmapset.main_ruleset
133+
// The main ruleset not being set yet implies there are either no nominations
134+
// or an equal number of nominations for each ruleset, so the next selection should make it the main ruleset.
134135
?? (this.selectedModes.length === 1 ? this.selectedModes[0] : null);
135136
}
136137

@@ -258,7 +259,7 @@ export class Nominator extends React.Component<Props> {
258259
}
259260

260261
private renderModalContentHybrid() {
261-
const currentMode = this.beatmapset.nominations_summary.main_ruleset ?? 'undefined';
262+
const currentMode = this.calculatedMode ?? 'undefined';
262263

263264
return (
264265
<>

resources/js/interfaces/beatmapset-extended-json.ts

-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33

44
import BeatmapExtendedJson from './beatmap-extended-json';
55
import BeatmapsetJson, { Availability } from './beatmapset-json';
6-
import GameMode from './game-mode';
76

87
interface NominationsSummary {
98
current: number;
10-
main_ruleset: GameMode | null;
119
required: number;
1210
}
1311

resources/js/interfaces/beatmapset-json.ts

+1
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ interface BeatmapsetJsonAvailableIncludes {
8585
genre: GenreJson;
8686
has_favourited: boolean;
8787
language: LanguageJson;
88+
main_ruleset: GameMode | null;
8889
nominations: BeatmapsetNominationsInterface;
8990
ratings: number[];
9091
recent_favourites: UserJson[];

resources/js/interfaces/beatmapset-with-discussions-json.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import { BeatmapsetDiscussionJsonForShow } from './beatmapset-discussion-json';
55
import BeatmapsetExtendedJson from './beatmapset-extended-json';
66

7-
type DiscussionsRequiredAttributes = 'beatmaps' | 'current_user_attributes' | 'events' | 'nominations' | 'related_users';
7+
type DiscussionsRequiredAttributes = 'beatmaps' | 'current_user_attributes' | 'events' | 'main_ruleset' | 'nominations' | 'related_users';
88
type BeatmapsetWithDiscussionsJson =
99
Omit<BeatmapsetExtendedJson, keyof OverrideIncludes>
1010
& OverrideIncludes

0 commit comments

Comments
 (0)