1import { NativeModules, NativeEventEmitter, EventSubscription } from 'react-native'; 2 3const DevLauncher = NativeModules.EXDevLauncherInternal; 4const EventEmitter = new NativeEventEmitter(DevLauncher); 5 6const ON_NEW_DEEP_LINK_EVENT = 'expo.modules.devlauncher.onnewdeeplink'; 7 8export async function getRecentlyOpenedApps(): Promise<{ [key: string]: string | null }[]> { 9 return await DevLauncher.getRecentlyOpenedApps(); 10} 11 12export async function loadApp(url: string): Promise<void> { 13 return await DevLauncher.loadApp(url); 14} 15 16export async function getPendingDeepLink(): Promise<string | null> { 17 return await DevLauncher.getPendingDeepLink(); 18} 19 20export type CrashReport = { 21 timestamp: number; 22 message: string; 23 stack: string; 24}; 25 26export async function getCrashReport(): Promise<CrashReport | null> { 27 return await DevLauncher.getCrashReport(); 28} 29 30export async function openCamera(): Promise<void> { 31 return await DevLauncher.openCamera(); 32} 33 34export function addDeepLinkListener(callback: (string) => void): EventSubscription { 35 return EventEmitter.addListener(ON_NEW_DEEP_LINK_EVENT, callback); 36} 37 38export type BuildInfo = { 39 appName?: string; 40 appVersion?: string; 41 appIcon?: string; 42 sdkVersion?: string; 43 runtimeVersion?: string; 44}; 45 46export async function getBuildInfoAsync(): Promise<BuildInfo> { 47 return DevLauncher.getBuildInfo(); 48} 49 50export async function copyToClipboardAsync(content: string): Promise<null> { 51 return DevLauncher.copyToClipboard(content); 52} 53 54export const clientUrlScheme = DevLauncher.clientUrlScheme; 55export const installationID = DevLauncher.installationID; 56export const isDevice = !!DevLauncher.isDevice; 57