fix(app): stabilize archive button hover in grouped agent row
This commit is contained in:
@@ -204,6 +204,7 @@ function GroupedAgentRow({
|
|||||||
}: GroupedAgentRowProps) {
|
}: GroupedAgentRowProps) {
|
||||||
const { theme } = useUnistyles();
|
const { theme } = useUnistyles();
|
||||||
const [isHovered, setIsHovered] = useState(false);
|
const [isHovered, setIsHovered] = useState(false);
|
||||||
|
const [isArchiveHovered, setIsArchiveHovered] = useState(false);
|
||||||
const [isArchiveConfirmVisible, setIsArchiveConfirmVisible] = useState(false);
|
const [isArchiveConfirmVisible, setIsArchiveConfirmVisible] = useState(false);
|
||||||
const hoverOutTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
const hoverOutTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
||||||
|
|
||||||
@@ -228,6 +229,7 @@ function GroupedAgentRow({
|
|||||||
clearHoverOutTimeout();
|
clearHoverOutTimeout();
|
||||||
hoverOutTimeoutRef.current = setTimeout(() => {
|
hoverOutTimeoutRef.current = setTimeout(() => {
|
||||||
setIsHovered(false);
|
setIsHovered(false);
|
||||||
|
setIsArchiveHovered(false);
|
||||||
setIsArchiveConfirmVisible(false);
|
setIsArchiveConfirmVisible(false);
|
||||||
}, 50);
|
}, 50);
|
||||||
}, [clearHoverOutTimeout]);
|
}, [clearHoverOutTimeout]);
|
||||||
@@ -246,7 +248,9 @@ function GroupedAgentRow({
|
|||||||
: null;
|
: null;
|
||||||
|
|
||||||
const canArchive = agent.status !== "running" && !agent.requiresAttention;
|
const canArchive = agent.status !== "running" && !agent.requiresAttention;
|
||||||
const showArchive = canArchive && shortcutNumber === null && (isHovered || isArchiveConfirmVisible);
|
const showArchive = canArchive &&
|
||||||
|
shortcutNumber === null &&
|
||||||
|
(isHovered || isArchiveHovered || isArchiveConfirmVisible);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Pressable
|
<Pressable
|
||||||
@@ -293,6 +297,14 @@ function GroupedAgentRow({
|
|||||||
styles.branchBadge,
|
styles.branchBadge,
|
||||||
isArchiveConfirmVisible && styles.archiveConfirmBadge,
|
isArchiveConfirmVisible && styles.archiveConfirmBadge,
|
||||||
]}
|
]}
|
||||||
|
onHoverIn={() => {
|
||||||
|
clearHoverOutTimeout();
|
||||||
|
setIsHovered(true);
|
||||||
|
setIsArchiveHovered(true);
|
||||||
|
}}
|
||||||
|
onHoverOut={() => {
|
||||||
|
setIsArchiveHovered(false);
|
||||||
|
}}
|
||||||
onPress={(e) => {
|
onPress={(e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
if (!isArchiveConfirmVisible) {
|
if (!isArchiveConfirmVisible) {
|
||||||
|
|||||||
Reference in New Issue
Block a user