Skip to content

Commit

Permalink
[PAY-3972] First weekly comment challenge web UI (#11478)
Browse files Browse the repository at this point in the history
  • Loading branch information
dharit-tan authored Feb 27, 2025
1 parent fbb4f34 commit d2dfd5a
Show file tree
Hide file tree
Showing 10 changed files with 52 additions and 13 deletions.
4 changes: 3 additions & 1 deletion packages/common/src/models/AudioRewards.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ export enum ChallengeName {
FirstPlaylist = 'fp',
ListenStreak = 'l',
ListenStreakEndless = 'e',
OneShot = 'o'
OneShot = 'o',
FirstWeeklyComment = 'c'
}

export type ChallengeRewardID =
Expand Down Expand Up @@ -87,6 +88,7 @@ export type ChallengeRewardID =
| ChallengeName.ListenStreak
| ChallengeName.ListenStreakEndless
| ChallengeName.OneShot
| ChallengeName.FirstWeeklyComment

export enum FailureReason {
// The attestation requires the user to fill out a captcha
Expand Down
10 changes: 9 additions & 1 deletion packages/common/src/utils/challenges.ts
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ export const challengeRewardsConfig: Record<
panelButtonText: 'See More',
id: 'trending-underground'
},
o: {
[ChallengeName.OneShot]: {
shortTitle: 'Airdrop 2: Artists',
title: 'Airdrop 2: Artist Appreciation',
description: () =>
Expand All @@ -287,6 +287,14 @@ export const challengeRewardsConfig: Record<
id: ChallengeName.OneShot,
remainingLabel: 'Ineligible',
progressLabel: 'Ready to Claim'
},
[ChallengeName.FirstWeeklyComment]: {
shortTitle: 'first comment of the week',
title: 'First comment of the week',
description: () => 'Your first comment every week will earn $AUDIO.',
fullDescription: () => 'Your first comment every week will earn $AUDIO.',
panelButtonText: 'Comment on a Track',
id: ChallengeName.FirstWeeklyComment
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,6 @@
"step_count": 2147483647,
"starting_block": 0,
"weekly_pool": 2147483647,
"cooldown_days": 0
"cooldown_days": 7
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,6 @@
"step_count": 2147483647,
"starting_block": 0,
"weekly_pool": 2147483647,
"cooldown_days": 0
"cooldown_days": 7
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -173,13 +173,15 @@ def create_comment(params: ManageEntityParameters):
)

params.add_record(comment_id, comment_record, EntityType.COMMENT)
challenge_bus.dispatch(
ChallengeEvent.first_weekly_comment,
params.block_number,
params.block_datetime,
user_id,
{"comment_id": comment_id},
)

with challenge_bus.use_scoped_dispatch_queue():
challenge_bus.dispatch(
ChallengeEvent.first_weekly_comment,
params.block_number,
params.block_datetime,
user_id,
{"created_at": params.block_datetime.timestamp()},
)

if (
not is_reply
Expand Down
6 changes: 6 additions & 0 deletions packages/mobile/src/utils/challenges.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,12 @@ const mobileChallengeConfig: Record<ChallengeRewardID, MobileChallengeConfig> =
buttonInfo: {
iconRight: IconCheck
}
},
[ChallengeName.FirstWeeklyComment]: {
icon: undefined,
buttonInfo: {
iconRight: IconCheck
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ const validRewardIds: Set<ChallengeRewardID> = new Set([
ChallengeName.TrackUpload,
ChallengeName.ListenStreak,
ChallengeName.OneShot,
ChallengeName.ListenStreakEndless
ChallengeName.ListenStreakEndless,
ChallengeName.FirstWeeklyComment
])

/** Pulls rewards from remoteconfig */
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { DefaultChallengeContent } from './DefaultChallengeContent'
import { type DefaultChallengeProps } from './types'

export const FirstWeeklyCommentChallengeModalContent = (
props: DefaultChallengeProps
) => {
const { challenge } = props
const modifiedChallenge = challenge
? {
...challenge,
totalAmount: challenge?.amount ?? 0
}
: undefined

return <DefaultChallengeContent {...props} challenge={modifiedChallenge} />
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ChallengeName } from '@audius/common/models'

import { AudioMatchingRewardsModalContent } from './AudioMatchingRewardsModalContent'
import { DefaultChallengeContent } from './DefaultChallengeContent'
import { FirstWeeklyCommentChallengeModalContent } from './FirstWeeklyCommentChallengeModalContent'
import { ListenStreakChallengeModalContent } from './ListenStreakChallengeModalContent'
import { OneShotChallengeModalContent } from './OneShotChallengeModalContent'
import { ReferralsChallengeModalContent } from './ReferralsChallengeModalContent'
Expand All @@ -19,6 +20,8 @@ export const challengeContentRegistry: ChallengeContentMap = {
ListenStreakChallengeModalContent as ChallengeContentComponent,
[ChallengeName.OneShot]:
OneShotChallengeModalContent as ChallengeContentComponent,
[ChallengeName.FirstWeeklyComment]:
FirstWeeklyCommentChallengeModalContent as ChallengeContentComponent,
[ChallengeName.Referrals]:
ReferralsChallengeModalContent as ChallengeContentComponent,
[ChallengeName.ReferralsVerified]:
Expand Down
3 changes: 2 additions & 1 deletion packages/web/src/pages/rewards-page/config.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,8 @@ const webChallengesConfig: Record<ChallengeRewardID, WebChallengeInfo> = {
'verified-upload': {},
'trending-underground': {},
tut: {},
[ChallengeName.OneShot]: {}
[ChallengeName.OneShot]: {},
[ChallengeName.FirstWeeklyComment]: {}
}

export const getChallengeConfig = (id: ChallengeRewardID) => ({
Expand Down

0 comments on commit d2dfd5a

Please sign in to comment.