diff --git a/dcsFiles/TheWay.lua b/dcsFiles/TheWay.lua index f61c17a..8042060 100644 --- a/dcsFiles/TheWay.lua +++ b/dcsFiles/TheWay.lua @@ -140,6 +140,7 @@ function LuaExportAfterNextFrame() local selfData = LoGetSelfData() local model = selfData and selfData['Name'] or 'Spectator' local message = {} + message["version"] = 1 message["model"] = model message["coords"] = {} message["coords"]["lat"] = tostring(coords.latitude) diff --git a/src/App.js b/src/App.js index 2714598..58fdd3f 100644 --- a/src/App.js +++ b/src/App.js @@ -13,6 +13,7 @@ import GetModuleCommands from "./moduleCommands/GetModuleCommands"; import askUserAboutSeat from "./moduleCommands/askUserAboutSeat"; import useElectronIpcListeners from "./hooks/useElectronIpcListeners"; import SettingsDialog from "./components/settings/SettingsDialog"; +import Error from "./components/Error"; import { uiActions } from "./store/ui"; const { ipcRenderer } = window.require("electron"); @@ -20,7 +21,7 @@ const { ipcRenderer } = window.require("electron"); const theme = createTheme(theWayTheme); function App() { - const { module } = useSelector((state) => state.dcsPoint); + const { module, error } = useSelector((state) => state.dcsPoint); const dcsWaypoints = useSelector((state) => state.waypoints.dcsWaypoints); const userPreferences = useSelector((state) => state.ui.userPreferences); const [settingsModalOpen, setSettingsModalOpen] = useState(false); @@ -87,6 +88,14 @@ function App() { }; }, [handleTransfer, handleSelectionToggle]); + function mainContent() { + if(error == null) { + return ; + } else { + return ; + } + } + return ( @@ -107,7 +116,7 @@ function App() { /> - + { mainContent() } { + return ( + + { props.error } + + ); +}; + +export default Error; diff --git a/src/hooks/useElectronIpcListeners.js b/src/hooks/useElectronIpcListeners.js index d1054b6..487e22d 100644 --- a/src/hooks/useElectronIpcListeners.js +++ b/src/hooks/useElectronIpcListeners.js @@ -49,7 +49,12 @@ const useElectronIpcListeners = () => { ipcRenderer.on( "dataReceived", throttle((event, msg) => { - dispatch(dcsPointActions.changeCoords(JSON.parse(msg))); + let parsed = JSON.parse(msg); + if(parsed.version !== 1) { + dispatch(dcsPointActions.setError("The version of the lua script does not match with the version of this UI.")) + } else { + dispatch(dcsPointActions.changeCoords(parsed)); + } }, 100), ); diff --git a/src/store/dcsPoint.js b/src/store/dcsPoint.js index d7be137..8ff68de 100644 --- a/src/store/dcsPoint.js +++ b/src/store/dcsPoint.js @@ -1,6 +1,6 @@ import { createSlice } from "@reduxjs/toolkit"; -const initialState = { module: null, lat: null, long: null, elev: null }; +const initialState = { module: null, lat: null, long: null, elev: null, error: null }; const dcsPointSlice = createSlice({ name: "dcsPoint", @@ -12,6 +12,14 @@ const dcsPointSlice = createSlice({ state.lat = Number(action.payload.coords.lat); state.long = Number(action.payload.coords.long); state.elev = Number(action.payload.elev); + state.error = null + }, + setError(state, action) { + state.module = null; + state.lat = null; + state.long = null; + state.elev = null; + state.error = action.payload }, }, });