feat: 前端改为通过签名地址读取生成资源

This commit is contained in:
2026-04-21 16:45:05 +08:00
parent fcaf7bdb38
commit 78dcad1222
26 changed files with 779 additions and 76 deletions

View File

@@ -1,5 +1,6 @@
import React, { useEffect, useState } from 'react';
import { useResolvedAssetReadUrl } from '../hooks/useResolvedAssetReadUrl';
import { AnimationState, Character, CharacterAnimationConfig } from '../types';
interface CharacterAnimatorProps {
@@ -208,6 +209,13 @@ export const CharacterAnimator: React.FC<CharacterAnimatorProps> = ({
const imagePath = fallbackToPortrait
? character.portrait
: generatedImagePath;
const {
resolvedUrl: resolvedImagePath,
shouldResolve: shouldResolveImagePath,
} = useResolvedAssetReadUrl(imagePath);
// 私有 OSS 资源必须等签名地址返回后再渲染,不能先落回原始 generated-* 路径。
const displayImagePath =
resolvedImagePath || (!shouldResolveImagePath ? imagePath : '');
const resolvedImageClassName =
`h-full w-full object-contain pixelated ${imageClassName ?? ''}`.trim();
const imageStyle =
@@ -215,10 +223,14 @@ export const CharacterAnimator: React.FC<CharacterAnimatorProps> = ({
? FALLEN_PORTRAIT_STYLE
: DEFAULT_IMAGE_STYLE;
if (!displayImagePath) {
return <div className={`relative ${className ?? ''}`} style={style} />;
}
return (
<div className={`relative ${className ?? ''}`} style={style}>
<img
src={imagePath}
src={displayImagePath}
alt={`${character.name} ${state} animation`}
className={resolvedImageClassName}
style={imageStyle}