import * as SplashScreen from 'expo-splash-screen'
import { registerTemperatureActivityId } from './temperature'
import { registerAlarmActivityId, getAlarmActivityId } from './src/utils/alarmLiveActivityStorage'
import { handleLiveActivityAlarmDismiss, parseAlarmDismissSide } from './src/utils/handleLiveActivityAlarmDismiss'
import { headless } from './src/constants/isHeadless'
import './firebaseBackground'
console.log('[index.js] isHeadless:', headless)
if (headless) {
addVoltraListener('activityTokenReceived', ({ activityName }) => {
if (activityName.includes('temperature_control')) {
registerTemperatureActivityId(activityName)
} else if (activityName.toLowerCase().includes('alarm')) {
registerAlarmActivityId(activityName)
}
})
addVoltraListener('interaction', (event) => {
const id = event?.identifier
if (typeof id !== 'string') return
if (id.includes('increment') || id.includes('decrease')) {
const { handleInteraction } = require('./temperature')
void handleInteraction(id)
return
}
if (id.includes('dismiss') && parseAlarmDismissSide(id)) {
const side = parseAlarmDismissSide(id)
console.log('[headless dismiss] slot:', side, 'activity-id:', getAlarmActivityId(side), 'identifier:', id)
void handleLiveActivityAlarmDismiss(id).catch((err) => {
console.warn('[headless dismiss error]', err)
})
}
})
}
SplashScreen.preventAutoHideAsync()
require('expo-router/entry')```
Library Version
1.4.0
React Native Version
0.81.5
React Version
19.1.0
Expo Version
54.0.34
Minimal Reproduction
Additional Information (Optional)