Spaces:
Running on Zero
Running on Zero
Update frontend_cache/app.js
Browse files- frontend_cache/app.js +25 -28
frontend_cache/app.js
CHANGED
|
@@ -206,10 +206,15 @@ const BackendAPI = {
|
|
| 206 |
return;
|
| 207 |
}
|
| 208 |
|
| 209 |
-
setTimeout(() => this.pollStatus(taskId, callbacks, retries + 1),
|
| 210 |
}
|
| 211 |
else if (data.status === "success") {
|
| 212 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 213 |
}
|
| 214 |
else if (data.status === "error") {
|
| 215 |
if (callbacks.onError) callbacks.onError(data.message);
|
|
@@ -1174,10 +1179,13 @@ document.getElementById('generate-btn').addEventListener('click', async () => {
|
|
| 1174 |
|
| 1175 |
smartScroll()
|
| 1176 |
},
|
| 1177 |
-
onSuccess: async (imageBase64, returnedSeed, metrics) => {
|
| 1178 |
placeholderText.style.display = 'none';
|
| 1179 |
console.log("🚨 DEBUG METRICS:", JSON.stringify(metrics));
|
| 1180 |
|
|
|
|
|
|
|
|
|
|
| 1181 |
const now = Date.now();
|
| 1182 |
const totalDuration = ((now - generateStartTime) / 1000).toFixed(1);
|
| 1183 |
|
|
@@ -1254,33 +1262,22 @@ document.getElementById('generate-btn').addEventListener('click', async () => {
|
|
| 1254 |
}
|
| 1255 |
|
| 1256 |
// ==========================================
|
| 1257 |
-
// 🌟 第三阶段:图像渲染与收尾(
|
| 1258 |
// ==========================================
|
| 1259 |
-
setTimeout(
|
| 1260 |
-
|
| 1261 |
-
|
| 1262 |
-
|
| 1263 |
-
|
| 1264 |
-
|
| 1265 |
-
|
| 1266 |
-
|
| 1267 |
-
|
| 1268 |
-
|
| 1269 |
-
|
| 1270 |
-
|
| 1271 |
-
// 强制让出主线程,等图片加载完成再显示
|
| 1272 |
-
resultImage.onload = () => {
|
| 1273 |
-
resultImage.style.display = 'block';
|
| 1274 |
-
setUIState(false); // 只有图片真正显示出来了,才恢复按钮
|
| 1275 |
-
resultImage.onload = null;
|
| 1276 |
-
};
|
| 1277 |
-
resultImage.src = window.currentBlobUrl;
|
| 1278 |
-
|
| 1279 |
-
} catch (e) {
|
| 1280 |
-
console.error("图片渲染异常", e);
|
| 1281 |
-
setUIState(false);
|
| 1282 |
}
|
| 1283 |
-
}, 100);
|
| 1284 |
},
|
| 1285 |
onError: (msg) => {
|
| 1286 |
let shortMsg = msg;
|
|
|
|
| 206 |
return;
|
| 207 |
}
|
| 208 |
|
| 209 |
+
setTimeout(() => this.pollStatus(taskId, callbacks, retries + 1), 100);
|
| 210 |
}
|
| 211 |
else if (data.status === "success") {
|
| 212 |
+
// 如果后端返回的是绝对路径或 data: 开头,直接使用;否则拼接 API_BASE_URL
|
| 213 |
+
let finalImageUrl = data.image;
|
| 214 |
+
if (finalImageUrl && !finalImageUrl.startsWith('data:') && !finalImageUrl.startsWith('http')) {
|
| 215 |
+
finalImageUrl = `${API_BASE_URL}${finalImageUrl}`;
|
| 216 |
+
}
|
| 217 |
+
if (callbacks.onSuccess) callbacks.onSuccess(finalImageUrl, data.seed, data.metrics, data.filename);
|
| 218 |
}
|
| 219 |
else if (data.status === "error") {
|
| 220 |
if (callbacks.onError) callbacks.onError(data.message);
|
|
|
|
| 1179 |
|
| 1180 |
smartScroll()
|
| 1181 |
},
|
| 1182 |
+
onSuccess: async (imageBase64, returnedSeed, metrics, filename) => {
|
| 1183 |
placeholderText.style.display = 'none';
|
| 1184 |
console.log("🚨 DEBUG METRICS:", JSON.stringify(metrics));
|
| 1185 |
|
| 1186 |
+
// 🌟 新增:打印后端传过来的文件名
|
| 1187 |
+
console.log("✅ 后端返回的正确文件名:", filename);
|
| 1188 |
+
|
| 1189 |
const now = Date.now();
|
| 1190 |
const totalDuration = ((now - generateStartTime) / 1000).toFixed(1);
|
| 1191 |
|
|
|
|
| 1262 |
}
|
| 1263 |
|
| 1264 |
// ==========================================
|
| 1265 |
+
// 🌟 第三阶段:图像渲染与收尾(极简模式)
|
| 1266 |
// ==========================================
|
| 1267 |
+
setTimeout(() => {
|
| 1268 |
+
resultImage.onload = () => {
|
| 1269 |
+
resultImage.style.display = 'block';
|
| 1270 |
+
setUIState(false);
|
| 1271 |
+
resultImage.onload = null;
|
| 1272 |
+
};
|
| 1273 |
+
|
| 1274 |
+
// 🌟 核心:因为是 URL 了,加个时间戳防止浏览器缓存旧图
|
| 1275 |
+
if (imageBase64.startsWith('data:')) {
|
| 1276 |
+
resultImage.src = imageBase64;
|
| 1277 |
+
} else {
|
| 1278 |
+
resultImage.src = `${imageBase64}?t=${Date.now()}`;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1279 |
}
|
| 1280 |
+
}, 100);
|
| 1281 |
},
|
| 1282 |
onError: (msg) => {
|
| 1283 |
let shortMsg = msg;
|