as-app/plugins/withCustomScheme.js

42 lines
1.5 KiB
JavaScript

const { withInfoPlist } = require("expo/config-plugins");
module.exports = function withCustomScheme(config) {
return withInfoPlist(config, (config) => {
// Ensure CFBundleURLTypes exists
if (!config.modResults.CFBundleURLTypes) {
config.modResults.CFBundleURLTypes = [];
}
// Find or create our custom scheme entry
let customSchemeEntry = config.modResults.CFBundleURLTypes.find((entry) =>
entry.CFBundleURLSchemes?.includes("com.alertesecours.alertesecours"),
);
if (!customSchemeEntry) {
customSchemeEntry = {
CFBundleURLName: "com.alertesecours.alertesecours",
CFBundleURLSchemes: ["com.alertesecours.alertesecours"],
};
config.modResults.CFBundleURLTypes.push(customSchemeEntry);
} else if (!customSchemeEntry.CFBundleURLName) {
customSchemeEntry.CFBundleURLName = "com.alertesecours.alertesecours";
}
// Find or create Expo scheme entry
let expoSchemeEntry = config.modResults.CFBundleURLTypes.find((entry) =>
entry.CFBundleURLSchemes?.includes("exp+alerte-secours"),
);
if (!expoSchemeEntry) {
expoSchemeEntry = {
CFBundleURLName: "com.alertesecours.alertesecours.expo",
CFBundleURLSchemes: ["exp+alerte-secours"],
};
config.modResults.CFBundleURLTypes.push(expoSchemeEntry);
} else if (!expoSchemeEntry.CFBundleURLName) {
expoSchemeEntry.CFBundleURLName = "com.alertesecours.alertesecours.expo";
}
return config;
});
};