@wwdrew/expo-spotify-sdk
Version:
Expo module wrapping the native Spotify iOS (v5) and Android (v4) SDKs for OAuth authentication and App Remote playback control
38 lines (37 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.withSpotifyAndroidAppBuildGradle = void 0;
const config_plugins_1 = require("@expo/config-plugins");
const SENTINEL_KEY = "spotifyClientId";
const DEFAULT_REDIRECT_PATH_PATTERN = ".*";
const withSpotifyAndroidAppBuildGradle = (config, spotifyConfig) => {
return (0, config_plugins_1.withAppBuildGradle)(config, (config) => {
if (config.modResults.contents.includes(SENTINEL_KEY)) {
// Already injected on a previous prebuild; bail to keep this modifier
// idempotent. Run `expo prebuild --clean` to force a refresh.
return config;
}
const redirectPathPattern = spotifyConfig.redirectPathPattern ?? DEFAULT_REDIRECT_PATH_PATTERN;
const placeholders = ` manifestPlaceholders = [
spotifyClientId: "${spotifyConfig.clientID}",
spotifyRedirectUri: "${spotifyConfig.scheme}://${spotifyConfig.host}",
redirectSchemeName: "${spotifyConfig.scheme}",
redirectHostName: "${spotifyConfig.host}",
redirectPathPattern: "${redirectPathPattern}"
]`;
const defaultConfigPattern = /(defaultConfig\s*\{[\s\S]*?)(\n\s*})/m;
if (defaultConfigPattern.test(config.modResults.contents)) {
config.modResults.contents = config.modResults.contents.replace(defaultConfigPattern, `$1\n${placeholders}$2`);
}
else {
config.modResults.contents += `
android {
defaultConfig {
${placeholders}
}
}`;
}
return config;
});
};
exports.withSpotifyAndroidAppBuildGradle = withSpotifyAndroidAppBuildGradle;