diff --git a/app/Http/Controllers/BeatmapsController.php b/app/Http/Controllers/BeatmapsController.php index dd79052cdf5..abe7a82e5ea 100644 --- a/app/Http/Controllers/BeatmapsController.php +++ b/app/Http/Controllers/BeatmapsController.php @@ -441,7 +441,7 @@ public function userScore($beatmapId, $userId) 'score' => json_item( $score, new ScoreTransformer(), - ['beatmap.mappers', ...static::DEFAULT_SCORE_INCLUDES] + ['beatmap.owners', ...static::DEFAULT_SCORE_INCLUDES] ), ]; } diff --git a/app/Http/Controllers/BeatmapsetsController.php b/app/Http/Controllers/BeatmapsetsController.php index aa46d05ae0b..8e3804d4987 100644 --- a/app/Http/Controllers/BeatmapsetsController.php +++ b/app/Http/Controllers/BeatmapsetsController.php @@ -415,8 +415,8 @@ private function showJson($beatmapset) return json_item($beatmapset, $transformer, [ 'beatmaps', 'beatmaps.failtimes', - 'beatmaps.mappers', 'beatmaps.max_combo', + 'beatmaps.owners', 'converts', 'converts.failtimes', 'current_nominations', diff --git a/app/Models/Beatmapset.php b/app/Models/Beatmapset.php index b88996fa5ae..ce2a3c7d2d4 100644 --- a/app/Models/Beatmapset.php +++ b/app/Models/Beatmapset.php @@ -1246,7 +1246,7 @@ public function defaultDiscussionJson() ])->find($this->getKey()), 'Beatmapset', [ - 'beatmaps:with_trashed.mappers', + 'beatmaps:with_trashed.owners', 'current_user_attributes', 'discussions', 'discussions.current_user_attributes', diff --git a/app/Transformers/BeatmapCompactTransformer.php b/app/Transformers/BeatmapCompactTransformer.php index 3bbd87a1565..394e9d30bf5 100644 --- a/app/Transformers/BeatmapCompactTransformer.php +++ b/app/Transformers/BeatmapCompactTransformer.php @@ -15,8 +15,8 @@ class BeatmapCompactTransformer extends TransformerAbstract 'beatmapset', 'checksum', 'failtimes', - 'mappers', 'max_combo', + 'owners', 'user', ]; @@ -69,18 +69,18 @@ public function includeFailtimes(Beatmap $beatmap) return $this->primitive($result); } - public function includeMappers(Beatmap $beatmap) + public function includeMaxCombo(Beatmap $beatmap) { - return $this->primitive($beatmap->owners->map(fn ($mapper) => [ - 'avatar_url' => $mapper->user_avatar, - 'id' => $mapper->user_id, - 'username' => $mapper->username, - ])); + return $this->primitive($beatmap->maxCombo()); } - public function includeMaxCombo(Beatmap $beatmap) + public function includeOwners(Beatmap $beatmap) { - return $this->primitive($beatmap->maxCombo()); + return $this->primitive($beatmap->owners->map(fn ($user) => [ + 'avatar_url' => $user->user_avatar, + 'id' => $user->user_id, + 'username' => $user->username, + ])); } public function includeUser(Beatmap $beatmap) diff --git a/resources/js/beatmap-discussions/beatmap-owner-editor.tsx b/resources/js/beatmap-discussions/beatmap-owner-editor.tsx index 76652db7230..0540b192e60 100644 --- a/resources/js/beatmap-discussions/beatmap-owner-editor.tsx +++ b/resources/js/beatmap-discussions/beatmap-owner-editor.tsx @@ -25,7 +25,7 @@ interface Props { beatmap: BeatmapJson; beatmapset: BeatmapsetExtendedJson; discussionsState: DiscussionsState; // only for updating the state with the response. - mappers: UserJson[]; + owners: UserJson[]; } @observer @@ -170,15 +170,15 @@ export default class BeatmapOwnerEditor extends React.Component { ); } - private readonly renderMapper = (mapper: UserJson, onRemoveClick: (user: UserJson) => void) => ( - + private readonly renderMapper = (owner: UserJson, onRemoveClick: (user: UserJson) => void) => ( + ); private renderUsernames() { if (!this.editing) { return (
- {this.props.mappers.map((mapper) => )} + {this.props.owners.map((owner) => )}
); } @@ -192,7 +192,7 @@ export default class BeatmapOwnerEditor extends React.Component { > { private updateOwners(userIds: number[]) { this.updateOwnerXhr?.abort(); - if (xor([...this.validUsers.keys()], this.props.mappers.map((mapper) => mapper.id)).length === 0) { + if (xor([...this.validUsers.keys()], this.props.owners.map((mapper) => mapper.id)).length === 0) { this.editing = false; return; } diff --git a/resources/js/beatmap-discussions/beatmaps-owner-editor.tsx b/resources/js/beatmap-discussions/beatmaps-owner-editor.tsx index 018a6eaadb9..11d0d12badb 100644 --- a/resources/js/beatmap-discussions/beatmaps-owner-editor.tsx +++ b/resources/js/beatmap-discussions/beatmaps-owner-editor.tsx @@ -45,7 +45,7 @@ export default class BeatmapsOwnerEditor extends React.Component { beatmap={beatmap} beatmapset={this.props.beatmapset} discussionsState={this.props.discussionsState} - mappers={beatmap.mappers.map(this.getUser)} + owners={beatmap.owners.map(this.getUser)} /> )) ))} diff --git a/resources/js/beatmap-discussions/header.tsx b/resources/js/beatmap-discussions/header.tsx index e306d4b0e01..54ea0d9c575 100644 --- a/resources/js/beatmap-discussions/header.tsx +++ b/resources/js/beatmap-discussions/header.tsx @@ -185,7 +185,7 @@ export class Header extends React.Component { , + user: , }} pattern={trans('beatmaps.discussions.guest')} /> diff --git a/resources/js/beatmapsets-show/controller.ts b/resources/js/beatmapsets-show/controller.ts index 37573b569d3..12bcbf9031b 100644 --- a/resources/js/beatmapsets-show/controller.ts +++ b/resources/js/beatmapsets-show/controller.ts @@ -107,9 +107,9 @@ export default class Controller { $(document).off('turbolinks:before-cache', this.saveState); } - mappers(beatmap: BeatmapJsonForBeatmapsetShow) { - if (beatmap.mappers != null) { - return beatmap.mappers.map((mapper) => this.usersById[mapper.id] ?? deletedUserJson); + owners(beatmap: BeatmapJsonForBeatmapsetShow) { + if (beatmap.owners != null) { + return beatmap.owners.map((mapper) => this.usersById[mapper.id] ?? deletedUserJson); } return [this.usersById[beatmap.user_id] ?? deletedUserJson]; diff --git a/resources/js/beatmapsets-show/header.tsx b/resources/js/beatmapsets-show/header.tsx index 5165644f303..80e14167a9e 100644 --- a/resources/js/beatmapsets-show/header.tsx +++ b/resources/js/beatmapsets-show/header.tsx @@ -275,7 +275,7 @@ export default class Header extends React.Component { private renderBeatmapVersion() { const beatmap = this.controller.hoveredBeatmap ?? this.controller.currentBeatmap; - const hasGuestMappers = (beatmap.mappers?.length ?? 0) > 1 + const hasGuestMappers = (beatmap.owners?.length ?? 0) > 1 || beatmap.user_id !== this.controller.beatmapset.user_id; return ( @@ -286,7 +286,7 @@ export default class Header extends React.Component { , + mapper: , }} pattern={trans('beatmapsets.show.details.mapped_by')} /> diff --git a/resources/js/components/beatmap-list-item.tsx b/resources/js/components/beatmap-list-item.tsx index 6a9cf5da86a..f6df94d741f 100644 --- a/resources/js/components/beatmap-list-item.tsx +++ b/resources/js/components/beatmap-list-item.tsx @@ -62,7 +62,7 @@ export default class BeatmapListItem extends React.PureComponent { private renderMappers() { if (!this.props.showMappers) return null; - const mappers = this.props.beatmap.mappers; + const mappers = this.props.beatmap.owners; if (mappers == null || mappers.length === 0) { return null; } diff --git a/resources/js/interfaces/beatmap-json.ts b/resources/js/interfaces/beatmap-json.ts index 2889f55fcc7..0bf27772e25 100644 --- a/resources/js/interfaces/beatmap-json.ts +++ b/resources/js/interfaces/beatmap-json.ts @@ -14,8 +14,8 @@ interface BeatmapJsonAvailableIncludes { beatmapset: BeatmapsetJson | null; checksum: string | null; failtimes: BeatmapFailTimesArray; - mappers: UserJsonMinimum[]; max_combo: number; + owners: UserJsonMinimum[]; user: UserJson; } diff --git a/resources/js/interfaces/beatmapset-with-discussions-json.ts b/resources/js/interfaces/beatmapset-with-discussions-json.ts index 7366e0051e3..9c5464d458e 100644 --- a/resources/js/interfaces/beatmapset-with-discussions-json.ts +++ b/resources/js/interfaces/beatmapset-with-discussions-json.ts @@ -4,7 +4,7 @@ import BeatmapExtendedJson from './beatmap-extended-json'; import { BeatmapsetDiscussionJsonForShow } from './beatmapset-discussion-json'; import BeatmapsetExtendedJson from './beatmapset-extended-json'; -import WithMappers from './with-mappers'; +import WithOwners from './with-owners'; type DiscussionsRequiredAttributes = 'current_user_attributes' | 'eligible_main_rulesets' | 'events' | 'nominations' | 'related_users'; type BeatmapsetWithDiscussionsJson = @@ -13,7 +13,7 @@ type BeatmapsetWithDiscussionsJson = & Required>; interface OverrideIncludes { - beatmaps: WithMappers[]; + beatmaps: WithOwners[]; discussions: BeatmapsetDiscussionJsonForShow[]; } diff --git a/resources/js/interfaces/solo-score-json.ts b/resources/js/interfaces/solo-score-json.ts index 4537e056d82..4cf5767fda9 100644 --- a/resources/js/interfaces/solo-score-json.ts +++ b/resources/js/interfaces/solo-score-json.ts @@ -6,7 +6,7 @@ import Rank from './rank'; import Ruleset from './ruleset'; import { ScoreJsonAvailableIncludes, ScoreJsonDefaultIncludes } from './score-json'; import ScoreModJson from './score-mod-json'; -import WithMappers from './with-mappers'; +import WithOwners from './with-owners'; export type SoloScoreStatisticsAttribute = | 'good' @@ -80,7 +80,7 @@ export type SoloScoreJsonForBeatmap = SoloScoreJson & Required> & { - beatmap: WithMappers; + beatmap: WithOwners; }; export type SoloScoreJsonForUser = SoloScoreJson & Required>; diff --git a/resources/js/interfaces/with-mappers.ts b/resources/js/interfaces/with-owners.ts similarity index 68% rename from resources/js/interfaces/with-mappers.ts rename to resources/js/interfaces/with-owners.ts index 73f9d6f29ef..1bccd19e0d3 100644 --- a/resources/js/interfaces/with-mappers.ts +++ b/resources/js/interfaces/with-owners.ts @@ -3,6 +3,6 @@ import BeatmapJson from './beatmap-json'; -type WithMappers = T & Required>; +type WithOwners = T & Required>; -export default WithMappers; +export default WithOwners; diff --git a/resources/js/scores-show/beatmap-info.tsx b/resources/js/scores-show/beatmap-info.tsx index cafa12c37ef..e0d1118991c 100644 --- a/resources/js/scores-show/beatmap-info.tsx +++ b/resources/js/scores-show/beatmap-info.tsx @@ -4,14 +4,14 @@ import BeatmapListItem from 'components/beatmap-list-item'; import BeatmapExtendedJson from 'interfaces/beatmap-extended-json'; import BeatmapsetJson from 'interfaces/beatmapset-json'; -import WithMappers from 'interfaces/with-mappers'; +import WithOwners from 'interfaces/with-owners'; import { route } from 'laroute'; import * as React from 'react'; import { getArtist, getTitle } from 'utils/beatmapset-helper'; import { trans } from 'utils/lang'; interface Props { - beatmap: WithMappers; + beatmap: WithOwners; beatmapset: BeatmapsetJson; } diff --git a/resources/js/utils/beatmap-helper.ts b/resources/js/utils/beatmap-helper.ts index f344bc06973..3694766d6cf 100644 --- a/resources/js/utils/beatmap-helper.ts +++ b/resources/js/utils/beatmap-helper.ts @@ -101,7 +101,7 @@ export function group(beatmaps?: T[] | null, includeEmpty } export function hasGuestMapper(beatmap: BeatmapJson, beatmapset: BeatmapsetJson) { - return beatmap.mappers?.some((mapper) => mapper.id !== beatmapset.user_id); + return beatmap.owners?.some((owner) => owner.id !== beatmapset.user_id); } export function rulesetName(id: number): Ruleset {