新增 全局错误toast提示;

This commit is contained in:
2025-09-14 02:54:08 +08:00
parent 9f94e92eaf
commit 46e07cc5ac
7 changed files with 368 additions and 172 deletions

View File

@@ -3,9 +3,11 @@ import { geminiService, GenerationRequest, EditRequest } from '../services/gemin
import { useAppStore } from '../store/useAppStore';
import { generateId } from '../utils/imageUtils';
import { Generation, Edit, Asset } from '../types';
import { useToast } from '../components/ToastContext';
export const useImageGeneration = () => {
const { addGeneration, setIsGenerating, setCanvasImage, setCurrentProject, currentProject } = useAppStore();
const { addToast } = useToast();
const generateMutation = useMutation({
mutationFn: async (request: GenerationRequest) => {
@@ -35,15 +37,7 @@ export const useImageGeneration = () => {
seed: request.seed,
temperature: request.temperature
},
sourceAssets: request.referenceImage ? [{
id: generateId(),
type: 'original',
url: `data:image/png;base64,${request.referenceImages[0]}`,
mime: 'image/png',
width: 1024,
height: 1024,
checksum: request.referenceImages[0].slice(0, 32)
}] : request.referenceImages ? request.referenceImages.map((img, index) => ({
sourceAssets: request.referenceImages ? request.referenceImages.map((img, index) => ({
id: generateId(),
type: 'original' as const,
url: `data:image/png;base64,${img}`,
@@ -77,6 +71,7 @@ export const useImageGeneration = () => {
},
onError: (error) => {
console.error('生成失败:', error);
addToast('图像生成失败,请重试', 'error');
setIsGenerating(false);
}
});
@@ -99,8 +94,11 @@ export const useImageEditing = () => {
selectedGenerationId,
currentProject,
seed,
temperature
temperature,
uploadedImages
} = useAppStore();
const { addToast } = useToast();
const editMutation = useMutation({
mutationFn: async (instruction: string) => {
@@ -174,12 +172,12 @@ export const useImageEditing = () => {
// 绘制带透明度的遮罩叠加
maskedCtx.globalCompositeOperation = 'source-over';
maskedCtx.globalAlpha = 0.4;
maskedCtx.fillStyle = '#A855F7';
maskedCtx.fillStyle = '#A855F7';
brushStrokes.forEach(stroke => {
if (stroke.points.length >= 4) {
maskedCtx.lineWidth = stroke.brushSize;
maskedCtx.strokeStyle = '#A855F7';
maskedCtx.strokeStyle = '#A855F7';
maskedCtx.lineCap = 'round';
maskedCtx.lineJoin = 'round';
maskedCtx.beginPath();
@@ -262,6 +260,7 @@ export const useImageEditing = () => {
},
onError: (error) => {
console.error('编辑失败:', error);
addToast('图像编辑失败,请重试', 'error');
setIsGenerating(false);
}
});