forked from 77media/video-flow
新增设置选中的角色功能,优化角色选择逻辑以支持未定义角色的情况,同时更新角色视频片段服务和编辑数据逻辑,确保角色库保存功能的完整性。
This commit is contained in:
parent
b59d32d79d
commit
7112de9ac1
@ -39,17 +39,19 @@ interface UseRoleShotService {
|
|||||||
applyRoleToSelectedShots: (newRole: RoleEntity) => Promise<void>;
|
applyRoleToSelectedShots: (newRole: RoleEntity) => Promise<void>;
|
||||||
/** 清空选择列表 */
|
/** 清空选择列表 */
|
||||||
clearShotSelection: () => void;
|
clearShotSelection: () => void;
|
||||||
|
/** 设置选中的角色 */
|
||||||
|
setSelectedRole: (role: RoleEntity) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色视频片段服务Hook
|
* 角色视频片段服务Hook
|
||||||
* 提供角色与视频片段交互的所有响应式功能和业务逻辑
|
* 提供角色与视频片段交互的所有响应式功能和业务逻辑
|
||||||
*/
|
*/
|
||||||
export const useRoleShotServiceHook = (projectId: string,selectRole:RoleEntity): UseRoleShotService => {
|
export const useRoleShotServiceHook = (projectId: string,selectRole?:RoleEntity): UseRoleShotService => {
|
||||||
// 响应式状态
|
// 响应式状态
|
||||||
const [shotSelectionList, setShotSelectionList] = useState<ExtendedVideoSegmentEntity[]>([]);
|
const [shotSelectionList, setShotSelectionList] = useState<ExtendedVideoSegmentEntity[]>([]);
|
||||||
const [selectedRoleId, setSelectedRoleId] = useState<string | null>(null);
|
const [selectedRoleId, setSelectedRoleId] = useState<string | null>(null);
|
||||||
const [selectedRole, setSelectedRole] = useState<RoleEntity | null>(selectRole);
|
const [selectedRole, setSelectedRole] = useState<RoleEntity | null>(selectRole || null);
|
||||||
const [isReplacing, setIsReplacing] = useState<boolean>(false); // 全局替换状态
|
const [isReplacing, setIsReplacing] = useState<boolean>(false); // 全局替换状态
|
||||||
|
|
||||||
// 计算属性
|
// 计算属性
|
||||||
@ -238,5 +240,6 @@ export const useRoleShotServiceHook = (projectId: string,selectRole:RoleEntity):
|
|||||||
toggleShotSelection,
|
toggleShotSelection,
|
||||||
applyRoleToSelectedShots,
|
applyRoleToSelectedShots,
|
||||||
clearShotSelection,
|
clearShotSelection,
|
||||||
|
setSelectedRole
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -45,7 +45,8 @@ export const useEditData = (tabType: string) => {
|
|||||||
optimizeRoleText,
|
optimizeRoleText,
|
||||||
updateRoleText,
|
updateRoleText,
|
||||||
regenerateRole,
|
regenerateRole,
|
||||||
uploadImageToQiniu
|
uploadImageToQiniu,
|
||||||
|
saveRoleToLibrary
|
||||||
} = useRoleServiceHook();
|
} = useRoleServiceHook();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@ -58,7 +59,7 @@ export const useEditData = (tabType: string) => {
|
|||||||
toggleShotSelection,
|
toggleShotSelection,
|
||||||
applyRoleToSelectedShots,
|
applyRoleToSelectedShots,
|
||||||
clearShotSelection
|
clearShotSelection
|
||||||
} = useRoleShotServiceHook(projectId, selectedRole);
|
} = useRoleShotServiceHook(projectId, selectedRole || undefined);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (tabType === 'shot') {
|
if (tabType === 'shot') {
|
||||||
@ -116,6 +117,7 @@ export const useEditData = (tabType: string) => {
|
|||||||
toggleSelectAllShots,
|
toggleSelectAllShots,
|
||||||
toggleShotSelection,
|
toggleShotSelection,
|
||||||
applyRoleToSelectedShots,
|
applyRoleToSelectedShots,
|
||||||
clearShotSelection
|
clearShotSelection,
|
||||||
|
saveRoleToLibrary
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,7 +94,8 @@ export function CharacterTabContent({
|
|||||||
// role shot
|
// role shot
|
||||||
shotSelectionList,
|
shotSelectionList,
|
||||||
fetchRoleShots,
|
fetchRoleShots,
|
||||||
applyRoleToSelectedShots
|
applyRoleToSelectedShots,
|
||||||
|
saveRoleToLibrary
|
||||||
} = useEditData('role');
|
} = useEditData('role');
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const episodeId = searchParams.get('episodeId');
|
const episodeId = searchParams.get('episodeId');
|
||||||
@ -154,6 +155,9 @@ export function CharacterTabContent({
|
|||||||
console.log('Add to library:', addToLibrary);
|
console.log('Add to library:', addToLibrary);
|
||||||
applyRoleToSelectedShots(selectedRole || {} as RoleEntity);
|
applyRoleToSelectedShots(selectedRole || {} as RoleEntity);
|
||||||
setIsReplacePanelOpen(false);
|
setIsReplacePanelOpen(false);
|
||||||
|
if(addToLibrary){
|
||||||
|
saveRoleToLibrary();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 取消替换
|
// 取消替换
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user