// @flow import React from 'react'; import { withRouter } from 'react-router'; import * as MODALS from 'constants/modal_types'; import ModalError from 'modal/modalError'; import ModalDownloading from 'modal/modalDownloading'; import ModalAutoGenerateThumbnail from 'modal/modalAutoGenerateThumbnail'; import ModalAutoUpdateDownloaded from 'modal/modalAutoUpdateDownloaded'; import ModalUpgrade from 'modal/modalUpgrade'; import ModalFirstReward from 'modal/modalFirstReward'; import ModalRemoveFile from 'modal/modalRemoveFile'; import ModalTransactionFailed from 'modal/modalTransactionFailed'; import ModalFileTimeout from 'modal/modalFileTimeout'; import ModalAffirmPurchase from 'modal/modalAffirmPurchase'; import ModalRevokeClaim from 'modal/modalRevokeClaim'; import ModalPhoneCollection from 'modal/modalPhoneCollection'; import ModalFirstSubscription from 'modal/modalFirstSubscription'; import ModalConfirmTransaction from 'modal/modalConfirmTransaction'; import ModalSocialShare from 'modal/modalSocialShare'; import ModalSendTip from 'modal/modalSendTip'; import ModalPublish from 'modal/modalPublish'; import ModalPublishPreview from 'modal/modalPublishPreview'; import ModalOpenExternalResource from 'modal/modalOpenExternalResource'; import ModalConfirmThumbnailUpload from 'modal/modalConfirmThumbnailUpload'; import ModalWalletEncrypt from 'modal/modalWalletEncrypt'; import ModalWalletDecrypt from 'modal/modalWalletDecrypt'; import ModalWalletUnlock from 'modal/modalWalletUnlock'; import ModalRewardCode from 'modal/modalRewardCode'; import ModalPasswordUnsave from 'modal/modalPasswordUnsave'; import ModalCommentAcknowledgement from 'modal/modalCommentAcknowledgement'; import ModalYoutubeWelcome from 'modal/modalYoutubeWelcome'; import ModalSetReferrer from 'modal/modalSetReferrer'; import ModalSignOut from 'modal/modalSignOut'; import ModalSupportsLiquidate from 'modal/modalSupportsLiquidate'; import ModalConfirmAge from 'modal/modalConfirmAge'; import ModalFileSelection from 'modal/modalFileSelection'; import ModalSyncEnable from 'modal/modalSyncEnable'; import ModalImageUpload from 'modal/modalImageUpload'; import ModalMobileSearch from 'modal/modalMobileSearch'; import ModalViewImage from 'modal/modalViewImage'; import ModalMassTipsUnlock from 'modal/modalMassTipUnlock'; import ModalRemoveBtcSwapAddress from 'modal/modalRemoveBtcSwapAddress'; import ModalClaimCollectionAdd from 'modal/modalClaimCollectionAdd'; import ModalDeleteCollection from 'modal/modalRemoveCollection'; type Props = { modal: { id: string, modalProps: {} }, error: { message: string }, location: { pathname: string }, hideModal: () => void, }; function ModalRouter(props: Props) { const { modal, error, location, hideModal } = props; const { pathname } = location; React.useEffect(() => { hideModal(); }, [pathname, hideModal]); if (error) { return <ModalError {...error} />; } if (!modal) { return null; } const { id, modalProps } = modal; switch (id) { case MODALS.UPGRADE: return <ModalUpgrade {...modalProps} />; case MODALS.DOWNLOADING: return <ModalDownloading {...modalProps} />; case MODALS.AUTO_GENERATE_THUMBNAIL: return <ModalAutoGenerateThumbnail {...modalProps} />; case MODALS.AUTO_UPDATE_DOWNLOADED: return <ModalAutoUpdateDownloaded {...modalProps} />; case MODALS.ERROR: return <ModalError {...modalProps} />; case MODALS.FILE_TIMEOUT: return <ModalFileTimeout {...modalProps} />; case MODALS.FIRST_REWARD: return <ModalFirstReward {...modalProps} />; case MODALS.TRANSACTION_FAILED: return <ModalTransactionFailed {...modalProps} />; case MODALS.CONFIRM_FILE_REMOVE: return <ModalRemoveFile {...modalProps} />; case MODALS.AFFIRM_PURCHASE: return <ModalAffirmPurchase {...modalProps} />; case MODALS.CONFIRM_CLAIM_REVOKE: return <ModalRevokeClaim {...modalProps} />; case MODALS.PHONE_COLLECTION: return <ModalPhoneCollection {...modalProps} />; case MODALS.FIRST_SUBSCRIPTION: return <ModalFirstSubscription {...modalProps} />; case MODALS.SEND_TIP: return <ModalSendTip {...modalProps} />; case MODALS.SOCIAL_SHARE: return <ModalSocialShare {...modalProps} />; case MODALS.PUBLISH: return <ModalPublish {...modalProps} />; case MODALS.PUBLISH_PREVIEW: return <ModalPublishPreview {...modalProps} />; case MODALS.CONFIRM_EXTERNAL_RESOURCE: return <ModalOpenExternalResource {...modalProps} />; case MODALS.CONFIRM_TRANSACTION: return <ModalConfirmTransaction {...modalProps} />; case MODALS.CONFIRM_THUMBNAIL_UPLOAD: return <ModalConfirmThumbnailUpload {...modalProps} />; case MODALS.WALLET_ENCRYPT: return <ModalWalletEncrypt {...modalProps} />; case MODALS.WALLET_DECRYPT: return <ModalWalletDecrypt {...modalProps} />; case MODALS.WALLET_UNLOCK: return <ModalWalletUnlock {...modalProps} />; case MODALS.WALLET_PASSWORD_UNSAVE: return <ModalPasswordUnsave {...modalProps} />; case MODALS.REWARD_GENERATED_CODE: return <ModalRewardCode {...modalProps} />; case MODALS.COMMENT_ACKNOWEDGEMENT: return <ModalCommentAcknowledgement {...modalProps} />; case MODALS.YOUTUBE_WELCOME: return <ModalYoutubeWelcome />; case MODALS.SET_REFERRER: return <ModalSetReferrer {...modalProps} />; case MODALS.SIGN_OUT: return <ModalSignOut {...modalProps} />; case MODALS.CONFIRM_AGE: return <ModalConfirmAge {...modalProps} />; case MODALS.FILE_SELECTION: return <ModalFileSelection {...modalProps} />; case MODALS.LIQUIDATE_SUPPORTS: return <ModalSupportsLiquidate {...modalProps} />; case MODALS.IMAGE_UPLOAD: return <ModalImageUpload {...modalProps} />; case MODALS.SYNC_ENABLE: return <ModalSyncEnable {...modalProps} />; case MODALS.MOBILE_SEARCH: return <ModalMobileSearch {...modalProps} />; case MODALS.VIEW_IMAGE: return <ModalViewImage {...modalProps} />; case MODALS.MASS_TIP_UNLOCK: return <ModalMassTipsUnlock {...modalProps} />; case MODALS.CONFIRM_REMOVE_BTC_SWAP_ADDRESS: return <ModalRemoveBtcSwapAddress {...modalProps} />; case MODALS.COLLECTION_ADD: return <ModalClaimCollectionAdd {...modalProps} />; case MODALS.COLLECTION_DELETE: return <ModalDeleteCollection {...modalProps} />; default: return null; } } export default withRouter(ModalRouter);