treat returned false bool from a jsvm hook as hook.stopPropagation
This commit is contained in:
		
							parent
							
								
									4962dc618b
								
							
						
					
					
						commit
						64d7ab22f3
					
				| 
						 | 
				
			
			@ -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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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) => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue