Skip to content

build fix#2323

Merged
simo6529 merged 3 commits intomainfrom
fix-build-270426
Apr 28, 2026
Merged

build fix#2323
simo6529 merged 3 commits intomainfrom
fix-build-270426

Conversation

@simo6529
Copy link
Copy Markdown
Collaborator

@simo6529 simo6529 commented Apr 28, 2026

Summary by CodeRabbit

  • New Features

    • Added Card Set TDH as a supported voting credit type for waves.
    • Wave payloads now include voting credit NFTs when creating previews and optimistic drops.
    • Claim trait values are now consistently normalized for display (empty values render as —).
  • Style

    • Adjusted UI class ordering for the wave voting interface.
  • Tests

    • Updated multipart-upload tests: cover MIME-type detection from filenames and rejection of unsupported MIME types.

Signed-off-by: Simo <simo@6529.io>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 28, 2026

📝 Walkthrough

Walkthrough

Adds a safe stringification helper for claim attribute values, integrates a new voting credit type label, includes voting credit NFTs in optimistic/preview wave payloads, and updates related UI and tests.

Changes

Cohort / File(s) Summary
Voting Payload Builders
components/waves/memes/submission/utils/buildPreviewDrop.ts, components/waves/utils/getOptimisticDrop.ts
Populate voting_credit_nfts from wave.voting.credit_nfts into the constructed wave/ApiDrop payloads.
Voting UI & Labels
components/waves/create-wave/voting/CreateWaveVoting.tsx, components/waves/specs/WaveRating.tsx
Add ApiWaveCreditType.CardSetTdh to voting order/config (kept undefined to filter out) and map it to label "Card Set TDH" in rating labels; minor JSX/Tailwind reformatting only.
Claim Traits Stringification
components/drop-forge/claimTraitsData.ts, components/drop-forge/launch/DropForgeLaunchClaimPageClient.view.tsx
Introduce stringifyClaimAttributeValue(value: unknown): string and switch trait rendering to use it, centralizing stringification and normalizing non-string/number/boolean values to "".
Tests: multipart upload
__tests__/components/waves/create-wave/services/multiPartUpload.test.ts
Switch fixture from test.txt to test.png, add coverage for file missing File.type and unsupported MIME type behavior, and update assertions to match new MIME and formatting.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • prxt6529
  • ragnep

Poem

🐰 I nibble at code, tidy and spry,
A helper to tame values gone shy,
New credit hops in, labeled with glee,
Payloads now carry NFT candy,
Hoppity—tests updated, all green for me! 🎉

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'build fix' is overly vague and generic, failing to communicate the specific changes made across multiple components and test files. Use a more descriptive title that captures the main purpose of the changes, such as 'Add CardSetTdh voting credit type support and refactor attribute stringification' or focus on the primary change if there is one.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-build-270426

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
components/drop-forge/claimTraitsData.ts (1)

16-23: Optional: consider guarding against accidental whitespace-only trait values.

In getClaimSeason, you already trim() the attr.value stringified result (Line 21). If attr.value could sometimes be whitespace-only, returning "" is fine; just ensure downstream callers handle empty seasons consistently. (No change requested.)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/drop-forge/claimTraitsData.ts` around lines 16 - 23, The
getClaimSeason function should guard against whitespace-only trait values by
trimming attr.value and treating an all-whitespace result as empty; update
getClaimSeason (the attr lookup using trait_type "type - season" and the return
logic) to call String(attr.value).trim(), check that the trimmed string has
length > 0, and return the trimmed value only when non-empty, otherwise return
"" so downstream callers get a consistent empty-season value.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@components/waves/create-wave/voting/CreateWaveVoting.tsx`:
- Line 19: WAVE_VOTING_LABELS is missing the ApiWaveCreditType.CardSetTdh entry
which causes enum drift with VOTING_TYPES_ORDER; add a new key for
ApiWaveCreditType.CardSetTdh to the WAVE_VOTING_LABELS map (in the same shape as
other entries) with the appropriate display label and any needed i18n key so the
enum maps consistently to a label at runtime; update any unit/types/tests that
assert keys if present and ensure imports still reference ApiWaveCreditType and
WAVE_VOTING_LABELS.

