55 * https://opensource.org/licenses/MIT
66 */
77
8- import { log } from "@src/common/logger"
9-
108class MessageDispatcher {
119 private handlers : Partial < {
1210 [ code in timer . mq . ReqCode ] : timer . mq . Handler < any , any >
@@ -20,7 +18,7 @@ class MessageDispatcher {
2018 return this
2119 }
2220
23- private async handle ( message : timer . mq . Request < unknown > ) : Promise < timer . mq . Response < unknown > > {
21+ private async handle ( message : timer . mq . Request < unknown > , sender : chrome . runtime . MessageSender ) : Promise < timer . mq . Response < unknown > > {
2422 const code = message ?. code
2523 if ( ! code ) {
2624 return { code : 'ignore' }
@@ -30,7 +28,7 @@ class MessageDispatcher {
3028 return { code : 'ignore' }
3129 }
3230 try {
33- const result = await handler ( message . data )
31+ const result = await handler ( message . data , sender )
3432 return { code : 'success' , data : result }
3533 } catch ( error ) {
3634 return { code : 'fail' , msg : error }
@@ -40,12 +38,8 @@ class MessageDispatcher {
4038 start ( ) {
4139 // Be careful!!!
4240 // Can't use await/async in callback parameter
43- chrome . runtime . onMessage . addListener ( ( message : timer . mq . Request < unknown > , _sender : never , sendResponse : timer . mq . Callback < unknown > ) => {
44- log ( 'start to handle message' , message . code , message . data )
45- this . handle ( message ) . then ( response => {
46- log ( 'the response is' , response , message )
47- sendResponse ( response )
48- } )
41+ chrome . runtime . onMessage . addListener ( ( message : timer . mq . Request < unknown > , sender : chrome . runtime . MessageSender , sendResponse : timer . mq . Callback < unknown > ) => {
42+ this . handle ( message , sender ) . then ( response => sendResponse ( response ) )
4943 // 'return ture' will force chrome to wait for the response processed in the above promise.
5044 // @see https://github.com/mozilla/webextension-polyfill/issues/130
5145 return true
0 commit comments