mirror of
https://github.com/wavetermdev/wails.git
synced 2026-08-05 13:53:43 -07:00
[runtime] Add cancelation of bound method calls and context passing
This commit is contained in:
@@ -155,7 +155,7 @@ func (p *Project) GenerateBinding(thisStructName string, method *BoundMethod, us
|
||||
}
|
||||
result = strings.ReplaceAll(result, "Comments", comments)
|
||||
var params string
|
||||
for _, input := range method.Inputs {
|
||||
for _, input := range method.JSInputs() {
|
||||
input.project = p
|
||||
inputName := sanitiseJSVarName(input.Name)
|
||||
pkgName := getPackageName(input)
|
||||
@@ -181,7 +181,7 @@ func (p *Project) GenerateBinding(thisStructName string, method *BoundMethod, us
|
||||
//}
|
||||
result = strings.ReplaceAll(result, "* @param names {string}", params)
|
||||
var inputs string
|
||||
for _, input := range method.Inputs {
|
||||
for _, input := range method.JSInputs() {
|
||||
pkgName := getPackageName(input)
|
||||
if pkgName != "" {
|
||||
models = append(models, pkgName)
|
||||
@@ -256,7 +256,7 @@ func (p *Project) GenerateBindingTypescript(thisStructName string, method *Bound
|
||||
}
|
||||
result = strings.ReplaceAll(result, "Comments", comments)
|
||||
var params string
|
||||
for _, input := range method.Inputs {
|
||||
for _, input := range method.JSInputs() {
|
||||
input.project = p
|
||||
inputName := sanitiseJSVarName(input.Name)
|
||||
pkgName := getPackageName(input)
|
||||
@@ -279,7 +279,7 @@ func (p *Project) GenerateBindingTypescript(thisStructName string, method *Bound
|
||||
// params = "\n" + params
|
||||
//}
|
||||
var inputs string
|
||||
for _, input := range method.Inputs {
|
||||
for _, input := range method.JSInputs() {
|
||||
pkgName := getPackageName(input)
|
||||
if pkgName != "" {
|
||||
models = append(models, pkgName)
|
||||
@@ -341,6 +341,10 @@ func getPackageName(input *Parameter) string {
|
||||
return result
|
||||
}
|
||||
|
||||
func isContext(input *Parameter) bool {
|
||||
return input.Type.Package == "context" && input.Type.Name == "Context"
|
||||
}
|
||||
|
||||
func (p *Project) GenerateBindings(bindings map[string]map[string][]*BoundMethod, useIDs bool, useTypescript bool) map[string]map[string]string {
|
||||
|
||||
var result = make(map[string]map[string]string)
|
||||
|
||||
@@ -3,7 +3,6 @@ package parser
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/wailsapp/wails/v3/internal/flags"
|
||||
"go/ast"
|
||||
"go/build"
|
||||
"go/parser"
|
||||
@@ -16,6 +15,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/wailsapp/wails/v3/internal/flags"
|
||||
|
||||
"github.com/samber/lo"
|
||||
"github.com/wailsapp/wails/v3/internal/hash"
|
||||
)
|
||||
@@ -138,6 +139,16 @@ type BoundMethod struct {
|
||||
Alias *uint32
|
||||
}
|
||||
|
||||
func (m BoundMethod) JSInputs() []*Parameter {
|
||||
if len(m.Inputs) > 0 {
|
||||
if firstArg := m.Inputs[0]; isContext(firstArg) {
|
||||
return m.Inputs[1:]
|
||||
}
|
||||
}
|
||||
|
||||
return m.Inputs
|
||||
}
|
||||
|
||||
func (m BoundMethod) IDAsString() string {
|
||||
return strconv.Itoa(int(m.ID))
|
||||
}
|
||||
|
||||
+10
@@ -13,3 +13,13 @@ import {Call} from '@wailsio/runtime';
|
||||
export async function Greet(name) {
|
||||
return Call.ByID(1411160069, ...Array.prototype.slice.call(arguments, 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Greet someone
|
||||
* @function GreetWithContext
|
||||
* @param name {string}
|
||||
* @returns {Promise<string>}
|
||||
**/
|
||||
export async function GreetWithContext(name) {
|
||||
return Call.ByID(1310150960, ...Array.prototype.slice.call(arguments, 0));
|
||||
}
|
||||
|
||||
+10
@@ -13,3 +13,13 @@ import {Call} from '@wailsio/runtime';
|
||||
export async function Greet(name) {
|
||||
return Call.ByName("main.GreetService.Greet", ...Array.prototype.slice.call(arguments, 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Greet someone
|
||||
* @function GreetWithContext
|
||||
* @param name {string}
|
||||
* @returns {Promise<string>}
|
||||
**/
|
||||
export async function GreetWithContext(name) {
|
||||
return Call.ByName("main.GreetService.GreetWithContext", ...Array.prototype.slice.call(arguments, 0));
|
||||
}
|
||||
|
||||
+5
@@ -7,3 +7,8 @@ export async function Greet(name: string) : Promise<string> {
|
||||
return Call.ByName("main.GreetService.Greet", name);
|
||||
}
|
||||
|
||||
// Greet someone
|
||||
export async function GreetWithContext(name: string) : Promise<string> {
|
||||
return Call.ByName("main.GreetService.GreetWithContext", name);
|
||||
}
|
||||
|
||||
|
||||
+5
@@ -7,3 +7,8 @@ export async function Greet(name: string) : Promise<string> {
|
||||
return Call.ByID(1411160069, name);
|
||||
}
|
||||
|
||||
// Greet someone
|
||||
export async function GreetWithContext(name: string) : Promise<string> {
|
||||
return Call.ByID(1310150960, name);
|
||||
}
|
||||
|
||||
|
||||
+8
-1
@@ -1,9 +1,11 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
_ "embed"
|
||||
"github.com/wailsapp/wails/v3/pkg/application"
|
||||
"log"
|
||||
|
||||
"github.com/wailsapp/wails/v3/pkg/application"
|
||||
)
|
||||
|
||||
// GreetService is great
|
||||
@@ -17,6 +19,11 @@ func (*GreetService) Greet(name string) string {
|
||||
return "Hello " + name
|
||||
}
|
||||
|
||||
// Greet someone
|
||||
func (*GreetService) GreetWithContext(ctx context.Context, name string) string {
|
||||
return "Hello " + name
|
||||
}
|
||||
|
||||
func NewGreetService() *GreetService {
|
||||
return &GreetService{}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user