import { AssetLevelEnum } from '@bit-ui-libs/common'; import { useQuery } from '@tanstack/react-query'; import { useMemo } from 'react'; import ContentLoader, { Rect } from 'react-content-loader/native'; import { useTranslation } from 'react-i18next'; import { Linking, ScrollView, View } from 'react-native'; import { Button, Text } from '../../../components'; import { PUBLIC_TOKEN_GRADING_URL, tw } from '../../../core'; import { BottomModal } from '../../../layouts'; import { useChainService, useServicesStore } from '../../../stores'; import { createModalStore } from '../../../utils'; import { BeingIdLevel, DeviceLevel } from '../../user'; import { TokenLevel } from './TokenLevel'; export const useTokenLevelsModal = createModalStore(); interface TokenLevelsModalProps { eventId: string; onClose?: () => void; } export function TokenLevelsModal(props: TokenLevelsModalProps) { const { eventId, onClose } = props; // const logger = useLogger({ namespace: 'TokenLevelsModal' }); const { t } = useTranslation(); const chainService = useChainService(); const userService = useServicesStore((s) => s.endUser); const { visible, hide } = useTokenLevelsModal(); const contentLoader = useMemo( () => ( ), [] ); const { data, isLoading } = useQuery({ queryKey: ['token-levels', eventId], queryFn: async () => { // logger.debug('Getting event data for token, eventId:', eventId); const event = await chainService.getEvent(eventId); const asset = await chainService.getDetailsByEvent(eventId); const owner = await userService.getBeingId(asset.ownerId); return { beingIdLevel: owner.level, hardwareLevel: event.device.hardwareLevel, assetLevel: asset.level, }; }, enabled: !!eventId, }); const levels: Record = t('collection.tokenLevel', { returnObjects: true }); return ( Bio-ID Level {isLoading ? contentLoader : } Hardware Level {isLoading ? contentLoader : } Asset Levels {(Object.keys(levels) as AssetLevelEnum[]).map((level) => ( {t(`collection.tokenLevel.${level}`)} ))} ); }