import '~/styles/share.scss' import { Popup, Tabs, Toast } from 'react-vant' import ProductItem from '~/components/ProductItem' import store from '~/store' import { observer } from 'mobx-react' import { toFixed2 } from '~/utils' import { useMemo, useRef, useState } from 'react' import { open_page, reset_name, upload_image } from '~/api' import { useRouter } from '~/hooks/useRouter' const Share = () => { const { userInfo, token, likeNft, myNft } = store.state const { push } = useRouter() const [visible, setVisible] = useState(false) const inputRef = useRef(null) const nameRef = useRef(null) const [edit, setEdit] = useState(false) const prevent = useRef(false) //阻止重複點擊 const fileRef = useRef(null as any) const [tempUrl, setTempUrl] = useState(null as any) const tabs = useMemo(() => ['我的NFT', '我喜歡的NFT'], []) const avatarmenuClick = (event: any) => { const dataType = event.target.dataset.type; switch (dataType) { case "photo": //相册 inputRef.current?.click() break case "save": //保存 !fileRef.current && Toast.info('請選擇圖片') fileRef.current && uploader(fileRef.current) break case "cancel": //取消 closePopup() break } } const uploader = async (file: File | null) => { if (!file) return setVisible(false) const res: any = await upload_image(file) res.code === 0 && await store.getUserInfo() res.code === 0 && Toast.success('保存成功') closePopup() } const saveName = async () => { if (nameRef.current?.value === userInfo.name) return const res: any = await reset_name(nameRef.current!.value) res.code === 0 && store.getUserInfo() setEdit(false) } const openPages = async () => { if (prevent.current) return prevent.current = true const res: any = await open_page(userInfo.show === 1 ? 2 : 1) res.code === 0 && store.getUserInfo() res.code === 0 && Toast.success({ message: userInfo.show === 1 ? '已隐藏' : '已开放', forbidClick: true }) prevent.current = false } const onChangeImage = (event: React.ChangeEvent) => { let file = event.target.files ? event.target.files[0] : null if (!file) return fileRef.current = file const reader = new FileReader() reader.onloadend = function () { const base64String = reader.result setTempUrl(base64String) } reader.readAsDataURL(file) inputRef.current!.value = '' } const closePopup = () => { setVisible(false) setTempUrl('') fileRef.current = null inputRef.current!.value = '' } return (
{ setVisible(true) }} />
{ token ? (
{ edit ? ( { setTimeout(() => { setEdit(false) }, 100) }} /> ) : (
{userInfo.name}
) }
{ edit ? ( ) : ( { setEdit(true) setTimeout(() => { nameRef.current!.value = userInfo.name nameRef.current!.focus() }, 20) }} /> ) }
) : (
未登錄
) }
{userInfo.show === 2 ? '開放我的藝術頁面' : '隱藏我的藝術頁面'}
{userInfo.sell}
售賣作品
{userInfo.auction}
拍賣作品
{toFixed2(userInfo.income, 2)} FIL
收入
{ tabs.map((item, index) => ( {item} { index === 0 ? myNft.length : likeNft.length }
} titleClass='fz-wb-550' >
{(index === 0 ? myNft : likeNft).map((item, index) => (
push('/detail', { id: item.id, type: item.type })}>
))}
)) }
從手機相冊選擇
保存圖片
取消
) } export default observer(Share)