mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
fix: continuous progress bar (no 100%→0% reset)
Upload occupies 0-15% of the bar, server processing 15-100%. SSE progress from the server is scaled into the 15-100 range. The bar now moves smoothly from start to finish.
This commit is contained in:
@@ -97,10 +97,12 @@ export function useToolProcessor(toolId: string) {
|
|||||||
try {
|
try {
|
||||||
const data = JSON.parse(event.data);
|
const data = JSON.parse(event.data);
|
||||||
if (data.type === "single" && typeof data.percent === "number") {
|
if (data.type === "single" && typeof data.percent === "number") {
|
||||||
|
// Scale server progress (0-100) into 15-100 range
|
||||||
|
const scaled = 15 + (data.percent / 100) * 85;
|
||||||
setProgress((prev) => ({
|
setProgress((prev) => ({
|
||||||
...prev,
|
...prev,
|
||||||
phase: "processing",
|
phase: "processing",
|
||||||
percent: data.percent,
|
percent: scaled,
|
||||||
stage: data.stage,
|
stage: data.stage,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@@ -130,9 +132,13 @@ export function useToolProcessor(toolId: string) {
|
|||||||
const xhr = new XMLHttpRequest();
|
const xhr = new XMLHttpRequest();
|
||||||
xhrRef.current = xhr;
|
xhrRef.current = xhr;
|
||||||
|
|
||||||
|
// For AI tools: upload = 0-15%, processing = 15-100% (continuous, no reset)
|
||||||
|
// For fast tools: upload = 0-100%, processing = brief 100% hold
|
||||||
|
const UPLOAD_WEIGHT = isAiTool ? 15 : 100;
|
||||||
|
|
||||||
xhr.upload.onprogress = (event) => {
|
xhr.upload.onprogress = (event) => {
|
||||||
if (event.lengthComputable) {
|
if (event.lengthComputable) {
|
||||||
const uploadPercent = (event.loaded / event.total) * 100;
|
const uploadPercent = (event.loaded / event.total) * UPLOAD_WEIGHT;
|
||||||
setProgress((prev) => {
|
setProgress((prev) => {
|
||||||
if (prev.phase !== "uploading") return prev;
|
if (prev.phase !== "uploading") return prev;
|
||||||
return { ...prev, percent: uploadPercent };
|
return { ...prev, percent: uploadPercent };
|
||||||
@@ -144,7 +150,7 @@ export function useToolProcessor(toolId: string) {
|
|||||||
setProgress((prev) => ({
|
setProgress((prev) => ({
|
||||||
...prev,
|
...prev,
|
||||||
phase: "processing",
|
phase: "processing",
|
||||||
percent: isAiTool ? 0 : 100,
|
percent: UPLOAD_WEIGHT,
|
||||||
stage: isAiTool ? "Starting..." : "Processing...",
|
stage: isAiTool ? "Starting..." : "Processing...",
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user