StepConfirm.tsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import { View, Image } from "@tarojs/components";
  2. import React, { useState } from "react";
  3. import Taro, { nextTick } from "@tarojs/taro";
  4. import { TAvatarItem } from "@/service/storage";
  5. import AvatarConfirm from '@/components/AvatarConfirm/index'
  6. import { useAgentStore, useAgentStoreActions } from "@/store/agentStore";
  7. interface IProps {
  8. prev: ()=>void
  9. pickedAvatar: TAvatarItem
  10. }
  11. export default React.memo(function Index({prev, pickedAvatar}:IProps) {
  12. const currentItem = { ...(pickedAvatar || {}) }
  13. const agentEdit = useAgentStore((state) => state.agentEdit);
  14. const { saveAgent, updateEditAgent} = useAgentStoreActions();
  15. const [enabledChatBg, setEnabledChatBg] = useState(true)
  16. const handleConfirm = async (edit: TAvatarItem & { enabledChatBg: boolean }) => {
  17. if (edit.avatarLogo && edit.avatarUrl) {
  18. updateEditAgent({...edit})
  19. // 如果是编辑,直接编辑形象成功
  20. if(agentEdit?.agentId){
  21. nextTick(()=> {
  22. saveAgent()
  23. Taro.showToast({title: '形象设置成功', icon: 'success'})
  24. setTimeout(()=> {
  25. Taro.navigateBack()
  26. }, 2000)
  27. })
  28. return
  29. }
  30. // 如果是新建智能体,只是暂时设置并不更新至服务器
  31. Taro.showToast({title: '形象设置成功', icon: 'success'})
  32. setTimeout(()=> {
  33. Taro.navigateBack()
  34. }, 2000)
  35. }
  36. }
  37. const handleChange = () => {
  38. prev()
  39. }
  40. const handleCropDone = (url: string) => {
  41. console.log('handleCropDone', url)
  42. if(url){
  43. currentItem.avatarLogo = url
  44. updateEditAgent({avatarLogo: url})
  45. }
  46. }
  47. return (
  48. <>
  49. {!!currentItem && <AvatarConfirm
  50. avatarItem={currentItem}
  51. enabledChatBg={enabledChatBg}
  52. setEnabledChatBg={setEnabledChatBg}
  53. onCropDone={handleCropDone}
  54. onChange={handleChange}
  55. onConfirm={handleConfirm} />}
  56. </>
  57. )
  58. // return (
  59. // <View>
  60. // <View className={style.confirmContainer}>
  61. // <View className={style.confirmRoundedAvatarWrap}>
  62. // <Image
  63. // mode='aspectFill'
  64. // className={style.confirmRoundedAvatar}
  65. // src={pickedAvatar?.avatarLogo}
  66. // ></Image>
  67. // </View>
  68. // <View className={style.confirmChatAvatarBg}>
  69. // <View className={style.confirmChatAvatarImage}>
  70. // <AvatarMedia roundedFull={false} source={pickedAvatar?.avatarUrl} className={style.confirmChatAvatarImage} />
  71. // {!pickedAvatar.isOriginal && <View className={style.aiTips}>图片由AI生成</View> }
  72. // {/* <Image
  73. // mode="widthFix"
  74. // className="w-full"
  75. // src={pickedAvatar.avatarUrl}
  76. // ></Image> */}
  77. // </View>
  78. // <View className={style.confirmChatAvatarBgCover}>
  79. // <View className={style.block1}></View>
  80. // <View className={style.block2}></View>
  81. // <View className={style.block3}></View>
  82. // </View>
  83. // </View>
  84. // <View className="flex-center gap-8 text-14 font-medium leading-22 text-black" onClick={()=> setEnabledChatBg((prev)=> !prev)}>
  85. // <WemetaRadio checked={enabledChatBg} checkbox></WemetaRadio>
  86. // 启用聊天背景
  87. // </View>
  88. // </View>
  89. // <View className="bottom-bar">
  90. // <View className="grid grid-cols-2 gap-8 px-20 py-12">
  91. // <View className={`button-rounded`} onClick={prev}>更换形象</View>
  92. // <WemetaButton className="flex-1" onClick={handleConfirm}>确定</WemetaButton>
  93. // </View>
  94. // </View>
  95. // </View>
  96. // );
  97. });