UNPKG

react-native-theoplayer

Version:

A THEOplayer video component for react-native.

54 lines (46 loc) 1.88 kB
import { ConfigPlugin, withProjectBuildGradle, withGradleProperties } from '@expo/config-plugins'; import { PropertiesItem } from '@expo/config-plugins/build/android/Properties'; import { THEOplayerPluginProps, Extension } from './Common'; function mapAndroidExtensionKey(ext: Extension): string | undefined { switch (ext) { case 'ima': return 'THEOplayer_extensionGoogleIMA'; case 'dai': return 'THEOplayer_extensionGoogleDAI'; case 'cast': return 'THEOplayer_extensionCast'; case 'theoads': return 'THEOplayer_extensionTHEOads'; case 'millicast': return 'THEOplayer_extensionMillicast'; default: return undefined; } } const applyAndroidExtensions: ConfigPlugin<THEOplayerPluginProps['extensions']> = (config, extensions) => { return withGradleProperties(config, (config) => { extensions?.forEach((ext) => { const key = mapAndroidExtensionKey(ext); if (key) { const prop: PropertiesItem = { type: 'property', key, value: 'true' }; config.modResults.push(prop); } }); return config; }); }; export const withTHEOplayerAndroid: ConfigPlugin<THEOplayerPluginProps> = (config, props = {}) => { const { extensions, android } = props; // Apply Android extensions config = applyAndroidExtensions(config, android?.extensions ?? extensions); // Add THEOplayer and local Maven repos to the project's repositories return withProjectBuildGradle(config, (config) => { const localMaven = 'maven { url("$rootDir/../node_modules/react-native-theoplayer/android/local") }'; const THEOplayerMaven = 'maven { url("https://maven.theoplayer.com/releases") }'; config.modResults.contents = config.modResults.contents.replace( /allprojects\s*\{\s*repositories\s*\{/, `$&\n\t\t${localMaven}\n\t\t${THEOplayerMaven}`, ); return config; }); };