Skip to content

Commit d58b698

Browse files
committed
add track specific badges
1 parent f30214a commit d58b698

File tree

4 files changed

+25
-4
lines changed

4 files changed

+25
-4
lines changed

client/src/components/BadgesScreen/BadgesScreen.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ export const BadgesScreen = () => {
5252
<div className="grid grid-cols-3 gap-6 pt-4">
5353
{Object.values(badges).map((badge) => {
5454
const hasBadge = visitorInventory && Object.keys(visitorInventory).includes(badge.name);
55-
const style = hasBadge ? {} : { filter: "grayscale(1)" };
55+
const style = { width: "90px" };
56+
if (!hasBadge) style.filter = "grayscale(1)";
5657
return (
5758
<div className="tooltip" key={badge.id}>
5859
<span className="tooltip-content">{badge.name}</span>

client/src/components/SwitchRace/SwitchTrackScreen.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export const SwitchTrackScreen = () => {
3333
setAreAllButtonsDisabled(true);
3434

3535
await backendAPI
36-
.post(`/race/switch-track?trackSceneId=${selectedTrack.sceneId}`)
36+
.post("/race/switch-track", { selectedTrack })
3737
.then((response) => {
3838
const { leaderboard, numberOfCheckpoints, trackLastSwitchedDate } = response.data.sceneData;
3939

server/controllers/handleSwitchTrack.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ export const handleSwitchTrack = async (req, res) => {
1212
try {
1313
const credentials = getCredentials(req.query);
1414
const { assetId, profileId, urlSlug, sceneDropId } = credentials;
15-
const { trackSceneId } = req.query;
15+
const { selectedTrack } = req.body;
16+
const { sceneId, name } = selectedTrack;
1617

1718
const world = await World.create(urlSlug, { credentials });
1819
const { visitor } = await getVisitor(credentials);
@@ -54,7 +55,7 @@ export const handleSwitchTrack = async (req, res) => {
5455

5556
await world.dropScene({
5657
allowNonAdmins: true,
57-
sceneId: trackSceneId,
58+
sceneId,
5859
position,
5960
sceneDropId,
6061
});
@@ -65,6 +66,7 @@ export const handleSwitchTrack = async (req, res) => {
6566
});
6667

6768
const sceneData = {
69+
trackName: name,
6870
numberOfCheckpoints: numberOfCheckpoints?.length,
6971
leaderboard: {},
7072
position,

server/utils/checkpoints/finishLineEntered.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,24 @@ export const finishLineEntered = async ({ credentials, currentElapsedTime, wasWr
185185
);
186186
}
187187

188+
// Award Track Completion badge for specific track by name if available
189+
promises.push(
190+
awardBadge({
191+
credentials,
192+
visitor,
193+
visitorInventory,
194+
badgeName: raceObject.trackName,
195+
redisObj,
196+
profileId,
197+
}).catch((error) =>
198+
errorHandler({
199+
error,
200+
functionName: "finishLineEntered",
201+
message: `Error awarding ${raceObject.trackName} completion badge`,
202+
}),
203+
),
204+
);
205+
188206
const results = await Promise.allSettled(promises);
189207
results.forEach((result) => {
190208
if (result.status === "rejected") console.error(result.reason);

0 commit comments

Comments
 (0)