11import {
2- ExtensionCommandInfo ,
2+ CommandInfo ,
33 IMCMessage ,
44 IMCMessageTypeEnum ,
55 ReceiverHandler ,
@@ -10,20 +10,20 @@ import { useEffect, useState } from "react";
1010/**
1111 * Register an extension command to listen to IMC messages from the core,
1212 * and pass to the extension to handle.
13+ *
14+ * @param commandInfo Command information to register.
15+ * @param callbackHandler Callback handler function to handle the command.
16+ *
1317 */
14- export default function useExtCommand (
15- commandInfo : ExtensionCommandInfo ,
16- initialHandler ?: ( args : any ) => Promise < string | void >
18+ export default function useCommand (
19+ commandInfo : CommandInfo ,
20+ callbackHandler ?: ( args : any ) => Promise < string | void >
1721) {
1822 const { isReady, imc } = useIMC ( getReceiverHandlerMap ( ) ) ;
1923
2024 const [ handler , setHandler ] = useState <
21- ( ( args : any ) => Promise < string | void > ) | undefined
22- > ( initialHandler ) ;
23-
24- useEffect ( ( ) => {
25- imc ?. updateReceiverHandlerMap ( getReceiverHandlerMap ( ) ) ;
26- } , [ handler , imc ] ) ;
25+ ( ( args : any ) => Promise < any > ) | undefined
26+ > ( undefined ) ;
2727
2828 function getReceiverHandlerMap ( ) {
2929 const receiverHandlerMap = new Map < IMCMessageTypeEnum , ReceiverHandler > ( [
@@ -81,17 +81,15 @@ export default function useExtCommand(
8181 return receiverHandlerMap ;
8282 }
8383
84- /**
85- *
86- * @param handler Function to handle the command. Return a string in the handler to let
87- * Pulse Editor assistant to read it out.
88- */
89- function updateHandler ( handler : ( args : any ) => Promise < string | void > ) {
90- setHandler ( ( ) => handler ) ;
91- }
84+ useEffect ( ( ) => {
85+ imc ?. updateReceiverHandlerMap ( getReceiverHandlerMap ( ) ) ;
86+ } , [ handler , imc ] ) ;
87+
88+ useEffect ( ( ) => {
89+ setHandler ( ( ) => callbackHandler ) ;
90+ } , [ callbackHandler ] ) ;
9291
9392 return {
9493 isReady,
95- updateHandler,
9694 } ;
9795}
0 commit comments