1
0
mirror of https://github.com/pocketbase/pocketbase.git synced 2025-03-19 14:17:48 +02:00

treat returned false bool from a jsvm hook as hook.stopPropagation

This commit is contained in:
Gani Georgiev 2023-07-14 16:50:35 +03:00
parent 4962dc618b
commit 64d7ab22f3
2 changed files with 9 additions and 16 deletions

View File

@ -76,22 +76,17 @@ func hooksBinds(app core.App, loader *goja.Runtime, executors *vmsPool) {
res, err := executor.RunProgram(pr)
executor.Set("__args", goja.Undefined())
// check for returned hook.StopPropagation
// check for returned error or false
if res != nil {
exported := res.Export()
if exported != nil {
if v, ok := exported.(error); ok {
switch v := exported.(type) {
case error:
return v
}
}
}
// check for throwed hook.StopPropagation
if err != nil {
if exception, ok := err.(*goja.Exception); ok {
v, ok := exception.Value().Export().(error)
if ok && errors.Is(v, hook.StopPropagation) {
return hook.StopPropagation
case bool:
if !v {
return hook.StopPropagation
}
}
}
}
@ -344,8 +339,6 @@ func baseBinds(vm *goja.Runtime) {
return instanceValue
})
vm.Set("$stopPropagation", hook.StopPropagation)
}
func dbxBinds(vm *goja.Runtime) {

View File

@ -45,7 +45,7 @@ func TestBaseBindsCount(t *testing.T) {
vm := goja.New()
baseBinds(vm)
testBindsCount(vm, "this", 15, t)
testBindsCount(vm, "this", 14, t)
}
func TestBaseBindsRecord(t *testing.T) {
@ -1048,7 +1048,7 @@ func TestHooksBinds(t *testing.T) {
}, "demo2")
onModelBeforeUpdate((e) => {
return $stopPropagation
return false
}, "demo2")
onModelBeforeUpdate((e) => {