---

Nitpick comments:
In `@components/drop-forge/claimTraitsData.ts`:
- Around line 16-23: The getClaimSeason function should guard against
whitespace-only trait values by trimming attr.value and treating an
all-whitespace result as empty; update getClaimSeason (the attr lookup using
trait_type "type - season" and the return logic) to call
String(attr.value).trim(), check that the trimmed string has length > 0, and
return the trimmed value only when non-empty, otherwise return "" so downstream
callers get a consistent empty-season value.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1ded1f16-688c-4957-bb5e-e187c61d8caa

📥 Commits

Reviewing files that changed from the base of the PR and between 6d26fe3 and 550fda8.

⛔ Files ignored due to path filters (295)
  • generated/models/AcceptActionRequest.ts is excluded by !**/generated/**
  • generated/models/AddActionToProxyRequest.ts is excluded by !**/generated/**
  • generated/models/AirdropAddressResponse.ts is excluded by !**/generated/**
  • generated/models/AirdropAddressResponseTdhWallet.ts is excluded by !**/generated/**
  • generated/models/AllowlistNormalizedEntry.ts is excluded by !**/generated/**
  • generated/models/ApiAddReactionToDropRequest.ts is excluded by !**/generated/**
  • generated/models/ApiAggregatedActivity.ts is excluded by !**/generated/**
  • generated/models/ApiAggregatedActivityMemes.ts is excluded by !**/generated/**
  • generated/models/ApiAggregatedActivityPage.ts is excluded by !**/generated/**
  • generated/models/ApiArtistNameItem.ts is excluded by !**/generated/**
  • generated/models/ApiAvailableRatingCredit.ts is excluded by !**/generated/**
  • generated/models/ApiBlockItem.ts is excluded by !**/generated/**
  • generated/models/ApiBlocksPage.ts is excluded by !**/generated/**
  • generated/models/ApiBulkRateRequest.ts is excluded by !**/generated/**
  • generated/models/ApiBulkRateResponse.ts is excluded by !**/generated/**
  • generated/models/ApiBulkRateSkippedIdentity.ts is excluded by !**/generated/**
  • generated/models/ApiBulkRepRequest.ts is excluded by !**/generated/**
  • generated/models/ApiBulkRepTarget.ts is excluded by !**/generated/**
  • generated/models/ApiChangeGroupVisibility.ts is excluded by !**/generated/**
  • generated/models/ApiChangeProfileCicRating.ts is excluded by !**/generated/**
  • generated/models/ApiChangeProfileRepRating.ts is excluded by !**/generated/**
  • generated/models/ApiCicContributor.ts is excluded by !**/generated/**
  • generated/models/ApiCicContributorsPage.ts is excluded by !**/generated/**
  • generated/models/ApiCicOverview.ts is excluded by !**/generated/**
  • generated/models/ApiCollectedStats.ts is excluded by !**/generated/**
  • generated/models/ApiCollectedStatsSeason.ts is excluded by !**/generated/**
  • generated/models/ApiCommunityMemberMinimal.ts is excluded by !**/generated/**
  • generated/models/ApiCommunityMemberOverview.ts is excluded by !**/generated/**
  • generated/models/ApiCommunityMembersPage.ts is excluded by !**/generated/**
  • generated/models/ApiCommunityMetric.ts is excluded by !**/generated/**
  • generated/models/ApiCommunityMetricSample.ts is excluded by !**/generated/**
  • generated/models/ApiCommunityMetrics.ts is excluded by !**/generated/**
  • generated/models/ApiCommunityMetricsSeries.ts is excluded by !**/generated/**
  • generated/models/ApiCompleteMultipartUploadRequest.ts is excluded by !**/generated/**
  • generated/models/ApiCompleteMultipartUploadRequestPart.ts is excluded by !**/generated/**
  • generated/models/ApiCompleteMultipartUploadResponse.ts is excluded by !**/generated/**
  • generated/models/ApiConsolidatedTdh.ts is excluded by !**/generated/**
  • generated/models/ApiCreateDropPart.ts is excluded by !**/generated/**
  • generated/models/ApiCreateDropRequest.ts is excluded by !**/generated/**
  • generated/models/ApiCreateGroup.ts is excluded by !**/generated/**
  • generated/models/ApiCreateGroupDescription.ts is excluded by !**/generated/**
  • generated/models/ApiCreateMediaUploadUrlRequest.ts is excluded by !**/generated/**
  • generated/models/ApiCreateMediaUrlResponse.ts is excluded by !**/generated/**
  • generated/models/ApiCreateMentionedWave.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewProfileProxy.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewProfileProxyAllocateCicAction.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewProfileProxyAllocateRepAction.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewProfileProxyCreateWaveAction.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewProfileProxyCreateWaveParticipationDropAction.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewProfileProxyRateWaveDropAction.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewProfileProxyReadWaveAction.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWave.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveChatConfig.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveParticipationConfig.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveScope.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveVisibilityConfig.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveVotingConfig.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveVotingConfigOneOf.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveVotingConfigOneOf1.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveVotingConfigOneOf2.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveVotingConfigOneOf3.ts is excluded by !**/generated/**
  • generated/models/ApiCreateNewWaveVotingConfigOneOf4.ts is excluded by !**/generated/**
  • generated/models/ApiCreateOrUpdateProfileRequest.ts is excluded by !**/generated/**
  • generated/models/ApiCreateWaveConfig.ts is excluded by !**/generated/**
  • generated/models/ApiCreateWaveDropRequest.ts is excluded by !**/generated/**
  • generated/models/ApiCreateWaveOutcome.ts is excluded by !**/generated/**
  • generated/models/ApiCreateWaveOutcomeDistributionItem.ts is excluded by !**/generated/**
  • generated/models/ApiCuratedProfileWaveDropsPage.ts is excluded by !**/generated/**
  • generated/models/ApiCurationDrop.ts is excluded by !**/generated/**
  • generated/models/ApiCurationDropsPage.ts is excluded by !**/generated/**
  • generated/models/ApiDistributionAirdropsCsvUploadRequest.ts is excluded by !**/generated/**
  • generated/models/ApiDistributionAirdropsUploadResponse.ts is excluded by !**/generated/**
  • generated/models/ApiDrop.ts is excluded by !**/generated/**
  • generated/models/ApiDropAndDropVote.ts is excluded by !**/generated/**
  • generated/models/ApiDropBoost.ts is excluded by !**/generated/**
  • generated/models/ApiDropBoostsPage.ts is excluded by !**/generated/**
  • generated/models/ApiDropContextProfileContext.ts is excluded by !**/generated/**
  • generated/models/ApiDropCuration.ts is excluded by !**/generated/**
  • generated/models/ApiDropCurationRequest.ts is excluded by !**/generated/**
  • generated/models/ApiDropId.ts is excluded by !**/generated/**
  • generated/models/ApiDropMedia.ts is excluded by !**/generated/**
  • generated/models/ApiDropMentionedUser.ts is excluded by !**/generated/**
  • generated/models/ApiDropMetadata.ts is excluded by !**/generated/**
  • generated/models/ApiDropMetadataResponse.ts is excluded by !**/generated/**
  • generated/models/ApiDropNftLink.ts is excluded by !**/generated/**
  • generated/models/ApiDropPart.ts is excluded by !**/generated/**
  • generated/models/ApiDropRater.ts is excluded by !**/generated/**
  • generated/models/ApiDropRatingRequest.ts is excluded by !**/generated/**
  • generated/models/ApiDropReaction.ts is excluded by !**/generated/**
  • generated/models/ApiDropReferencedNFT.ts is excluded by !**/generated/**
  • generated/models/ApiDropResolvedIdentityProfile.ts is excluded by !**/generated/**
  • generated/models/ApiDropSubscriptionActions.ts is excluded by !**/generated/**
  • generated/models/ApiDropTraceItem.ts is excluded by !**/generated/**
  • generated/models/ApiDropVote.ts is excluded by !**/generated/**
  • generated/models/ApiDropWinningContext.ts is excluded by !**/generated/**
  • generated/models/ApiDropWithoutWave.ts is excluded by !**/generated/**
  • generated/models/ApiDropWithoutWavesPageWithoutCount.ts is excluded by !**/generated/**
  • generated/models/ApiDropsLeaderboardPage.ts is excluded by !**/generated/**
  • generated/models/ApiDropsPage.ts is excluded by !**/generated/**
  • generated/models/ApiFeedItem.ts is excluded by !**/generated/**
  • generated/models/ApiGroup.ts is excluded by !**/generated/**
  • generated/models/ApiGroupCicFilter.ts is excluded by !**/generated/**
  • generated/models/ApiGroupDescription.ts is excluded by !**/generated/**
  • generated/models/ApiGroupFull.ts is excluded by !**/generated/**
  • generated/models/ApiGroupLevelFilter.ts is excluded by !**/generated/**
  • generated/models/ApiGroupOwnsNft.ts is excluded by !**/generated/**
  • generated/models/ApiGroupRepFilter.ts is excluded by !**/generated/**
  • generated/models/ApiGroupTdhFilter.ts is excluded by !**/generated/**
  • generated/models/ApiIdentity.ts is excluded by !**/generated/**
  • generated/models/ApiIdentityActivity.ts is excluded by !**/generated/**
  • generated/models/ApiIdentityAndSubscriptionActions.ts is excluded by !**/generated/**
  • generated/models/ApiIdentitySubscriptionActions.ts is excluded by !**/generated/**
  • generated/models/ApiIncomingIdentitySubscriptionsPage.ts is excluded by !**/generated/**
  • generated/models/ApiIntRange.ts is excluded by !**/generated/**
  • generated/models/ApiLightDrop.ts is excluded by !**/generated/**
  • generated/models/ApiLoginRequest.ts is excluded by !**/generated/**
  • generated/models/ApiLoginResponse.ts is excluded by !**/generated/**
  • generated/models/ApiMarkDropUnreadResponse.ts is excluded by !**/generated/**
  • generated/models/ApiMediaUploadMimeType.ts is excluded by !**/generated/**
  • generated/models/ApiMemesMintStat.ts is excluded by !**/generated/**
  • generated/models/ApiMemesMintStatsPage.ts is excluded by !**/generated/**
  • generated/models/ApiMemesMintStatsTotals.ts is excluded by !**/generated/**
  • generated/models/ApiMemesMintStatsYearly.ts is excluded by !**/generated/**
  • generated/models/ApiMentionedWave.ts is excluded by !**/generated/**
  • generated/models/ApiMintMetrics.ts is excluded by !**/generated/**
  • generated/models/ApiMintMetricsPage.ts is excluded by !**/generated/**
  • generated/models/ApiMintingClaimAction.ts is excluded by !**/generated/**
  • generated/models/ApiMintingClaimActionTypesResponse.ts is excluded by !**/generated/**
  • generated/models/ApiMintingClaimActionUpdateRequest.ts is excluded by !**/generated/**
  • generated/models/ApiMintingClaimActionsResponse.ts is excluded by !**/generated/**
  • generated/models/ApiMintingClaimsPhaseTotalItem.ts is excluded by !**/generated/**
  • generated/models/ApiNft.ts is excluded by !**/generated/**
  • generated/models/ApiNftLinkData.ts is excluded by !**/generated/**
  • generated/models/ApiNftLinkMediaPreview.ts is excluded by !**/generated/**
  • generated/models/ApiNftLinkResponse.ts is excluded by !**/generated/**
  • generated/models/ApiNftMedia.ts is excluded by !**/generated/**
  • generated/models/ApiNftOwner.ts is excluded by !**/generated/**
  • generated/models/ApiNftOwnerPage.ts is excluded by !**/generated/**
  • generated/models/ApiNftsPage.ts is excluded by !**/generated/**
  • generated/models/ApiNonceResponse.ts is excluded by !**/generated/**
  • generated/models/ApiNotification.ts is excluded by !**/generated/**
  • generated/models/ApiNotificationsResponse.ts is excluded by !**/generated/**
  • generated/models/ApiOutgoingIdentitySubscriptionsPage.ts is excluded by !**/generated/**
  • generated/models/ApiOwnerBalance.ts is excluded by !**/generated/**
  • generated/models/ApiOwnerBalanceMemes.ts is excluded by !**/generated/**
  • generated/models/ApiOwnerBalancePage.ts is excluded by !**/generated/**
  • generated/models/ApiPageBase.ts is excluded by !**/generated/**
  • generated/models/ApiPageWithNextUriBase.ts is excluded by !**/generated/**
  • generated/models/ApiPageWithoutCount.ts is excluded by !**/generated/**
  • generated/models/ApiPaymentDetails.ts is excluded by !**/generated/**
  • generated/models/ApiProfileMin.ts is excluded by !**/generated/**
  • generated/models/ApiProfileMinsPage.ts is excluded by !**/generated/**
  • generated/models/ApiProfileProxy.ts is excluded by !**/generated/**
  • generated/models/ApiProfileProxyAction.ts is excluded by !**/generated/**
  • generated/models/ApiProfileRepCategorySummary.ts is excluded by !**/generated/**
  • generated/models/ApiProfileWave.ts is excluded by !**/generated/**
  • generated/models/ApiPushNotificationDevice.ts is excluded by !**/generated/**
  • generated/models/ApiPushNotificationSettings.ts is excluded by !**/generated/**
  • generated/models/ApiPushNotificationSettingsUpdate.ts is excluded by !**/generated/**
  • generated/models/ApiQuotedDrop.ts is excluded by !**/generated/**
  • generated/models/ApiQuotedDropResponse.ts is excluded by !**/generated/**
  • generated/models/ApiRatingWithProfileInfoAndLevel.ts is excluded by !**/generated/**
  • generated/models/ApiRatingWithProfileInfoAndLevelPage.ts is excluded by !**/generated/**
  • generated/models/ApiRedeemRefreshTokenRequest.ts is excluded by !**/generated/**
  • generated/models/ApiRedeemRefreshTokenResponse.ts is excluded by !**/generated/**
  • generated/models/ApiRegisterPushNotificationTokenRequest.ts is excluded by !**/generated/**
  • generated/models/ApiRepCategoriesPage.ts is excluded by !**/generated/**
  • generated/models/ApiRepCategory.ts is excluded by !**/generated/**
  • generated/models/ApiRepContributor.ts is excluded by !**/generated/**
  • generated/models/ApiRepContributorsPage.ts is excluded by !**/generated/**
  • generated/models/ApiRepOverview.ts is excluded by !**/generated/**
  • generated/models/ApiRepRating.ts is excluded by !**/generated/**
  • generated/models/ApiReplyToDrop.ts is excluded by !**/generated/**
  • generated/models/ApiReplyToDropResponse.ts is excluded by !**/generated/**
  • generated/models/ApiSeizeSettings.ts is excluded by !**/generated/**
  • generated/models/ApiSetPinnedDropRequest.ts is excluded by !**/generated/**
  • generated/models/ApiSetProfileWaveRequest.ts is excluded by !**/generated/**
  • generated/models/ApiStartMultipartMediaUploadResponse.ts is excluded by !**/generated/**
  • generated/models/ApiTargetAndSubscriptionActions.ts is excluded by !**/generated/**
  • generated/models/ApiTdhEdition.ts is excluded by !**/generated/**
  • generated/models/ApiTdhEditionsPage.ts is excluded by !**/generated/**
  • generated/models/ApiTokenTdh.ts is excluded by !**/generated/**
  • generated/models/ApiTokenTdhRank.ts is excluded by !**/generated/**
  • generated/models/ApiTransaction.ts is excluded by !**/generated/**
  • generated/models/ApiTransactionPage.ts is excluded by !**/generated/**
  • generated/models/ApiUndiscoveredDrop.ts is excluded by !**/generated/**
  • generated/models/ApiUpcomingMemeSubscriptionStatus.ts is excluded by !**/generated/**
  • generated/models/ApiUpdateDropRequest.ts is excluded by !**/generated/**
  • generated/models/ApiUpdateProxyActionRequest.ts is excluded by !**/generated/**
  • generated/models/ApiUpdateWaveDecisionPause.ts is excluded by !**/generated/**
  • generated/models/ApiUpdateWaveNotificationPreferencesRequest.ts is excluded by !**/generated/**
  • generated/models/ApiUpdateWaveParticipationConfig.ts is excluded by !**/generated/**
  • generated/models/ApiUpdateWaveRequest.ts is excluded by !**/generated/**
  • generated/models/ApiUploadItem.ts is excluded by !**/generated/**
  • generated/models/ApiUploadPartOfMultipartUploadRequest.ts is excluded by !**/generated/**
  • generated/models/ApiUploadPartOfMultipartUploadResponse.ts is excluded by !**/generated/**
  • generated/models/ApiUploadsPage.ts is excluded by !**/generated/**
  • generated/models/ApiWallet.ts is excluded by !**/generated/**
  • generated/models/ApiWave.ts is excluded by !**/generated/**
  • generated/models/ApiWaveChatConfig.ts is excluded by !**/generated/**
  • generated/models/ApiWaveConfig.ts is excluded by !**/generated/**
  • generated/models/ApiWaveContributorOverview.ts is excluded by !**/generated/**
  • generated/models/ApiWaveCreditNft.ts is excluded by !**/generated/**
  • generated/models/ApiWaveCreditType.ts is excluded by !**/generated/**
  • generated/models/ApiWaveCuration.ts is excluded by !**/generated/**
  • generated/models/ApiWaveCurationRequest.ts is excluded by !**/generated/**
  • generated/models/ApiWaveDecision.ts is excluded by !**/generated/**
  • generated/models/ApiWaveDecisionAward.ts is excluded by !**/generated/**
  • generated/models/ApiWaveDecisionPause.ts is excluded by !**/generated/**
  • generated/models/ApiWaveDecisionWinner.ts is excluded by !**/generated/**
  • generated/models/ApiWaveDecisionsPage.ts is excluded by !**/generated/**
  • generated/models/ApiWaveDecisionsStrategy.ts is excluded by !**/generated/**
  • generated/models/ApiWaveDropsFeed.ts is excluded by !**/generated/**
  • generated/models/ApiWaveLog.ts is excluded by !**/generated/**
  • generated/models/ApiWaveMetrics.ts is excluded by !**/generated/**
  • generated/models/ApiWaveMin.ts is excluded by !**/generated/**
  • generated/models/ApiWaveNotificationPreferences.ts is excluded by !**/generated/**
  • generated/models/ApiWaveOutcome.ts is excluded by !**/generated/**
  • generated/models/ApiWaveOutcomeDistributionItem.ts is excluded by !**/generated/**
  • generated/models/ApiWaveOutcomeDistributionItemsPage.ts is excluded by !**/generated/**
  • generated/models/ApiWaveOutcomesPage.ts is excluded by !**/generated/**
  • generated/models/ApiWaveParticipationConfig.ts is excluded by !**/generated/**
  • generated/models/ApiWaveParticipationSubmissionStrategy.ts is excluded by !**/generated/**
  • generated/models/ApiWaveParticipationSubmissionStrategyIdentityConf.ts is excluded by !**/generated/**
  • generated/models/ApiWaveRequiredMetadata.ts is excluded by !**/generated/**
  • generated/models/ApiWaveScope.ts is excluded by !**/generated/**
  • generated/models/ApiWaveSubscriptionActions.ts is excluded by !**/generated/**
  • generated/models/ApiWaveVisibilityConfig.ts is excluded by !**/generated/**
  • generated/models/ApiWaveVoter.ts is excluded by !**/generated/**
  • generated/models/ApiWaveVotersPage.ts is excluded by !**/generated/**
  • generated/models/ApiWaveVotingConfig.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhCollection.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhCollectionsPage.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhContribution.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhContributionsPage.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhCreateGrant.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhGlobalStats.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhGrant.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhGrantToken.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhGrantTokensPage.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhGrantUpdateRequest.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhGrantee.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhGranteesPage.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhGrantsPage.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhStats.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhToken.ts is excluded by !**/generated/**
  • generated/models/ApiXTdhTokensPage.ts is excluded by !**/generated/**
  • generated/models/CreateDirectMessageWaveRequest.ts is excluded by !**/generated/**
  • generated/models/DistributionNormalized.ts is excluded by !**/generated/**
  • generated/models/DistributionNormalizedPage.ts is excluded by !**/generated/**
  • generated/models/DistributionOverview.ts is excluded by !**/generated/**
  • generated/models/DistributionPhasesPage.ts is excluded by !**/generated/**
  • generated/models/DistributionPhoto.ts is excluded by !**/generated/**
  • generated/models/DistributionPhotoCompleteRequest.ts is excluded by !**/generated/**
  • generated/models/DistributionPhotoCompleteRequestPhoto.ts is excluded by !**/generated/**
  • generated/models/DistributionPhotoCompleteResponse.ts is excluded by !**/generated/**
  • generated/models/DistributionPhotosPage.ts is excluded by !**/generated/**
  • generated/models/MintingClaim.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAnimationDetails.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAnimationDetailsGlb.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAnimationDetailsHtml.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAnimationDetailsVideo.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAttribute.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAttributeValue.ts is excluded by !**/generated/**
  • generated/models/MintingClaimImageDetails.ts is excluded by !**/generated/**
  • generated/models/MintingClaimUpdateRequest.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsPageResponse.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsProofItem.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsProofsResponse.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsResponse.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsRootItem.ts is excluded by !**/generated/**
  • generated/models/NFTFinalSubscription.ts is excluded by !**/generated/**
  • generated/models/NFTFinalSubscriptionUpload.ts is excluded by !**/generated/**
  • generated/models/NFTFinalSubscriptionUploadPage.ts is excluded by !**/generated/**
  • generated/models/NFTSubscription.ts is excluded by !**/generated/**
  • generated/models/ObjectSerializer.ts is excluded by !**/generated/**
  • generated/models/PhaseAirdrop.ts is excluded by !**/generated/**
  • generated/models/RedeemedSubscription.ts is excluded by !**/generated/**
  • generated/models/RedeemedSubscriptionCounts.ts is excluded by !**/generated/**
  • generated/models/RedeemedSubscriptionCountsPage.ts is excluded by !**/generated/**
  • generated/models/RedeemedSubscriptionPage.ts is excluded by !**/generated/**
  • generated/models/SubscribeAllEditionsResponse.ts is excluded by !**/generated/**
  • generated/models/SubscriptionCountResponse.ts is excluded by !**/generated/**
  • generated/models/SubscriptionCounts.ts is excluded by !**/generated/**
  • generated/models/SubscriptionDetails.ts is excluded by !**/generated/**
  • generated/models/SubscriptionLog.ts is excluded by !**/generated/**
  • generated/models/SubscriptionLogPage.ts is excluded by !**/generated/**
  • generated/models/SubscriptionModeResponse.ts is excluded by !**/generated/**
  • generated/models/SubscriptionResponse.ts is excluded by !**/generated/**
  • generated/models/SubscriptionTopUp.ts is excluded by !**/generated/**
  • generated/models/SubscriptionTopUpPage.ts is excluded by !**/generated/**
  • generated/models/UpdateSubscribeAllEditionsRequest.ts is excluded by !**/generated/**
  • generated/models/UpdateSubscriptionCountRequest.ts is excluded by !**/generated/**
  • generated/models/UpdateSubscriptionModeRequest.ts is excluded by !**/generated/**
  • generated/models/UpdateSubscriptionRequest.ts is excluded by !**/generated/**
📒 Files selected for processing (5)
  • components/drop-forge/claimTraitsData.ts
  • components/waves/create-wave/voting/CreateWaveVoting.tsx
  • components/waves/memes/submission/utils/buildPreviewDrop.ts
  • components/waves/specs/WaveRating.tsx
  • components/waves/utils/getOptimisticDrop.ts

Comment thread components/waves/create-wave/voting/CreateWaveVoting.tsx
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 550fda8139

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread generated/models/ApiWaveCreditType.ts
Comment thread generated/models/ApiWaveMin.ts
Comment thread generated/models/ApiCreateMediaUploadUrlRequest.ts
prxt6529 and others added 2 commits April 28, 2026 09:20
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: Simo <simo@6529.io>
@sonarqubecloud
Copy link
Copy Markdown

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
__tests__/components/waves/create-wave/services/multiPartUpload.test.ts (2)

187-211: Progress test does not validate percentages yet.

The test title says “correct percentage,” but it only checks that the callback was called. Please assert expected progress values to avoid false positives.

Proposed assertion tightening
-      // Verify progress was called
-      expect(progressSpy).toHaveBeenCalled();
+      expect(progressSpy).toHaveBeenCalledTimes(2);
+      expect(progressSpy).toHaveBeenNthCalledWith(1, 50);
+      expect(progressSpy).toHaveBeenNthCalledWith(2, 100);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@__tests__/components/waves/create-wave/services/multiPartUpload.test.ts`
around lines 187 - 211, The test titled "calls onProgress with correct
percentage" currently only checks that the onProgress callback (progressSpy) was
invoked; update the assertions to validate the actual percentage values passed
by multiPartUpload by asserting progressSpy was called with 50 and then 100 (or
equivalent percentage values) after the mocked mockAxios.put triggers
config.onUploadProgress with {loaded:50,total:100} and {loaded:100,total:100};
reference the multiPartUpload invocation, mockAxios.put mockImplementation, and
progressSpy to add assertions like checking progressSpy.calls or using
toHaveBeenNthCalledWith to verify the first call received 50 and the second call
received 100.

401-405: Use subset matching for retry options to reduce brittleness.

This strict object match will fail if non-breaking retry options are added. Prefer matching required fields only.

Proposed matcher update
-      expect(mockPRetry).toHaveBeenCalledWith(expect.any(Function), {
-        retries: 3,
-        factor: 2,
-        minTimeout: 1000,
-      });
+      expect(mockPRetry).toHaveBeenCalledWith(
+        expect.any(Function),
+        expect.objectContaining({
+          retries: 3,
+          factor: 2,
+          minTimeout: 1000,
+        })
+      );
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@__tests__/components/waves/create-wave/services/multiPartUpload.test.ts`
around lines 401 - 405, The test's assertion using mockPRetry is too strict;
update the assertion for mockPRetry in the test (the expect call referencing
mockPRetry) to use subset matching (e.g., expect.objectContaining) so it only
asserts the required retry options (retries, factor, minTimeout) instead of
matching the entire options object exactly, reducing brittleness if additional
options are added.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@__tests__/components/waves/create-wave/services/multiPartUpload.test.ts`:
- Around line 187-211: The test titled "calls onProgress with correct
percentage" currently only checks that the onProgress callback (progressSpy) was
invoked; update the assertions to validate the actual percentage values passed
by multiPartUpload by asserting progressSpy was called with 50 and then 100 (or
equivalent percentage values) after the mocked mockAxios.put triggers
config.onUploadProgress with {loaded:50,total:100} and {loaded:100,total:100};
reference the multiPartUpload invocation, mockAxios.put mockImplementation, and
progressSpy to add assertions like checking progressSpy.calls or using
toHaveBeenNthCalledWith to verify the first call received 50 and the second call
received 100.
- Around line 401-405: The test's assertion using mockPRetry is too strict;
update the assertion for mockPRetry in the test (the expect call referencing
mockPRetry) to use subset matching (e.g., expect.objectContaining) so it only
asserts the required retry options (retries, factor, minTimeout) instead of
matching the entire options object exactly, reducing brittleness if additional
options are added.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4920efc6-5f11-457d-9811-c75a777e8765

📥 Commits

Reviewing files that changed from the base of the PR and between 550fda8 and 2b91301.

📒 Files selected for processing (3)
  • __tests__/components/waves/create-wave/services/multiPartUpload.test.ts
  • components/drop-forge/claimTraitsData.ts
  • components/drop-forge/launch/DropForgeLaunchClaimPageClient.view.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • components/drop-forge/claimTraitsData.ts

@simo6529 simo6529 merged commit 5d1508b into main Apr 28, 2026
8 checks passed
@simo6529 simo6529 deleted the fix-build-270426 branch April 28, 2026 08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants