1
- import React from "react" ;
1
+ import React , { useCallback , useEffect } from "react" ;
2
2
import {
3
3
Popover ,
4
4
PopoverContent ,
@@ -15,6 +15,7 @@ import {
15
15
TooltipContent ,
16
16
TooltipTrigger ,
17
17
} from "@/components/ui/tooltip" ;
18
+ import { useToast } from "@/components/ui/use-toast" ;
18
19
19
20
interface SaveControlProps {
20
21
agentMeta : GraphMeta | null ;
@@ -52,14 +53,35 @@ export const SaveControl = ({
52
53
53
54
// Determines if we're saving a template or an agent
54
55
let isTemplate = agentMeta ?. is_template ? true : undefined ;
55
- const handleSave = ( ) => {
56
+ const handleSave = useCallback ( ( ) => {
56
57
onSave ( isTemplate ) ;
57
- } ;
58
+ } , [ onSave , isTemplate ] ) ;
58
59
59
60
const getType = ( ) => {
60
61
return agentMeta ?. is_template ? "template" : "agent" ;
61
62
} ;
62
63
64
+ const { toast } = useToast ( ) ;
65
+
66
+ useEffect ( ( ) => {
67
+ const handleKeyDown = ( event : KeyboardEvent ) => {
68
+ if ( ( event . ctrlKey || event . metaKey ) && event . key === "s" ) {
69
+ event . preventDefault ( ) ; // Stop the browser default action
70
+ handleSave ( ) ; // Call your save function
71
+ toast ( {
72
+ duration : 2000 ,
73
+ title : "All changes saved successfully!" ,
74
+ } ) ;
75
+ }
76
+ } ;
77
+
78
+ window . addEventListener ( "keydown" , handleKeyDown ) ;
79
+
80
+ return ( ) => {
81
+ window . removeEventListener ( "keydown" , handleKeyDown ) ;
82
+ } ;
83
+ } , [ handleSave ] ) ;
84
+
63
85
return (
64
86
< Popover open = { pinSavePopover ? true : undefined } >
65
87
< Tooltip delayDuration = { 500 } >
0 commit comments