Skip to content

Commit b85e437

Browse files
committed
fix: 添加截图过程中的错误处理和状态重置
1 parent 3ff720f commit b85e437

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

src/pages/draw/page.tsx

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -441,11 +441,17 @@ const DrawPageCore: React.FC<{
441441
}
442442

443443
drawPageStateRef.current = DrawPageState.Release;
444-
await Promise.all([
445-
createDrawWindow(),
446-
// 隔一段时间释放,防止释放中途用户唤起
447-
closeWindowAfterDelay(1000 * 3),
448-
]);
444+
try {
445+
await Promise.all([
446+
createDrawWindow(),
447+
// 隔一段时间释放,防止释放中途用户唤起
448+
closeWindowAfterDelay(1000 * 3),
449+
]);
450+
} catch (error) {
451+
appError("[DrawPageCore] releasePage error", error);
452+
// 如果创建窗口失败,重置状态以便下次截图可以正常执行
453+
drawPageStateRef.current = DrawPageState.WaitRelease;
454+
}
449455
}, 1000 * 16);
450456
}, []);
451457

@@ -661,7 +667,14 @@ const DrawPageCore: React.FC<{
661667
} catch {
662668
imageBuffer = undefined;
663669
}
664-
await initCaptureBoundingBoxInfoPromise;
670+
try {
671+
await initCaptureBoundingBoxInfoPromise;
672+
} catch (error) {
673+
appError(
674+
"[DrawPageCore] initCaptureBoundingBoxInfoAndShowWindow error",
675+
error,
676+
);
677+
}
665678

666679
// 如果截图失败了,等窗口显示后,结束截图
667680
// 切换截图历史时,不进行截图,只进行显示
@@ -679,6 +692,8 @@ const DrawPageCore: React.FC<{
679692

680693
// 防止用户提前退出报错
681694
if (getCaptureEvent()?.event !== CaptureEvent.onExecuteScreenshot) {
695+
capturingRef.current = false;
696+
setCaptureStateAction(false);
682697
return;
683698
}
684699

@@ -701,6 +716,8 @@ const DrawPageCore: React.FC<{
701716
} catch (error) {
702717
// 防止用户提前退出报错
703718
if (getCaptureEvent()?.event !== CaptureEvent.onExecuteScreenshot) {
719+
capturingRef.current = false;
720+
setCaptureStateAction(false);
704721
return;
705722
}
706723

0 commit comments

Comments
 (0)