|
@@ -1,8 +1,7 @@
|
|
|
import WemetaTabs from "@/components/wemeta-tabs/index";
|
|
|
import VoicePlayerBar, { IVoicePlayerBar } from "@/components/voice-player-bar";
|
|
|
-import AllVoice from "./components/all-voice";
|
|
|
-import MyVoice from "./components/my-voice/index";
|
|
|
-import { TServiceAudioModel } from "@/types";
|
|
|
+import VoiceList from "./components/VoiceList";
|
|
|
+import MyVoiceList from "./components/MyVoiceList/index";
|
|
|
import { View, ScrollView } from "@tarojs/components";
|
|
|
import { useRouter } from "@tarojs/taro";
|
|
|
import React, { useEffect, useRef, useState } from "react";
|
|
@@ -10,20 +9,18 @@ import NavBarNormal from "@/components/nav-bar-normal/index";
|
|
|
import style from "./index.module.less";
|
|
|
import PageCustom from "@/components/page-custom/index";
|
|
|
import { useVoiceStore } from "@/store/voiceStore";
|
|
|
+import { TVoiceItem } from "@/types/voice";
|
|
|
+import { useAgentStore } from "@/store/agentStore";
|
|
|
|
|
|
interface Props {}
|
|
|
-type ExtendedTServiceAudioModel = TServiceAudioModel & { checked: boolean };
|
|
|
+
|
|
|
const VoiceTabs: React.FC<Props> = ({}) => {
|
|
|
const playerRef = useRef<IVoicePlayerBar>(null);
|
|
|
- const [sysVoice, setSysVoice] = useState<ExtendedTServiceAudioModel | null>(
|
|
|
+ const [sysVoice, setSysVoice] = useState<TVoiceItem | null>(
|
|
|
null
|
|
|
);
|
|
|
|
|
|
- const [voiceName, setVoiceName] = useState("");
|
|
|
- const [voiceAlias, setVoiceAlias] = useState("");
|
|
|
- const [voiceIdx, setVoiceIdx] = useState(-1);
|
|
|
- const router = useRouter();
|
|
|
- const profileId = router.params.profileId || "";
|
|
|
+ const {agent, agentCharacter, editAgentCharacter} = useAgentStore()
|
|
|
|
|
|
const {
|
|
|
voices,
|
|
@@ -75,13 +72,38 @@ const VoiceTabs: React.FC<Props> = ({}) => {
|
|
|
setMalePagination({ pageIndex: malePagination.pageIndex + 1 });
|
|
|
};
|
|
|
|
|
|
+ // 保存默认 voiceId
|
|
|
+ const saveAgentVoiceId = async (voiceItem: TVoiceItem) => {
|
|
|
+ if(!agent?.agentId || !voiceItem?.voiceId || !agentCharacter){
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const result = await editAgentCharacter(agent?.agentId, {
|
|
|
+ ...agentCharacter,
|
|
|
+ voiceId: voiceItem.voiceId
|
|
|
+ })
|
|
|
+ console.log(result)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置当前播放器的播放音频信息
|
|
|
+ const setPlayerItem = async (voiceItem: TVoiceItem, type: "system" | "cloned") => {
|
|
|
+ playerRef.current && playerRef.current.stop();
|
|
|
+ setSysVoice(voiceItem);
|
|
|
+ saveAgentVoiceId(voiceItem)
|
|
|
+ };
|
|
|
+
|
|
|
const tabList = [
|
|
|
{
|
|
|
label: "我的",
|
|
|
key: "1",
|
|
|
children: (
|
|
|
<View className={style.tabContent}>
|
|
|
- <MyVoice></MyVoice>
|
|
|
+ <MyVoiceList
|
|
|
+ agent={agent}
|
|
|
+ onPlay={(item) => {
|
|
|
+ console.log(item,'cloned')
|
|
|
+ setPlayerItem(item, "cloned");
|
|
|
+ }}
|
|
|
+ ></MyVoiceList>
|
|
|
</View>
|
|
|
),
|
|
|
},
|
|
@@ -100,12 +122,13 @@ const VoiceTabs: React.FC<Props> = ({}) => {
|
|
|
}}
|
|
|
>
|
|
|
<View className="px-16 py-12">
|
|
|
- <AllVoice
|
|
|
+ <VoiceList
|
|
|
+ agent={agent}
|
|
|
list={voices}
|
|
|
onPlay={(item) => {
|
|
|
- handlePlayAction(item, "system");
|
|
|
+ setPlayerItem(item, "system");
|
|
|
}}
|
|
|
- ></AllVoice>
|
|
|
+ ></VoiceList>
|
|
|
</View>
|
|
|
</ScrollView>
|
|
|
</View>
|
|
@@ -126,12 +149,13 @@ const VoiceTabs: React.FC<Props> = ({}) => {
|
|
|
}}
|
|
|
>
|
|
|
<View className="px-16 py-12">
|
|
|
- <AllVoice
|
|
|
+ <VoiceList
|
|
|
+ agent={agent}
|
|
|
list={femaleVoices}
|
|
|
onPlay={(item) => {
|
|
|
- handlePlayAction(item, "system");
|
|
|
+ setPlayerItem(item, "system");
|
|
|
}}
|
|
|
- ></AllVoice>
|
|
|
+ ></VoiceList>
|
|
|
</View>
|
|
|
</ScrollView>
|
|
|
</View>
|
|
@@ -152,12 +176,13 @@ const VoiceTabs: React.FC<Props> = ({}) => {
|
|
|
}}
|
|
|
>
|
|
|
<View className="px-16 py-12">
|
|
|
- <AllVoice
|
|
|
+ <VoiceList
|
|
|
+ agent={agent}
|
|
|
list={maleVoices}
|
|
|
onPlay={(item) => {
|
|
|
- handlePlayAction(item, "system");
|
|
|
+ setPlayerItem(item, "system");
|
|
|
}}
|
|
|
- ></AllVoice>
|
|
|
+ ></VoiceList>
|
|
|
</View>
|
|
|
</ScrollView>
|
|
|
</View>
|
|
@@ -165,22 +190,7 @@ const VoiceTabs: React.FC<Props> = ({}) => {
|
|
|
},
|
|
|
];
|
|
|
|
|
|
- const handlePlayAction = (voiceItem: any, type: "system" | "cloned") => {
|
|
|
- if (type == "system") {
|
|
|
- // setVoiceName("");
|
|
|
- // setVoiceAlias("");
|
|
|
- // setVoiceIdx(-1);
|
|
|
-
|
|
|
- // setSysVoice(voiceItem);
|
|
|
- playerRef.current && playerRef.current.play(voiceItem.voice);
|
|
|
- } else {
|
|
|
- // setSysVoice(null);
|
|
|
- // setVoiceName(voiceItem.voiceName);
|
|
|
- // setVoiceAlias(voiceItem.voiceAlias);
|
|
|
- // setVoiceIdx(voiceItem.voiceIndex);
|
|
|
- playerRef.current && playerRef.current.play(voiceItem.voiceName);
|
|
|
- }
|
|
|
- };
|
|
|
+
|
|
|
|
|
|
return (
|
|
|
<PageCustom>
|
|
@@ -190,8 +200,6 @@ const VoiceTabs: React.FC<Props> = ({}) => {
|
|
|
<VoicePlayerBar
|
|
|
ref={playerRef}
|
|
|
voiceItem={sysVoice}
|
|
|
- voiceName={voiceName}
|
|
|
- voiceNameText={voiceIdx == -1 ? "" : voiceAlias}
|
|
|
/>
|
|
|
</View>
|
|
|
<View className={style.voiceTab}>
|