63 lines
2.8 KiB
JavaScript
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 () => {}
|
|
} |