UNPKG

@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
"use strict"; 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;