Skip to content

Commit 86b557d

Browse files
committed
change colour if voted
1 parent 7daae46 commit 86b557d

5 files changed

Lines changed: 21 additions & 2 deletions

File tree

resources/css/bem/user-tag.less

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,10 @@
2222
&--name {
2323
background: hsl(var(--hsl-b2));
2424
}
25+
26+
&--voted {
27+
background: hsl(var(--hsl-h1));
28+
color: hsl(var(--hsl-b5));
29+
}
2530
}
2631
}

resources/js/beatmapsets-show/controller.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ export default class Controller {
7272
return this.beatmaps.get(this.currentBeatmap.mode) ?? [];
7373
}
7474

75+
@computed
76+
get currentUserTagIds() {
77+
return new Set(this.currentBeatmap.current_user_tag_ids);
78+
}
79+
7580
@computed
7681
get relatedTags() {
7782
const map = new Map<number, TagJson>();

resources/js/beatmapsets-show/info.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ export default class Info extends React.Component<Props> {
195195
</h3>
196196
<div className='beatmapset-info__tags'>
197197
{this.controller.tags.userTags.map((tag) => (
198-
<UserTag key={tag.name} tag={tag} />
198+
<UserTag key={tag.name} tag={tag} voted={this.controller.currentUserTagIds.has(tag.id)} />
199199
))}
200200
</div>
201201
</div>

resources/js/beatmapsets-show/user-tag.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@ import { TagJsonWithCount } from 'interfaces/tag-json';
55
import { route } from 'laroute';
66
import * as React from 'react';
77
import { makeSearchQueryOption } from 'utils/beatmapset-helper';
8+
import { classWithModifiers } from 'utils/css';
89

910
interface Props {
1011
tag: TagJsonWithCount;
12+
voted: boolean;
1113
}
1214

1315
export default class UserTag extends React.PureComponent<Props> {
16+
static defaultProps = {
17+
voted: false,
18+
};
19+
1420
private readonly category;
1521
private readonly name;
1622

@@ -35,7 +41,9 @@ export default class UserTag extends React.PureComponent<Props> {
3541
>
3642
<span className='user-tag__item user-tag__item--category'>{this.category}</span>
3743
<span className='user-tag__item user-tag__item--name'>{this.name}</span>
38-
<span className='user-tag__item user-tag__item--count'>{this.props.tag.count}</span>
44+
<span className={classWithModifiers('user-tag__item', 'count', { voted: this.props.voted })}>
45+
{this.props.tag.count}
46+
</span>
3947
</a>
4048
);
4149
}

resources/js/interfaces/beatmap-json.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ interface BeatmapFailTimesArray {
1414
interface BeatmapJsonAvailableIncludes {
1515
beatmapset: BeatmapsetJson | null;
1616
checksum: string | null;
17+
current_user_tag_ids: number[];
1718
failtimes: BeatmapFailTimesArray;
1819
max_combo: number;
1920
owners: BeatmapOwnerJson[];

0 commit comments

Comments
 (0)