import React, { useEffect, useState } from 'react'; import { View, Text, Button, StyleSheet, NativeModules, NativeEventEmitter } from 'react-native'; const { FlirModule } = NativeModules as any; const FlirEmitter = new NativeEventEmitter(FlirModule); export function FlirDebugScreen() { const [battery, setBattery] = useState(null); const [isCharging, setIsCharging] = useState(null); const [temperature, setTemperature] = useState(null); const [lastEvent, setLastEvent] = useState(null); useEffect(() => { const subscription = FlirEmitter.addListener('FlirBatteryUpdated', (evt) => { setBattery(evt.level); setIsCharging(evt.isCharging); setLastEvent(evt); }); return () => subscription.remove(); }, []); const onSimulateContextLoss = async () => { try { if (FlirModule && FlirModule.simulateFlirContextLoss) { await FlirModule.simulateFlirContextLoss(); console.log('[FLIR DEBUG] Simulated context loss'); } } catch (e) { console.warn('[FLIR DEBUG] simulateContextLoss error', e); } }; const onRequestBattery = async () => { try { if (FlirModule && FlirModule.getBatteryLevel) { const lvl = await FlirModule.getBatteryLevel(); setBattery(typeof lvl === 'number' ? lvl : null); } try { if (FlirModule && FlirModule.isBatteryCharging) { const ch = await FlirModule.isBatteryCharging(); setIsCharging(Boolean(ch)); } } catch (e) { /* ignore */ } } catch (e) { console.warn('getBatteryLevel error', e); } }; const onRequestTemperature = async () => { try { if (FlirModule && FlirModule.getTemperatureAt) { const val = await FlirModule.getTemperatureAt(80, 60); setTemperature(typeof val === 'number' ? val : null); } } catch (e) { console.warn('getTemperatureAt error', e); } }; const onPauseFlir = async () => { try { if (FlirModule && FlirModule.pauseFlirForPreview) { await FlirModule.pauseFlirForPreview(); } } catch (e) { console.warn('[FLIR DEBUG] pauseFlirForPreview error', e); } }; const onResumeFlir = async () => { try { if (FlirModule && FlirModule.resumeFlirAfterPreview) { await FlirModule.resumeFlirAfterPreview(); } } catch (e) { console.warn('[FLIR DEBUG] resumeFlirAfterPreview error', e); } }; return ( FLIR Debug (Package) Battery Level: {battery ?? '--'} Charging: {isCharging == null ? '--' : isCharging ? 'Yes' : 'No'} Temperature at (80,60): {temperature == null ? '--' : temperature.toFixed(1) + '°C'} Last Event: {lastEvent ? JSON.stringify(lastEvent) : '--'}