Files
llink/js/desktop/src/autoplay_window/AutoplayApp.tsx
T
Arjun Patel a8a0b7db1b infra: add linting and formatting for js projects (#230)
* wip

* wip

* wip

* format

* wip(mobile): lint and format

* cleanup

* nits

* nits

* idiomatic react

* nit

* format all root files
2026-06-02 07:44:24 -07:00

44 lines
1.1 KiB
TypeScript

import { useCallback, useEffect, useState } from 'react';
import type { AutoplayPayload } from '@/lib/autoplay-ipc';
import { AutoplayCardContent } from '@/components/autoplay-card-content';
export function AutoplayApp() {
const [payload, setPayload] = useState<AutoplayPayload | null>(null);
useEffect(() => {
return window.electronAutoplay.onPlay((p) => setPayload(p));
}, []);
useEffect(() => {
return window.electronAutoplay.onStop(() => setPayload(null));
}, []);
const handleDismiss = useCallback(() => {
setPayload(null);
window.electronAutoplay.dismiss();
}, []);
const handleNavigate = useCallback(() => {
if (!payload) return;
window.electronAutoplay.navigate({
networkId: payload.networkId,
streamId: payload.streamId,
});
}, [payload]);
if (!payload) {
return <div className="h-screen w-screen" />;
}
return (
<div className="h-screen w-screen">
<AutoplayCardContent
payload={payload}
onDismiss={handleDismiss}
onNavigate={handleNavigate}
onEnded={handleDismiss}
/>
</div>
);
}