mirror of
https://github.com/movie-web/native-app.git
synced 2025-09-13 10:13:25 +00:00
49 lines
1.9 KiB
JavaScript
49 lines
1.9 KiB
JavaScript
const { withAppDelegate } = require("@expo/config-plugins");
|
|
|
|
function withRNBackgroundDownloader(expoConfig) {
|
|
return withAppDelegate(expoConfig, async (appDelegateConfig) => {
|
|
const { modResults: appDelegate } = appDelegateConfig;
|
|
const appDelegateLines = appDelegate.contents.split("\n");
|
|
|
|
// Define the code to be added to AppDelegate.mm
|
|
const backgroundDownloaderImport =
|
|
"#import <RNBackgroundDownloader.h> // Required by react-native-background-downloader. Generated by expoPlugins/withRNBackgroundDownloader.js";
|
|
const backgroundDownloaderDelegate = `\n// Delegate method required by react-native-background-downloader. Generated by expoPlugins/withRNBackgroundDownloader.js
|
|
- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler
|
|
{
|
|
[RNBackgroundDownloader setCompletionHandlerWithIdentifier:identifier completionHandler:completionHandler];
|
|
}`;
|
|
|
|
// Find the index of the AppDelegate import statement
|
|
const importIndex = appDelegateLines.findIndex((line) =>
|
|
/^#import "AppDelegate.h"/.test(line),
|
|
);
|
|
|
|
// Find the index of the last line before the @end statement
|
|
const endStatementIndex = appDelegateLines.findIndex((line) =>
|
|
/@end/.test(line),
|
|
);
|
|
|
|
// Insert the import statement if it's not already present
|
|
if (!appDelegate.contents.includes(backgroundDownloaderImport)) {
|
|
appDelegateLines.splice(importIndex + 1, 0, backgroundDownloaderImport);
|
|
}
|
|
|
|
// Insert the delegate method above the @end statement
|
|
if (!appDelegate.contents.includes(backgroundDownloaderDelegate)) {
|
|
appDelegateLines.splice(
|
|
endStatementIndex,
|
|
0,
|
|
backgroundDownloaderDelegate,
|
|
);
|
|
}
|
|
|
|
// Update the contents of the AppDelegate file
|
|
appDelegate.contents = appDelegateLines.join("\n");
|
|
|
|
return appDelegateConfig;
|
|
});
|
|
}
|
|
|
|
module.exports = withRNBackgroundDownloader;
|