UNPKG

react-native-spotlight-search

Version:

A React Native module for iOS that provides Spotlight search functionality.

50 lines (42 loc) 1.76 kB
import { ConfigPlugin, createRunOncePlugin, WarningAggregator, withAppDelegate, } from "@expo/config-plugins"; const pkg = require("react-native-spotlight-search/package.json"); const SPOTLIGHT_IMPORT = `#import "RCTSpotlightSearch.h" `; const SPOTLIGHT_ACTIVITY = `- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {`; const SPOTLIGHT_ACTIVITY_ADD = `- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler { [RCTSpotlightSearch handleContinueUserActivity:userActivity];`; const modifyAppDelegate = (appDelegate: string) => { if (!appDelegate.includes(SPOTLIGHT_IMPORT)) { appDelegate = SPOTLIGHT_IMPORT + appDelegate; } const updatedAppDelegate = appDelegate.replace( SPOTLIGHT_ACTIVITY, SPOTLIGHT_ACTIVITY_ADD ); return updatedAppDelegate; }; const withSpotlightAppDelegate = (config: any) => { return withAppDelegate(config, (config) => { if (['objc', 'objcpp'].includes(config.modResults.language)) { config.modResults.contents = modifyAppDelegate( config.modResults.contents ); } else { WarningAggregator.addWarningIOS( "withSpotlightAppDelegate", "Swift AppDelegate files are not supported yet." ); } return config; }); }; const withSpotlight: ConfigPlugin<void> = (config) => { config = withSpotlightAppDelegate(config); return config; }; export default createRunOncePlugin(withSpotlight, pkg.name, pkg.version);