fix(space): 종료와 목표 완료 흐름 재정렬
This commit is contained in:
@@ -22,7 +22,7 @@ interface SpaceFocusHudWidgetProps {
|
|||||||
microStep?: string | null;
|
microStep?: string | null;
|
||||||
}) => boolean | Promise<boolean>;
|
}) => boolean | Promise<boolean>;
|
||||||
onGoalUpdate: (nextGoal: string) => boolean | Promise<boolean>;
|
onGoalUpdate: (nextGoal: string) => boolean | Promise<boolean>;
|
||||||
onGoalFinish: () => boolean | Promise<boolean>;
|
onGoalCompleteFinish: () => boolean | Promise<boolean>;
|
||||||
onTimerFinish: () => boolean | Promise<boolean>;
|
onTimerFinish: () => boolean | Promise<boolean>;
|
||||||
onAddTenMinutes: () => boolean | Promise<boolean>;
|
onAddTenMinutes: () => boolean | Promise<boolean>;
|
||||||
onStatusMessage: (payload: HudStatusLinePayload) => void;
|
onStatusMessage: (payload: HudStatusLinePayload) => void;
|
||||||
@@ -42,7 +42,7 @@ export const SpaceFocusHudWidget = ({
|
|||||||
sessionPhase = "focus",
|
sessionPhase = "focus",
|
||||||
onIntentUpdate,
|
onIntentUpdate,
|
||||||
onGoalUpdate,
|
onGoalUpdate,
|
||||||
onGoalFinish,
|
onGoalCompleteFinish,
|
||||||
onTimerFinish,
|
onTimerFinish,
|
||||||
onAddTenMinutes,
|
onAddTenMinutes,
|
||||||
onStatusMessage,
|
onStatusMessage,
|
||||||
@@ -103,9 +103,16 @@ export const SpaceFocusHudWidget = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
timerPromptSignatureRef.current = timerCompletionSignature;
|
timerPromptSignatureRef.current = timerCompletionSignature;
|
||||||
|
setEndSessionConfirmOpen(false);
|
||||||
setOverlay("timer-complete");
|
setOverlay("timer-complete");
|
||||||
}, [timerCompletionSignature]);
|
}, [timerCompletionSignature]);
|
||||||
|
|
||||||
|
const handleOpenGoalComplete = () => {
|
||||||
|
setEndSessionConfirmOpen(false);
|
||||||
|
setCompletePreferredView("choice");
|
||||||
|
setOverlay("complete");
|
||||||
|
};
|
||||||
|
|
||||||
const handleInlineMicrostepUpdate = async (nextStep: string | null) => {
|
const handleInlineMicrostepUpdate = async (nextStep: string | null) => {
|
||||||
if (isSavingIntent) return false;
|
if (isSavingIntent) return false;
|
||||||
|
|
||||||
@@ -191,13 +198,26 @@ export const SpaceFocusHudWidget = ({
|
|||||||
|
|
||||||
{hasActiveSession &&
|
{hasActiveSession &&
|
||||||
(sessionPhase === "focus" || sessionPhase === "break") && (
|
(sessionPhase === "focus" || sessionPhase === "break") && (
|
||||||
<button
|
<div className="mt-8 flex items-center gap-4">
|
||||||
type="button"
|
<button
|
||||||
onClick={() => setEndSessionConfirmOpen(true)}
|
type="button"
|
||||||
className="mt-8 text-[11px] font-bold uppercase tracking-[0.25em] text-white/30 transition hover:text-white/70"
|
onClick={handleOpenGoalComplete}
|
||||||
>
|
className="text-[11px] font-bold uppercase tracking-[0.25em] text-white/34 transition hover:text-white/76"
|
||||||
{copy.space.endSession.trigger}
|
>
|
||||||
</button>
|
{copy.space.focusHud.completeAction}
|
||||||
|
</button>
|
||||||
|
<span aria-hidden className="h-3 w-px bg-white/10" />
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => {
|
||||||
|
setOverlay("none");
|
||||||
|
setEndSessionConfirmOpen(true);
|
||||||
|
}}
|
||||||
|
className="text-[11px] font-bold uppercase tracking-[0.25em] text-white/30 transition hover:text-white/70"
|
||||||
|
>
|
||||||
|
{copy.space.endSession.trigger}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -212,7 +232,7 @@ export const SpaceFocusHudWidget = ({
|
|||||||
onFinish={() =>
|
onFinish={() =>
|
||||||
overlay === "timer-complete"
|
overlay === "timer-complete"
|
||||||
? Promise.resolve(onTimerFinish())
|
? Promise.resolve(onTimerFinish())
|
||||||
: Promise.resolve(onGoalFinish())
|
: Promise.resolve(onGoalCompleteFinish())
|
||||||
}
|
}
|
||||||
onExtendTenMinutes={() => Promise.resolve(onAddTenMinutes())}
|
onExtendTenMinutes={() => Promise.resolve(onAddTenMinutes())}
|
||||||
onRest={() => {
|
onRest={() => {
|
||||||
|
|||||||
@@ -300,7 +300,7 @@ export const useSpaceWorkspaceSessionControls = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const completionResult = await completeSession({
|
const completionResult = await completeSession({
|
||||||
completionType: 'manual-end',
|
completionType: 'goal-complete',
|
||||||
completedGoal: trimmedCurrentGoal || undefined,
|
completedGoal: trimmedCurrentGoal || undefined,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -364,7 +364,7 @@ export const SpaceWorkspaceWidget = () => {
|
|||||||
playbackState={resolvedPlaybackState}
|
playbackState={resolvedPlaybackState}
|
||||||
sessionPhase={phase ?? 'focus'}
|
sessionPhase={phase ?? 'focus'}
|
||||||
onIntentUpdate={controls.handleIntentUpdate}
|
onIntentUpdate={controls.handleIntentUpdate}
|
||||||
onGoalFinish={async () => {
|
onGoalCompleteFinish={async () => {
|
||||||
const completionResult = await controls.handleGoalComplete();
|
const completionResult = await controls.handleGoalComplete();
|
||||||
|
|
||||||
if (completionResult) {
|
if (completionResult) {
|
||||||
|
|||||||
Reference in New Issue
Block a user