1import {
2  AndroidConfig,
3  ConfigPlugin,
4  createRunOncePlugin,
5  withInfoPlist,
6} from 'expo/config-plugins';
7
8const pkg = require('expo-background-fetch/package.json');
9
10const withBackgroundFetch: ConfigPlugin = (config) => {
11  // TODO: Maybe entitlements are needed
12
13  config = withInfoPlist(config, (config) => {
14    if (!Array.isArray(config.modResults.UIBackgroundModes)) {
15      config.modResults.UIBackgroundModes = [];
16    }
17    if (!config.modResults.UIBackgroundModes.includes('fetch')) {
18      config.modResults.UIBackgroundModes.push('fetch');
19    }
20    return config;
21  });
22
23  return AndroidConfig.Permissions.withPermissions(config, [
24    'android.permission.RECEIVE_BOOT_COMPLETED',
25    'android.permission.WAKE_LOCK',
26  ]);
27};
28
29export default createRunOncePlugin(withBackgroundFetch, pkg.name, pkg.version);
30