diff --git a/README.md b/README.md index b799a66..ca7b269 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ Displays a track map with the current position of the cars on track and the trac We welcome contributions to the IRDashies project! If you have any ideas, suggestions, or bug reports, please open an issue or submit a pull request. -Join our discord here: https://discord.gg/E3KKB6W4 +Join our discord here: https://discord.gg/YMAqduF2Ft ## License diff --git a/package.json b/package.json index 2029045..f134943 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,10 @@ "productName": "irdashies", "version": "0.0.7", "description": "iRacing Dashboards & Overlays", + "repository": { + "type": "git", + "url": "https://github.com/tariknz/irdashies" + }, "main": ".vite/build/main.js", "scripts": { "start": "electron-forge start --enable-logging", diff --git a/src/app/bridge/dashboard/dashboardBridge.ts b/src/app/bridge/dashboard/dashboardBridge.ts index 2394443..9899ed6 100644 --- a/src/app/bridge/dashboard/dashboardBridge.ts +++ b/src/app/bridge/dashboard/dashboardBridge.ts @@ -17,4 +17,8 @@ export async function publishDashboardUpdates(overlayManager: OverlayManager) { overlayManager.closeOrCreateWindows(dashboard); overlayManager.publishMessage('dashboardUpdated', dashboard); }); + + ipcMain.handle('toggleLockOverlays', () => { + return overlayManager.toggleLockOverlays(); + }); } diff --git a/src/app/bridge/rendererExposeBridge.ts b/src/app/bridge/rendererExposeBridge.ts index a7a03f7..34e2f8e 100644 --- a/src/app/bridge/rendererExposeBridge.ts +++ b/src/app/bridge/rendererExposeBridge.ts @@ -45,5 +45,8 @@ export function exposeBridge() { saveDashboard: (value: DashboardLayout) => { ipcRenderer.send('saveDashboard', value); }, + toggleLockOverlays: () => { + return ipcRenderer.invoke('toggleLockOverlays'); + }, } as DashboardBridge); } diff --git a/src/frontend/App.tsx b/src/frontend/App.tsx index 9571aa5..36e668e 100644 --- a/src/frontend/App.tsx +++ b/src/frontend/App.tsx @@ -46,7 +46,7 @@ const AppRoutes = () => { /> ); })} - } /> + } /> ); }; diff --git a/src/frontend/components/EditMode/EditMode.stories.tsx b/src/frontend/components/EditMode/EditMode.stories.tsx index 1652dd1..329664d 100644 --- a/src/frontend/components/EditMode/EditMode.stories.tsx +++ b/src/frontend/components/EditMode/EditMode.stories.tsx @@ -25,6 +25,7 @@ const mockBridge: (editMode: boolean) => DashboardBridge = (editMode) => ({ onEditModeToggled: (callback) => { callback(editMode); }, + toggleLockOverlays: () => Promise.resolve(true), }); export const Primary = { diff --git a/src/frontend/components/Settings/Settings.tsx b/src/frontend/components/Settings/Settings.tsx index 9c0723c..d1bbe1c 100644 --- a/src/frontend/components/Settings/Settings.tsx +++ b/src/frontend/components/Settings/Settings.tsx @@ -1,5 +1,5 @@ import { useDashboard } from '@irdashies/context'; -import { SettingsForm } from './SettingsForm'; +import { SettingsLayout } from './SettingsLayout'; export const Settings = () => { const { currentDashboard, onDashboardUpdated } = useDashboard(); @@ -8,9 +8,6 @@ export const Settings = () => { } return ( - + ); }; diff --git a/src/frontend/components/Settings/SettingsForm.stories.tsx b/src/frontend/components/Settings/SettingsForm.stories.tsx deleted file mode 100644 index 8154463..0000000 --- a/src/frontend/components/Settings/SettingsForm.stories.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Meta, StoryObj } from '@storybook/react'; -import { SettingsForm } from './SettingsForm'; - -export default { - component: SettingsForm, -} as Meta; - -type Story = StoryObj; - -export const Primary: Story = { - args: { - currentDashboard: { - widgets: [ - { - id: 'test', - enabled: false, - layout: { - x: 0, - y: 0, - width: 0, - height: 0, - }, - }, - ], - }, - }, -}; diff --git a/src/frontend/components/Settings/SettingsForm.tsx b/src/frontend/components/Settings/SettingsForm.tsx deleted file mode 100644 index 19160dc..0000000 --- a/src/frontend/components/Settings/SettingsForm.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { useState } from 'react'; -import { DashboardLayout } from '@irdashies/types'; - -export const SettingsForm = ({ - currentDashboard, - onDashboardUpdated, -}: { - currentDashboard: DashboardLayout | undefined; - onDashboardUpdated: (dashboard: DashboardLayout) => void; -}) => { - const [dashboardInput, setDashboardInput] = useState( - JSON.stringify(currentDashboard, undefined, 2) - ); - - const onInputUpdated = (e: React.ChangeEvent) => { - setDashboardInput(e.target.value); - }; - - const save = () => { - if (!dashboardInput) { - return; - } - - try { - const dashboard = JSON.parse(dashboardInput); - onDashboardUpdated(dashboard); - } catch (e) { - console.error(e); - // TODO: shitty validation - alert('Invalid JSON'); - } - }; - - return ( -
-

Settings

-