Files
SatMaster/frontend/src/lib/wails.js
2026-03-24 23:24:36 +01:00

63 lines
2.8 KiB
JavaScript

// Wails runtime bridge
// When running in Wails, window.go is injected.
// For dev (browser), we stub the calls.
const isWails = typeof window !== 'undefined' && window.go !== undefined
function wailsCall(path, ...args) {
if (!isWails) {
console.warn('[Wails stub]', path, args)
return Promise.resolve(null)
}
// path like "main.App.GetSatelliteList"
const parts = path.split('.')
let fn = window.go
for (const p of parts) {
fn = fn[p]
if (!fn) {
console.error('[Wails] method not found:', path)
return Promise.resolve(null)
}
}
return fn(...args)
}
export const Go = {
GetSatelliteList: () => wailsCall('main.App.GetSatelliteList'),
GetPasses: (name, hours) => wailsCall('main.App.GetPasses', name, hours),
GetCurrentPosition: (name) => wailsCall('main.App.GetCurrentPosition', name),
SetObserverLocation: (lat, lon, alt) => wailsCall('main.App.SetObserverLocation', lat, lon, alt),
SetSatelliteFrequencies: (down, up) => wailsCall('main.App.SetSatelliteFrequencies', down, up),
StartTracking: (name) => wailsCall('main.App.StartTracking', name),
StopTracking: () => wailsCall('main.App.StopTracking'),
ConnectFlexRadio: (host, port) => wailsCall('main.App.ConnectFlexRadio', host, port),
DisconnectFlexRadio: () => wailsCall('main.App.DisconnectFlexRadio'),
ConnectRotor: (host, port) => wailsCall('main.App.ConnectRotor', host, port),
DisconnectRotor: () => wailsCall('main.App.DisconnectRotor'),
RefreshTLE: () => wailsCall('main.App.RefreshTLE'),
GetFlexRadioStatus: () => wailsCall('main.App.GetFlexRadioStatus'),
GetRotorStatus: () => wailsCall('main.App.GetRotorStatus'),
GetTLEAge: () => wailsCall('main.App.GetTLEAge'),
GetWatchlist: () => wailsCall('main.App.GetWatchlist'),
SetWatchlist: (names) => wailsCall('main.App.SetWatchlist', names),
GetGroundtrack: (name, minutes) => wailsCall('main.App.GetGroundtrack', name, minutes),
GetSliceConfig: () => wailsCall('main.App.GetSliceConfig'),
SetDopplerEnabled: (v) => wailsCall('main.App.SetDopplerEnabled', v),
SetRotorEnabled: (v) => wailsCall('main.App.SetRotorEnabled', v),
SetRotorAzOnly: (v) => wailsCall('main.App.SetRotorAzOnly', v),
GetRotorEnabled: () => wailsCall('main.App.GetRotorEnabled'),
GetDopplerEnabled: () => wailsCall('main.App.GetDopplerEnabled'),
SetSliceConfig: (rx, tx) => wailsCall('main.App.SetSliceConfig', rx, tx),
SetSatelliteMode: (mode) => wailsCall('main.App.SetSatelliteMode', mode),
SetTrackFreqMode: (v) => wailsCall('main.App.SetTrackFreqMode', v),
SetTrackAzimuth: (v) => wailsCall('main.App.SetTrackAzimuth', v),
}
// Wails event listener wrapper
export function onWailsEvent(event, callback) {
if (isWails && window.runtime) {
window.runtime.EventsOn(event, callback)
return () => window.runtime.EventsOff(event)
}
return () => {}
}