wails/v3/pkg/application/messageprocessor_ios.go
Lea Anthony 637713fae6 feat: adapt iOS and Android message processors to RuntimeRequest transport
Transport layer refactor adaptations for mobile platforms:

- Refactor processIOSMethod to use RuntimeRequest signature
- Refactor processAndroidMethod to use RuntimeRequest signature
- Add androidRequest constant (12) and handler to messageprocessor.go
- Update messageprocessor_mobile_stub.go for non-mobile builds
- Fix undefined windowID variable (use req.WebviewWindowID)
- Add iOS event generation to tasks/events/generate.go
- Add InvalidIOSCallError and InvalidAndroidCallError to errs package
- Update iOS delegate and webview files with generated event handlers

iOS methods refactored: Haptics.Impact, Device.Info, Scroll settings,
Navigation gestures, Link previews, Debug inspector, UserAgent

Android methods refactored: Haptics.Vibrate, Device.Info, Toast.Show

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 21:27:04 +11:00

105 lines
2.9 KiB
Go

//go:build ios
package application
import (
"github.com/wailsapp/wails/v3/pkg/errs"
)
const (
IOSHapticsImpact = 0
IOSDeviceInfo = 1
IOSScrollSetEnabled = 2
IOSScrollSetBounceEnabled = 3
IOSScrollSetIndicatorsEnabled = 4
IOSNavigationSetBackForwardGestures = 5
IOSLinksSetPreviewEnabled = 6
IOSDebugSetInspectableEnabled = 7
IOSUserAgentSet = 8
)
var iosMethodNames = map[int]string{
IOSHapticsImpact: "Haptics.Impact",
IOSDeviceInfo: "Device.Info",
IOSScrollSetEnabled: "Scroll.SetEnabled",
IOSScrollSetBounceEnabled: "Scroll.SetBounceEnabled",
IOSScrollSetIndicatorsEnabled: "Scroll.SetIndicatorsEnabled",
IOSNavigationSetBackForwardGestures: "Navigation.SetBackForwardGesturesEnabled",
IOSLinksSetPreviewEnabled: "Links.SetPreviewEnabled",
IOSDebugSetInspectableEnabled: "Debug.SetInspectableEnabled",
IOSUserAgentSet: "UserAgent.Set",
}
func (m *MessageProcessor) processIOSMethod(req *RuntimeRequest, window Window) (any, error) {
args := req.Args.AsMap()
switch req.Method {
case IOSHapticsImpact:
style := "medium"
if s := args.String("style"); s != nil {
style = *s
}
iosHapticsImpact(style)
return unit, nil
case IOSDeviceInfo:
return iosDeviceInfo(), nil
case IOSScrollSetEnabled:
enabled := true
if b := args.Bool("enabled"); b != nil {
enabled = *b
}
iosSetScrollEnabled(enabled)
return unit, nil
case IOSScrollSetBounceEnabled:
enabled := true
if b := args.Bool("enabled"); b != nil {
enabled = *b
}
iosSetBounceEnabled(enabled)
return unit, nil
case IOSScrollSetIndicatorsEnabled:
enabled := true
if b := args.Bool("enabled"); b != nil {
enabled = *b
}
iosSetScrollIndicatorsEnabled(enabled)
return unit, nil
case IOSNavigationSetBackForwardGestures:
enabled := false
if b := args.Bool("enabled"); b != nil {
enabled = *b
}
iosSetBackForwardGesturesEnabled(enabled)
return unit, nil
case IOSLinksSetPreviewEnabled:
enabled := true
if b := args.Bool("enabled"); b != nil {
enabled = *b
}
iosSetLinkPreviewEnabled(enabled)
return unit, nil
case IOSDebugSetInspectableEnabled:
enabled := true
if b := args.Bool("enabled"); b != nil {
enabled = *b
}
iosSetInspectableEnabled(enabled)
return unit, nil
case IOSUserAgentSet:
ua := ""
if s := args.String("ua"); s != nil {
ua = *s
} else if s2 := args.String("userAgent"); s2 != nil {
ua = *s2
}
iosSetCustomUserAgent(ua)
return unit, nil
default:
return nil, errs.NewInvalidIOSCallErrorf("unknown method: %d", req.Method)
}
}
// processAndroidMethod is a stub on iOS
func (m *MessageProcessor) processAndroidMethod(req *RuntimeRequest, window Window) (any, error) {
return nil, errs.NewInvalidAndroidCallErrorf("Android methods not available on iOS")
}