desktop/src/App.tsx

50 lines
1.3 KiB
TypeScript
Raw Normal View History

import { createEffect, onCleanup } from 'solid-js';
import { invoke } from '@tauri-apps/api/tauri';
import { DisplayView } from './components/display-view';
import { DisplayListContainer } from './components/display-list-container';
import { displayStore, setDisplayStore } from './stores/display.store';
import { LedStripConfig } from './models/led-strip-config';
import { setLedStripStore } from './stores/led-strip.store';
import { listen } from '@tauri-apps/api/event';
2023-03-18 13:46:46 +08:00
function App() {
createEffect(() => {
2023-03-18 16:41:15 +08:00
invoke<string>('list_display_info').then((displays) => {
setDisplayStore({
displays: JSON.parse(displays),
});
2023-03-18 13:46:46 +08:00
});
invoke<LedStripConfig[]>('read_led_strip_configs').then((strips) => {
setLedStripStore({
strips,
});
});
});
// register tauri event listeners
createEffect(() => {
const unlisten = listen('config_changed', (event) => {
const strips = event.payload as LedStripConfig[];
setLedStripStore({
strips,
});
});
onCleanup(() => {
unlisten.then((unlisten) => unlisten());
});
2023-03-18 13:46:46 +08:00
});
return (
<div>
<DisplayListContainer>
{displayStore.displays.map((display) => {
2023-03-19 10:15:26 +08:00
return <DisplayView display={display} />;
2023-03-18 16:41:15 +08:00
})}
</DisplayListContainer>
2023-03-18 13:46:46 +08:00
</div>
);
}
export default App;