UNPKG

react-native-healthkit-bridge

Version:

A comprehensive React Native bridge for Apple HealthKit with TypeScript support, advanced authorization, and flexible data queries

66 lines (65 loc) 2.11 kB
import { NativeModules, Platform } from 'react-native'; import { NativeProvider } from './NativeProvider'; export class ProviderFactory { constructor() { } static getInstance() { if (!ProviderFactory.instance) { ProviderFactory.instance = new ProviderFactory(); } return ProviderFactory.instance; } createProvider(config) { try { return this.createNativeProvider(config); } catch (error) { console.error('Error creating NativeProvider:', error); throw error; } } createNativeProvider(config) { try { // Check if native module is available if (!NativeModules.HealthKitBridge) { throw new Error('Native HealthKitBridge module not found. Check if pods were installed correctly.'); } return new NativeProvider(config); } catch (error) { console.error('Error creating NativeProvider:', error); throw error; } } getAvailableProviders() { const providers = []; if (Platform.OS === 'ios' && NativeModules.HealthKitBridge) { providers.push('native'); } return providers; } getDefaultProvider() { const availableProviders = this.getAvailableProviders(); if (availableProviders.includes('native')) { return 'native'; } throw new Error('NativeProvider is not available. Check if running on physical iOS device and if pods were installed.'); } createDefaultProvider(config) { return this.createProvider(config); } isNativeAvailable() { return Platform.OS === 'ios' && (!!NativeModules.HealthKitBridge); } getProviderInfo() { return { name: 'NativeProvider', version: '1.0.0', available: this.isNativeAvailable() }; } getAllProvidersInfo() { return [ this.getProviderInfo() ].map((info) => (Object.assign({ type: 'native' }, info))); } }