Introduce withLivekitAudioswitchPatch plugin for handling LiveKit audio routing and switching functionality.
41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
const { withDangerousMod } = require('@expo/config-plugins');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// @livekit/react-native depends on com.github.davidliu:audioswitch via JitPack.
|
|
// That JitPack artifact returns 403 Forbidden (repo/commit no longer accessible).
|
|
// The original upstream com.twilio:audioswitch is published on Maven Central.
|
|
// This plugin patches livekit's build.gradle during prebuild to swap the
|
|
// JitPack dependency for the Maven Central one.
|
|
const withLivekitAudioswitchPatch = (config) =>
|
|
withDangerousMod(config, [
|
|
'android',
|
|
async (config) => {
|
|
const root = config.modRequest.projectRoot;
|
|
const gradlePath = path.join(
|
|
root,
|
|
'node_modules',
|
|
'@livekit',
|
|
'react-native',
|
|
'android',
|
|
'build.gradle',
|
|
);
|
|
|
|
if (!fs.existsSync(gradlePath)) return config;
|
|
|
|
let content = fs.readFileSync(gradlePath, 'utf-8');
|
|
const oldDep = /api\s+'com\.github\.davidliu:audioswitch:[a-f0-9]+'/;
|
|
const newDep = `api 'com.twilio:audioswitch:1.1.5'`;
|
|
|
|
if (oldDep.test(content)) {
|
|
content = content.replace(oldDep, newDep);
|
|
fs.writeFileSync(gradlePath, content);
|
|
console.log('[withLivekitAudioswitchPatch] replaced davidliu JitPack audioswitch with com.twilio:audioswitch:1.1.5');
|
|
}
|
|
|
|
return config;
|
|
},
|
|
]);
|
|
|
|
module.exports = withLivekitAudioswitchPatch;
|