UNPKG

react-native-notificare

Version:
86 lines (85 loc) 4.03 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.withNotificareIOSFiles = void 0; const config_plugins_1 = require("expo/config-plugins"); const path_1 = __importDefault(require("path")); const utils_1 = require("../utils/utils"); const NOTIFICARE_SERVICES_FILE = 'NotificareServices.plist'; const NOTIFICARE_OPTIONS_FILE = 'NotificareOptions.plist'; const withSetNotificareServicesFile = (config, props) => { const servicesFilePath = props?.ios?.servicesFile; config = (0, config_plugins_1.withDangerousMod)(config, [ 'ios', async (newConfig) => { if (!servicesFilePath) { throw new Error('NotificareServices.plist file path is missing. Make sure to set ios.servicesFile in react-native-notificare plugin.'); } const sourceProjectRoot = config_plugins_1.IOSConfig.Paths.getSourceRoot(newConfig.modRequest.projectRoot); const sourcePath = path_1.default.resolve(newConfig.modRequest.projectRoot, servicesFilePath); const destinationPath = path_1.default.resolve(sourceProjectRoot, NOTIFICARE_SERVICES_FILE); (0, utils_1.copyResources)(sourcePath, destinationPath); return newConfig; }, ]); config = (0, config_plugins_1.withXcodeProject)(config, (project) => { const groupName = config_plugins_1.IOSConfig.XcodeUtils.getHackyProjectName(project.modRequest.projectRoot, config); if (!groupHasChild(project.modResults, groupName, NOTIFICARE_SERVICES_FILE)) { project.modResults = config_plugins_1.IOSConfig.XcodeUtils.addResourceFileToGroup({ filepath: `${groupName}/${NOTIFICARE_SERVICES_FILE}`, groupName, project: project.modResults, isBuildFile: true, verbose: true, }); } return project; }); return config; }; const withSetNotificareOptionsFile = (config, props) => { const optionsFilePath = props?.ios?.optionsFile; if (!optionsFilePath) { return config; } config = (0, config_plugins_1.withDangerousMod)(config, [ 'ios', async (newConfig) => { const sourceProjectRoot = config_plugins_1.IOSConfig.Paths.getSourceRoot(newConfig.modRequest.projectRoot); const sourcePath = path_1.default.resolve(newConfig.modRequest.projectRoot, optionsFilePath); const destinationPath = path_1.default.resolve(sourceProjectRoot, NOTIFICARE_OPTIONS_FILE); (0, utils_1.copyResources)(sourcePath, destinationPath); return newConfig; }, ]); config = (0, config_plugins_1.withXcodeProject)(config, (project) => { const groupName = config_plugins_1.IOSConfig.XcodeUtils.getHackyProjectName(project.modRequest.projectRoot, config); if (!groupHasChild(project.modResults, groupName, NOTIFICARE_OPTIONS_FILE)) { project.modResults = config_plugins_1.IOSConfig.XcodeUtils.addResourceFileToGroup({ filepath: `${groupName}/${NOTIFICARE_OPTIONS_FILE}`, groupName, project: project.modResults, isBuildFile: true, verbose: true, }); } return project; }); return config; }; function groupHasChild(proj, group, child) { const groups = proj.hash.project.objects.PBXGroup; return Object.keys(groups).some(function (key) { return (groups[key]?.name === group && // @ts-ignore groups[key]?.children?.some(({ comment }) => comment === child)); }); } const withNotificareIOSFiles = (config, props) => { config = withSetNotificareServicesFile(config, props); config = withSetNotificareOptionsFile(config, props); return config; }; exports.withNotificareIOSFiles = withNotificareIOSFiles;