Skip to content
Snippets Groups Projects
ChallengeCard.tsx 1.89 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { UserChallengeState } from 'enum/userChallenge.enum'
    import { UserChallenge } from 'models'
    
    import React from 'react'
    
    import ChallengeCardDone from './ChallengeCardDone'
    import ChallengeCardLocked from './ChallengeCardLocked'
    import ChallengeCardOnGoing from './ChallengeCardOnGoing'
    import ChallengeCardUnlocked from './ChallengeCardUnlocked'
    import './challengeCard.scss'
    
    import ChallengeCardLast from './ChallengeCardLast'
    
    interface ChallengeCardProps {
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
      indexSlider: number
    
      cardHeight: number
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
      moveToSlide: (slideIndex: number) => void
    
    const ChallengeCard: React.FC<ChallengeCardProps> = ({
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
      moveToSlide,
    
    }: ChallengeCardProps) => {
    
      const renderCard = (userChallenge: UserChallenge | undefined) => {
        if (!userChallenge || isChallengeCardLast) return <ChallengeCardLast />
        switch (userChallenge.state) {
    
          case UserChallengeState.LOCKED:
    
            return <ChallengeCardLocked userChallenge={userChallenge} />
    
          case UserChallengeState.UNLOCKED:
    
            return <ChallengeCardUnlocked userChallenge={userChallenge} />
    
          case UserChallengeState.DONE:
    
            return <ChallengeCardDone userChallenge={userChallenge} />
    
          case UserChallengeState.ONGOING:
    
    Yoan VALLET's avatar
    Yoan VALLET committed
          case UserChallengeState.DUEL:
    
            return <ChallengeCardOnGoing userChallenge={userChallenge} />
    
          default:
    
            return <ChallengeCardLocked userChallenge={userChallenge} />
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
          onClick={() => moveToSlide(index)}
    
          className={indexSlider === index ? 'slide active' : 'slide inactive'}
    
            minWidth: `${cardWidth}px`,
            maxWidth: `${cardWidth}px`,
    
            height: `${cardHeight}px`,
    
    export default ChallengeCard