import { useEffect, useRef, useState } from "react"; import { Image, View, ScrollView, Video } from "@tarojs/components"; import { uploadAndNavToGenNewAvatar } from "@/utils/avatar"; import WemetaRadio from '@/components/WemetaRadio' import { AvatarMedia } from "@/components/AvatarMedia"; import WemetaButton from '@/components/buttons/WemetaButton' import IconCrop from '@/components/icon/IconCrop' import Taro from "@tarojs/taro"; import style from "./index.module.less"; import { cropImage } from "@/utils/upload"; import { TAvatarItem } from "@/service/storage"; interface IProps { avatarItem: TAvatarItem, enabledChatBg: boolean, setEnabledChatBg: (enabled: boolean) => void onCropDone: (url: string) => void onChange: () => void onConfirm: (edit: TAvatarItem & {enabledChatBg: boolean}) => void } export default function Index({ avatarItem, enabledChatBg, setEnabledChatBg, onCropDone, onChange, onConfirm }: IProps) { const [avatarData, setAvatarData] = useState({...avatarItem, enabledChatBg}) const handleConfirm = async () => { console.log('confirm') onConfirm({ ...avatarData, enabledChatBg}) } const handleChange = () => { onChange() } const handleCrop = () => { Taro.showLoading() // url: `${avatarItem.avatarLogo}?x-oss-process=image/resize,w_450/quality,q_60`, Taro.downloadFile({ url: avatarItem.avatarLogo, success: async (res) => { if (res.statusCode === 200) { const cropRes = await cropImage(res.tempFilePath) if(cropRes?.url){ onCropDone(cropRes.url) setAvatarData({...avatarData, avatarLogo: cropRes.url}) } } }, fail: (err) => { console.log(err); Taro.hideLoading() Taro.showToast({ title: '头像下载失败', icon: 'error', duration: 2000 }) }, complete: (err) => { console.log(err); Taro.hideLoading() } }) } const handleEnabledChatBg = ()=> { setEnabledChatBg(!enabledChatBg) } return ( {!avatarItem.isOriginal && 图片由AI生成} {/* */} {enabledChatBg && } 启用聊天背景 更换形象 确定 ); }