import React, { useEffect, useState } from 'react' import { useRouter } from 'next/router' import { Trans, useTranslation } from 'react-i18next' import { Dialog } from '~components/common/Dialog' import DialogContent from '~components/common/DialogContent' import DialogFooter from '~components/common/DialogFooter' import Button from '~components/common/Button' import Overlay from '~components/common/Overlay' import mapWeaponSeries from '~utils/mapWeaponSeries' import styles from './index.module.scss' interface Props { open: boolean incomingWeapon: Weapon conflictingWeapons: GridWeapon[] desiredPosition: number resolveConflict: () => void resetConflict: () => void } const WeaponConflictModal = (props: Props) => { // Localization const router = useRouter() const { t } = useTranslation('common') const locale = router.locale && ['en', 'ja'].includes(router.locale) ? router.locale : 'en' // States const [open, setOpen] = useState(false) // Refs const footerRef = React.createRef() useEffect(() => { setOpen(props.open) }, [setOpen, props.open]) function imageUrl(weapon?: Weapon) { return `${process.env.NEXT_PUBLIC_SIERO_IMG_URL}/weapon-square/${weapon?.granblue_id}.jpg` } function openChange(open: boolean) { setOpen(open) props.resetConflict() } function close() { setOpen(false) props.resetConflict() } const infoString = () => { const series = props.incomingWeapon.series const seriesSlug = t(`series.${mapWeaponSeries(series)}`) return [2, 3, 34].includes(series) ? ( ) : ( Only one weapon from the {{ series: seriesSlug }} Series can be included in each party. Do you want to change your weapons? ) } return ( event.preventDefault()} onEscapeKeyDown={close} >

{infoString()}

    {props.conflictingWeapons?.map((weapon, i) => (
  • {weapon.object.name[locale]} {weapon.object.name[locale]}
  • ))}
{props.incomingWeapon?.name[locale]} {props.incomingWeapon?.name[locale]}
,
) } export default WeaponConflictModal