import { makeAutoObservable } from 'mobx' import { type BleDevice } from '@/ble/core/types' import { type DeviceInfo } from '@/ble/protocol/types' interface BleState { isScanning: boolean isConnected: boolean connectedDevice: BleDevice | null deviceInfo: DeviceInfo | null version: string isActivated: boolean transferProgress: number discoveredDevices: BleDevice[] contents: string[] loading: { connecting: boolean querying: boolean converting: boolean transferring: boolean } error: string | null } class BleStore { // State state: BleState = { isScanning: false, isConnected: false, connectedDevice: null, deviceInfo: null, version: '', isActivated: false, transferProgress: 0, discoveredDevices: [], contents: [], loading: { connecting: false, querying: false, converting: false, transferring: false, }, error: null, } bleSessionId = `ble-session-${Date.now().toString()}` constructor() { makeAutoObservable(this) } // Actions setState(updater: (prev: BleState) => BleState) { this.state = updater(this.state) } } // Global instance export const bleStore = new BleStore()