Ctrl K
ComunidadGuías…

src/renderer/store/cast.store.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { create } from 'zustand';

export interface DesktopCastDevice {
    id: string;
    isSelected: boolean;
    name: string;
}

export interface DesktopCastState {
    deviceName: null | string;
    devices: DesktopCastDevice[];
    isConnected: boolean;
    isScanning: boolean;
    status: DesktopCastStatus;
}

export type DesktopCastStatus =
    | 'blocked'
    | 'connected'
    | 'connecting'
    | 'disconnected'
    | 'no-devices'
    | 'unavailable';

const initialCastState: DesktopCastState = {
    deviceName: null,
    devices: [],
    isConnected: false,
    isScanning: false,
    status: 'unavailable',
};

interface CastStore {
    cast: DesktopCastState;
    setCast: (cast: Partial<DesktopCastState>) => void;
}

export const useCastStore = create<CastStore>((set) => ({
    cast: initialCastState,
    setCast: (next) =>
        set((state) => ({
            cast: { ...state.cast, ...next },
        })),
}));

export const useDesktopCastState = () => useCastStore((state) => state.cast);

export const useDesktopCastActions = () => useCastStore((state) => ({ setCast: state.setCast }));