{"version":3,"file":"index.698f8ca5.js","sources":["../../../app/frontend/entrypoints/page/home/section/nfts/index.tsx"],"sourcesContent":["import { useState, useEffect } from 'react'\nimport axios, { AxiosResponse, AxiosError } from 'axios'\n\nimport { useRecoilState } from 'recoil'\nimport { playQueueState } from '../../../../../src/atoms/PlayQueueAtom'\n\nimport Nft from './nft'\n\ntype NFT = {\n chain_id: number\n contract_address: string\n token_id: string\n name: string\n image: string\n trial_sound: string\n sound: string\n artist_name: string\n artist_public_id: string\n genres: Genre[]\n}\n\ntype Props = {\n genreId: string\n}\n\nfunction HomeNfts(props: Props) {\n const [nfts, setNfts] = useState()\n const [, setPlayList] = useRecoilState(playQueueState)\n\n useEffect(() => {\n fetchHomeNfts()\n }, [])\n\n const fetchHomeNfts = () => {\n axios({\n method: 'GET',\n url: `${import.meta.env.VITE_API_BASE_URI}/api/v1/home/nfts${\n props.genreId !== 'recent' ? '' : '/recent'\n }`,\n params: {\n genre_id: props.genreId,\n },\n })\n .then((response: AxiosResponse<{ nfts: NFT[] }>) => {\n // trial_soundをsoundに入れる\n const fetchNfts = response.data.nfts.map((nft) => {\n nft.sound = nft.trial_sound\n return nft\n })\n setNfts(fetchNfts)\n })\n .catch((error: AxiosError<{ error: string }>) => {\n console.error('error', error)\n })\n }\n\n const shapingPlayList = (target: {\n chainId: number\n tokenId: string\n contractAddress: string\n }): void => {\n if (!target) return\n\n type MusicNft = {\n chain_id: number\n contract_address: string\n token_id: string\n name: string\n image: string\n sound: string\n artist_name: string\n artist_public_id: string\n }\n\n let searchFlag = false\n const targetBeforeNfts = [] as Array\n const targetAfterNfts = [] as Array\n\n nfts &&\n nfts.map((nft) => {\n if (\n !searchFlag &&\n (nft['chain_id'] !== target.chainId ||\n nft['token_id'] !== String(target.tokenId) ||\n nft['contract_address'] !== target.contractAddress)\n ) {\n targetBeforeNfts.push(nft)\n } else {\n targetAfterNfts.push(nft)\n if (!searchFlag) searchFlag = true\n }\n })\n\n const playQueue = targetAfterNfts.concat(targetBeforeNfts)\n setPlayList(playQueue)\n }\n\n return (\n
\n {nfts && nfts.length > 0 ? (\n nfts.map((nft) => (\n \n ))\n ) : (\n <>\n )}\n
\n )\n}\n\nexport default HomeNfts\n"],"names":["HomeNfts","props","nfts","setNfts","useState","setPlayList","useRecoilState","playQueueState","useEffect","fetchHomeNfts","axios","method","url","genreId","params","genre_id","then","response","fetchNfts","data","map","nft","sound","trial_sound","catch","error","shapingPlayList","target","searchFlag","targetBeforeNfts","targetAfterNfts","chainId","String","tokenId","contractAddress","push","playQueue","concat","length","_jsx","Nft","chain_id","contract_address","token_id","_Fragment"],"mappings":"6cAyBA,SAASA,EAASC,EAAc,CAC9B,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAiB,SAAA,EACnC,EAAGC,CAAW,EAAIC,EAAeC,CAAc,EAErDC,EAAAA,UAAU,IAAM,CACCC,GACjB,EAAG,CAAE,CAAA,EAEL,MAAMA,EAAgB,IAAM,CACpBC,EAAA,CACJC,OAAQ,MACRC,IAAM,4CACJX,EAAMY,UAAY,SAAW,GAAK,YAEpCC,OAAQ,CACNC,SAAUd,EAAMY,OAClB,CAAA,CACD,EACEG,KAAMC,GAA6C,CAElD,MAAMC,EAAYD,EAASE,KAAKjB,KAAKkB,IAAaC,IAChDA,EAAIC,MAAQD,EAAIE,YACTF,EACR,EACDlB,EAAQe,CAAS,CAAA,CAClB,EACAM,MAAOC,GAAyC,CACvCA,QAAAA,MAAM,QAASA,CAAK,CAAA,CAC7B,CAAA,EAGCC,EAAmBC,GAIb,CACV,GAAI,CAACA,EAAQ,OAab,IAAIC,EAAa,GACjB,MAAMC,EAAmB,CAAA,EACnBC,EAAkB,CAAA,EAGtB5B,GAAAA,EAAKkB,IAAaC,GAAA,CAEd,CAACO,IACAP,EAAI,WAAgBM,EAAOI,SAC1BV,EAAI,WAAgBW,OAAOL,EAAOM,OAAO,GACzCZ,EAAI,mBAAwBM,EAAOO,iBAErCL,EAAiBM,KAAKd,CAAG,GAEzBS,EAAgBK,KAAKd,CAAG,EACnBO,IAAyBA,EAAA,IAChC,CACD,EAEGQ,MAAAA,EAAYN,EAAgBO,OAAOR,CAAgB,EACzDxB,EAAY+B,CAAS,CAAA,EAGvB,SACE,MAAA,CAAK,UAAU,OAAM,SAClBlC,GAAQA,EAAKoC,OAAS,EACrBpC,EAAKkB,IACHC,GAAAkB,EAACC,EAAG,CAEF,IAAAnB,EACA,gBAAAK,CAAA,EAFM,GAAEL,EAAIoB,YAAYpB,EAAIqB,oBAAoBrB,EAAIsB,UAAU,CAIjE,EAEDJ,EAAAK,EAAA,CAAA,CAAA,CAAA,CAEE,CAEV"}