react-native-notificare-push
Version:
Notificare Push React Native module.
64 lines (63 loc) • 3.61 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupNotificationServiceExtension = setupNotificationServiceExtension;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const constantsIOS_1 = require("../../constants/constantsIOS");
const xcode_project_1 = require("../utils/xcode-project");
const plugin_1 = require("react-native-notificare/lib/plugin");
async function setupNotificationServiceExtension(proj, projRoot, appBundleID, deploymentTarget) {
const extFiles = [
'NotificationService.swift',
'NotificationServiceExtension-Info.plist',
];
const pluginDir = require.resolve('react-native-notificare-push/package.json');
const extFilesDir = path_1.default.join(pluginDir, `../lib/plugin/ios/${constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION}/`);
const isExtExists = fs_1.default.existsSync(`${projRoot}/ios/${constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION}`);
const isTargetExists = proj.pbxTargetByName(constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION);
try {
if (!isExtExists) {
(0, plugin_1.copyResources)(extFilesDir, `${projRoot}/ios/${constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION}`);
}
if (!isTargetExists) {
const extTarget = proj.addTarget(constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION, 'app_extension');
const extGroup = proj.addPbxGroup(extFiles, constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION, constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION);
const groups = proj.hash.project.objects.PBXGroup;
// Making files visible in Xcode
Object.keys(groups).forEach(function (key) {
if (groups[key].name === undefined) {
proj.addToPbxGroup(extGroup.uuid, key);
}
});
proj.addBuildPhase(['NotificationService.swift'], 'PBXSourcesBuildPhase', 'Sources', extTarget.uuid);
proj.addBuildPhase([], 'PBXResourcesBuildPhase', 'Resources', extTarget.uuid);
}
const extConfigRefs = (0, xcode_project_1.getConfigReferences)(proj, constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION);
initialSetup(proj, extConfigRefs, constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION, appBundleID);
updateDeploymentTarget(proj, extConfigRefs, deploymentTarget);
console.log(`Successfully ${!isExtExists ? 'added' : 'updated'} Notification Service Extension.`);
return proj;
}
catch (e) {
console.error(`Failed to ${!isExtExists ? 'add' : 'update'} Notification Service Extension: ${e}`);
}
}
function initialSetup(proj, extConfigRefs, extName, appBundleID) {
extConfigRefs.forEach((ref) => {
const buildSettings = proj.hash.project.objects.XCBuildConfiguration[ref].buildSettings;
if (appBundleID) {
buildSettings.PRODUCT_BUNDLE_IDENTIFIER = `${appBundleID}.NotificationServiceExtension`;
}
buildSettings.PRODUCT_NAME = `${extName}`;
buildSettings.SWIFT_VERSION = '5.0';
});
}
function updateDeploymentTarget(proj, extConfigRefs, deploymentTarget) {
extConfigRefs.forEach((ref) => {
const buildSettings = proj.hash.project.objects.XCBuildConfiguration[ref].buildSettings;
buildSettings.IPHONEOS_DEPLOYMENT_TARGET = deploymentTarget || '13.4';
});
}
;