x
This commit is contained in:
+28
-15
@@ -245,11 +245,13 @@ func (f *Factory) SetReplyHandler(function func(map[string]string) string) {
|
|||||||
|
|
||||||
func GetReplyMessage(vm *goja.Runtime, plt string, bots_id []string) *goja.Promise {
|
func GetReplyMessage(vm *goja.Runtime, plt string, bots_id []string) *goja.Promise {
|
||||||
promise, resolve, reject := vm.NewPromise()
|
promise, resolve, reject := vm.NewPromise()
|
||||||
go func() {
|
|
||||||
adapters, err := GetAdapters(plt, bots_id...)
|
adapters, err := GetAdapters(plt, bots_id...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
go func() {
|
||||||
|
time.Sleep(time.Second)
|
||||||
reject(Error(vm, err))
|
reject(Error(vm, err))
|
||||||
return
|
}()
|
||||||
|
return promise
|
||||||
}
|
}
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
for i := range adapters {
|
for i := range adapters {
|
||||||
@@ -263,29 +265,40 @@ func GetReplyMessage(vm *goja.Runtime, plt string, bots_id []string) *goja.Promi
|
|||||||
reject("adapter destroied")
|
reject("adapter destroied")
|
||||||
case mc := <-adapters[i].msgChan:
|
case mc := <-adapters[i].msgChan:
|
||||||
cancel()
|
cancel()
|
||||||
obj := adapters[i].vm.NewObject()
|
var msg = map[string]interface{}{}
|
||||||
for k, v := range mc.Msg {
|
for k, v := range mc.Msg {
|
||||||
obj.Set(k, v)
|
msg[k] = v
|
||||||
}
|
}
|
||||||
obj.Set("bot_id", adapters[i].botid)
|
// obj := adapters[i].vm.NewObject()
|
||||||
|
// for k, v := range mc.Msg {
|
||||||
resolve(adapters[i].vm.NewProxy(obj, &goja.ProxyTrapConfig{
|
// obj.Set(k, v)
|
||||||
Set: func(target *goja.Object, property string, value, receiver goja.Value) (success bool) {
|
// }
|
||||||
if property == "message_id" {
|
// obj.Set("bot_id", adapters[i].botid)
|
||||||
|
msg["bot_id"] = adapters[i].botid
|
||||||
|
msg["setMessageId"] = func(id string) {
|
||||||
select {
|
select {
|
||||||
case <-mc.Chan:
|
case <-mc.Chan:
|
||||||
return false
|
|
||||||
case <-time.After(time.Millisecond):
|
case <-time.After(time.Millisecond):
|
||||||
|
mc.Chan <- id
|
||||||
}
|
}
|
||||||
mc.Chan <- fmt.Sprint(value.Export())
|
|
||||||
}
|
}
|
||||||
return true
|
resolve(mc.Msg)
|
||||||
},
|
// adapters[i].vm.NewProxy(obj, &goja.ProxyTrapConfig{
|
||||||
}))
|
// Set: func(target *goja.Object, property string, value, receiver goja.Value) (success bool) {
|
||||||
|
// if property == "message_id" {
|
||||||
|
// select {
|
||||||
|
// case <-mc.Chan:
|
||||||
|
// return false
|
||||||
|
// case <-time.After(time.Millisecond):
|
||||||
|
// }
|
||||||
|
// mc.Chan <- fmt.Sprint(value.Export())
|
||||||
|
// }
|
||||||
|
// return true
|
||||||
|
// },
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
}(i)
|
}(i)
|
||||||
}
|
}
|
||||||
}()
|
|
||||||
return promise
|
return promise
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user