Skip to content

Commit fb79308

Browse files
Hide verified rewards
1 parent 273a15a commit fb79308

1 file changed

Lines changed: 25 additions & 2 deletions

File tree

api/v1_challenges_undisbursed.go

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,28 @@
11
package api
22

33
import (
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+
1126
type 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

Comments
 (0)