Skip to content

Commit 1b94665

Browse files
dylanjeffersclaude
andcommitted
Modals (Wave D batch 5): NiceModal-wrap rewards modals
- TopAPIModal (APIRewardsExplainer) - ClaimAllRewardsModal Same migration shape: NiceModal.create wrap, useModal() for visibility, registerNiceModalId, side-effect import, removed from Modals.tsx. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 0bcce69 commit 1b94665

4 files changed

Lines changed: 27 additions & 14 deletions

File tree

packages/web/src/app/registerNiceModals.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import 'components/publish-confirmation-modal/PublishConfirmationModal'
2828
import 'components/receive-tokens-modal/ReceiveTokensModal'
2929
import 'components/replace-track-confirmation-modal/ReplaceTrackConfirmationModal'
3030
import 'components/replace-track-progress-modal/ReplaceTrackProgressModal'
31+
import 'components/rewards/modals/ClaimAllRewardsModal'
32+
import 'components/rewards/modals/TopAPI'
3133
import 'components/share-modal/ShareModal'
3234
import 'components/transaction-details-modal/TransactionDetailsModal'
3335
import 'components/upload-confirmation-modal/UploadConfirmationModal'

packages/web/src/components/rewards/modals/ClaimAllRewardsModal.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
formatCooldownChallenges,
55
useChallengeCooldownSchedule
66
} from '@audius/common/hooks'
7+
import { registerNiceModalId } from '@audius/common/services'
78
import {
89
ClaimStatus,
910
audioRewardsPageActions,
@@ -23,9 +24,9 @@ import {
2324
ProgressBar,
2425
Text
2526
} from '@audius/harmony'
27+
import NiceModal, { useModal } from '@ebay/nice-modal-react'
2628
import { useDispatch, useSelector } from 'react-redux'
2729

28-
import { useModalState } from 'common/hooks/useModalState'
2930
import LoadingSpinner from 'components/loading-spinner/LoadingSpinner'
3031
import { SummaryTable } from 'components/summary-table'
3132
import { ToastContext } from 'components/toast/ToastContext'
@@ -47,10 +48,17 @@ const { claimAllChallengeRewards, resetAndCancelClaimReward } =
4748
audioRewardsPageActions
4849
const { getClaimStatus } = audioRewardsPageSelectors
4950

50-
export const ClaimAllRewardsModal = () => {
51+
export const ClaimAllRewardsModal = NiceModal.create(() => {
5152
const dispatch = useDispatch()
5253
const { toast } = useContext(ToastContext)
53-
const [isOpen, setOpen] = useModalState('ClaimAllRewards')
54+
const modal = useModal()
55+
const isOpen = modal.visible
56+
const setOpen = useCallback(
57+
(open: boolean) => {
58+
if (!open) modal.hide()
59+
},
60+
[modal]
61+
)
5462
const claimStatus = useSelector(getClaimStatus)
5563
const { claimableAmount, claimableChallenges, cooldownChallenges, summary } =
5664
useChallengeCooldownSchedule({
@@ -189,4 +197,7 @@ export const ClaimAllRewardsModal = () => {
189197
</ModalContent>
190198
</Modal>
191199
)
192-
}
200+
})
201+
202+
NiceModal.register('ClaimAllRewards', ClaimAllRewardsModal)
203+
registerNiceModalId('ClaimAllRewards')

packages/web/src/components/rewards/modals/TopAPI.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { useCallback } from 'react'
22

3+
import { registerNiceModalId } from '@audius/common/services'
34
import { route } from '@audius/common/utils'
45
import { Button, IconArrowRight as IconArrow } from '@audius/harmony'
6+
import NiceModal, { useModal } from '@ebay/nice-modal-react'
57

68
import AudiusAPI from 'assets/img/audiusAPI.png'
7-
import { useModalState } from 'common/hooks/useModalState'
89
import ModalDrawer from 'components/modal-drawer/ModalDrawer'
910
import { useWithMobileStyle } from 'hooks/useWithMobileStyle'
1011

@@ -42,13 +43,13 @@ const TopAPIBody = () => {
4243
)
4344
}
4445

45-
const TopAPIModal = () => {
46-
const [isOpen, setOpen] = useModalState('APIRewardsExplainer')
46+
const TopAPIModal = NiceModal.create(() => {
47+
const modal = useModal()
4748

4849
return (
4950
<ModalDrawer
50-
isOpen={isOpen}
51-
onClose={() => setOpen(false)}
51+
isOpen={modal.visible}
52+
onClose={() => modal.hide()}
5253
title={messages.modalTitle}
5354
isFullscreen={false}
5455
showTitleHeader
@@ -57,6 +58,9 @@ const TopAPIModal = () => {
5758
<TopAPIBody />
5859
</ModalDrawer>
5960
)
60-
}
61+
})
62+
63+
NiceModal.register('APIRewardsExplainer', TopAPIModal)
64+
registerNiceModalId('APIRewardsExplainer')
6165

6266
export default TopAPIModal

packages/web/src/pages/modals/Modals.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ import FirstUploadModal from 'components/first-upload-modal/FirstUploadModal'
1414
import { HostRemixContestModal } from 'components/host-remix-contest-modal/HostRemixContestModal'
1515
import { PasswordResetModal } from 'components/password-reset/PasswordResetModal'
1616
import { PremiumContentPurchaseModal } from 'components/premium-content-purchase-modal/PremiumContentPurchaseModal'
17-
import { ClaimAllRewardsModal } from 'components/rewards/modals/ClaimAllRewardsModal'
18-
import TopAPIModal from 'components/rewards/modals/TopAPI'
1917
import { SendTokensModal } from 'components/send-tokens-modal'
2018
import ConnectedMobileOverflowModal from 'components/track-overflow-modal/ConnectedMobileOverflowModal'
2119
import UnfollowConfirmationModal from 'components/unfollow-confirmation-modal/UnfollowConfirmationModal'
@@ -48,9 +46,7 @@ const commonModalsMap: { [Modal in ModalTypes]?: ComponentType } = {
4846
HostRemixContest: HostRemixContestModal,
4947
InboxSettings: InboxSettingsModal,
5048
CommentSettings: CommentSettingsModal,
51-
APIRewardsExplainer: TopAPIModal,
5249
ChallengeRewards: ChallengeRewardsModal,
53-
ClaimAllRewards: ClaimAllRewardsModal,
5450
TransferAudioMobileWarning: TransferAudioMobileDrawer,
5551
BrowserPushPermissionConfirmation: BrowserPushConfirmationModal,
5652
PremiumContentPurchaseModal,

0 commit comments

Comments
 (0)