11package api
22
33import (
4+ "fmt"
5+ "strings"
46 "time"
57
68 "api.audius.co/trashid"
79 "github.com/gofiber/fiber/v2"
810 "github.com/jackc/pgx/v5"
911)
1012
13+ // openRewards are challenge IDs available to unverified users
14+ var openRewards = []string {
15+ "dvl" , // daily volume rewards
16+ "t" , // tastemaker
17+ "tp" , // trending playlists
18+ "tt" , // trending
19+ "tut" , // trending underground
20+ "b" , // audio match buy (from verified user)
21+ "rd" , // referred (by verified user)
22+ "w" , // remix contest winner (from verified user)
23+ "cs" , // cosign (from verified user)
24+ }
25+
1126type GetUndisbursedChallengesQueryParams struct {
1227 ChallengeID string `query:"challenge_id"`
1328 CompletedBlocknumber int `query:"completed_blocknumber"`
@@ -26,7 +41,13 @@ func (app *ApiServer) v1ChallengesUndisbursed(c *fiber.Ctx) error {
2641 return err
2742 }
2843
29- sql := `
44+ openRewardsPlaceholders := make ([]string , len (openRewards ))
45+ for i , reward := range openRewards {
46+ openRewardsPlaceholders [i ] = fmt .Sprintf ("'%s'" , reward )
47+ }
48+ openRewardsInClause := strings .Join (openRewardsPlaceholders , ", " )
49+
50+ sql := fmt .Sprintf (`
3051 -- Get Undisbursed Challenges
3152 SELECT user_challenges.challenge_id,
3253 user_challenges.user_id,
@@ -52,14 +73,16 @@ func (app *ApiServer) v1ChallengesUndisbursed(c *fiber.Ctx) error {
5273 AND (@user_id = 0 OR user_challenges.user_id = @user_id)
5374 AND (@completed_blocknumber = 0 OR user_challenges.completed_blocknumber > @completed_blocknumber)
5475 AND (@challenge_id = '' OR user_challenges.challenge_id = @challenge_id)
76+ -- Filter by verification status: unverified users only see openRewards, verified users see all
77+ AND (users.is_verified = true OR user_challenges.challenge_id IN (%s))
5578 ORDER BY
5679 user_challenges.user_id ASC,
5780 user_challenges.challenge_id ASC,
5881 user_challenges.completed_blocknumber ASC
5982 LIMIT COALESCE(@limit, 100)
6083 OFFSET @offset
6184 ;
62- `
85+ ` , openRewardsInClause )
6386
6487 rows , err := app .pool .Query (c .Context (), sql , pgx.NamedArgs {
6588 "user_id" : userId ,
0 commit comments