tangled mirror of catsky-馃惐 Soothing soft social-app fork with all the niche toggles! (Unofficial); for issues and PRs please put them on github:NekoDrone/catsky-social
at main 403 lines 13 kB view raw
1const pkg = require('./package.json') 2 3module.exports = function (_config) { 4 /** 5 * App version number. Should be incremented as part of a release cycle. 6 */ 7 const VERSION = pkg.version 8 9 /** 10 * Uses built-in Expo env vars 11 * 12 * @see https://docs.expo.dev/build-reference/variables/#built-in-environment-variables 13 */ 14 const PLATFORM = process.env.EAS_BUILD_PLATFORM 15 16 const IS_TESTFLIGHT = process.env.EXPO_PUBLIC_ENV === 'testflight' 17 const IS_PRODUCTION = process.env.EXPO_PUBLIC_ENV === 'production' 18 const IS_DEV = !IS_TESTFLIGHT || !IS_PRODUCTION 19 20 const ASSOCIATED_DOMAINS = [ 21 'applinks:bsky.app', 22 'applinks:staging.bsky.app', 23 'appclips:bsky.app', 24 'appclips:go.bsky.app', // Allows App Clip to work when scanning QR codes 25 // When testing local services, enter an ngrok (et al) domain here. It must use a standard HTTP/HTTPS port. 26 ...(IS_DEV || IS_TESTFLIGHT ? [] : []), 27 ] 28 29 const UPDATES_ENABLED = IS_TESTFLIGHT || IS_PRODUCTION 30 31 const USE_SENTRY = Boolean(process.env.SENTRY_AUTH_TOKEN) 32 33 return { 34 expo: { 35 version: VERSION, 36 name: 'Catsky', 37 slug: 'catsky', 38 scheme: 'catsky', 39 owner: 'catskysocial', 40 runtimeVersion: { 41 policy: 'appVersion', 42 }, 43 icon: './assets/app-icons/ios_icon_default_next.png', 44 userInterfaceStyle: 'automatic', 45 primaryColor: '#1083fe', 46 newArchEnabled: false, 47 ios: { 48 supportsTablet: false, 49 bundleIdentifier: 'xyz.blueskyweb.app', 50 config: { 51 usesNonExemptEncryption: false, 52 }, 53 infoPlist: { 54 UIBackgroundModes: ['remote-notification'], 55 NSCameraUsageDescription: 56 'Used for profile pictures, posts, and other kinds of content.', 57 NSMicrophoneUsageDescription: 58 'Used for posts and other kinds of content.', 59 NSPhotoLibraryAddUsageDescription: 60 'Used to save images to your library.', 61 NSPhotoLibraryUsageDescription: 62 'Used for profile pictures, posts, and other kinds of content', 63 CFBundleSpokenName: 'Blue Sky', 64 CFBundleLocalizations: [ 65 'en', 66 'an', 67 'ast', 68 'ca', 69 'cy', 70 'da', 71 'de', 72 'el', 73 'eo', 74 'es', 75 'eu', 76 'fi', 77 'fr', 78 'fy', 79 'ga', 80 'gd', 81 'gl', 82 'hi', 83 'hu', 84 'ia', 85 'id', 86 'it', 87 'ja', 88 'km', 89 'ko', 90 'ne', 91 'nl', 92 'pl', 93 'pt-BR', 94 'pt-PT', 95 'ro', 96 'ru', 97 'sv', 98 'th', 99 'tr', 100 'uk', 101 'vi', 102 'yue', 103 'zh-Hans', 104 'zh-Hant', 105 ], 106 UIDesignRequiresCompatibility: true, 107 }, 108 associatedDomains: ASSOCIATED_DOMAINS, 109 entitlements: { 110 'com.apple.developer.kernel.increased-memory-limit': true, 111 'com.apple.developer.kernel.extended-virtual-addressing': true, 112 'com.apple.security.application-groups': 'group.app.bsky', 113 }, 114 privacyManifests: { 115 NSPrivacyAccessedAPITypes: [ 116 { 117 NSPrivacyAccessedAPIType: 118 'NSPrivacyAccessedAPICategoryFileTimestamp', 119 NSPrivacyAccessedAPITypeReasons: ['C617.1', '3B52.1', '0A2A.1'], 120 }, 121 { 122 NSPrivacyAccessedAPIType: 'NSPrivacyAccessedAPICategoryDiskSpace', 123 NSPrivacyAccessedAPITypeReasons: ['E174.1', '85F4.1'], 124 }, 125 { 126 NSPrivacyAccessedAPIType: 127 'NSPrivacyAccessedAPICategorySystemBootTime', 128 NSPrivacyAccessedAPITypeReasons: ['35F9.1'], 129 }, 130 { 131 NSPrivacyAccessedAPIType: 132 'NSPrivacyAccessedAPICategoryUserDefaults', 133 NSPrivacyAccessedAPITypeReasons: ['CA92.1', '1C8F.1'], 134 }, 135 ], 136 }, 137 }, 138 androidStatusBar: { 139 barStyle: 'light-content', 140 }, 141 // Dark nav bar in light mode is better than light nav bar in dark mode 142 androidNavigationBar: { 143 barStyle: 'light-content', 144 }, 145 android: { 146 icon: './assets/app-icons/android_icon_default_next.png', 147 adaptiveIcon: { 148 foregroundImage: './assets/icon-android-foreground.png', 149 monochromeImage: './assets/icon-android-foreground.png', 150 backgroundImage: './assets/icon-android-background.png', 151 backgroundColor: '#1185FE', 152 }, 153 googleServicesFile: './google-services.json', 154 package: 'social.catsky', 155 intentFilters: [ 156 { 157 action: 'VIEW', 158 autoVerify: true, 159 data: [ 160 { 161 scheme: 'https', 162 host: 'bsky.app', 163 }, 164 IS_DEV && { 165 scheme: 'http', 166 host: 'localhost:19006', 167 }, 168 ], 169 category: ['BROWSABLE', 'DEFAULT'], 170 }, 171 ], 172 }, 173 web: { 174 favicon: './assets/favicon.png', 175 }, 176 updates: { 177 url: 'https://updates.bsky.app/manifest', 178 enabled: UPDATES_ENABLED, 179 fallbackToCacheTimeout: 30000, 180 codeSigningCertificate: UPDATES_ENABLED 181 ? './code-signing/certificate.pem' 182 : undefined, 183 codeSigningMetadata: UPDATES_ENABLED 184 ? { 185 keyid: 'main', 186 alg: 'rsa-v1_5-sha256', 187 } 188 : undefined, 189 checkAutomatically: 'NEVER', 190 }, 191 plugins: [ 192 'expo-video', 193 'expo-localization', 194 'expo-web-browser', 195 [ 196 'react-native-edge-to-edge', 197 {android: {enforceNavigationBarContrast: false}}, 198 ], 199 USE_SENTRY && [ 200 '@sentry/react-native/expo', 201 { 202 organization: 'catskysocial', 203 project: 'app', 204 url: 'https://sentry.io', 205 }, 206 ], 207 [ 208 'expo-build-properties', 209 { 210 ios: { 211 deploymentTarget: '15.1', 212 buildReactNativeFromSource: true, 213 }, 214 android: { 215 compileSdkVersion: 35, 216 targetSdkVersion: 35, 217 buildToolsVersion: '35.0.0', 218 }, 219 }, 220 ], 221 [ 222 'expo-notifications', 223 { 224 icon: './assets/icon-android-notification.png', 225 color: '#1185fe', 226 sounds: PLATFORM === 'ios' ? ['assets/dm.aiff'] : ['assets/dm.mp3'], 227 }, 228 ], 229 'react-native-compressor', 230 [ 231 '@bitdrift/react-native', 232 { 233 networkInstrumentation: true, 234 }, 235 ], 236 './plugins/starterPackAppClipExtension/withStarterPackAppClip.js', 237 './plugins/withGradleJVMHeapSizeIncrease.js', 238 './plugins/withAndroidManifestLargeHeapPlugin.js', 239 './plugins/withAndroidManifestFCMIconPlugin.js', 240 './plugins/withAndroidManifestIntentQueriesPlugin.js', 241 './plugins/withAndroidStylesAccentColorPlugin.js', 242 './plugins/withAndroidDayNightThemePlugin.js', 243 './plugins/withAndroidNoJitpackPlugin.js', 244 './plugins/shareExtension/withShareExtensions.js', 245 './plugins/notificationsExtension/withNotificationsExtension.js', 246 [ 247 'expo-font', 248 { 249 fonts: [ 250 './assets/fonts/inter/InterVariable.woff2', 251 './assets/fonts/inter/InterVariable-Italic.woff2', 252 // Android only 253 './assets/fonts/inter/Inter-Regular.otf', 254 './assets/fonts/inter/Inter-Italic.otf', 255 './assets/fonts/inter/Inter-Medium.otf', 256 './assets/fonts/inter/Inter-MediumItalic.otf', 257 './assets/fonts/inter/Inter-SemiBold.otf', 258 './assets/fonts/inter/Inter-SemiBoldItalic.otf', 259 './assets/fonts/inter/Inter-Bold.otf', 260 './assets/fonts/inter/Inter-BoldItalic.otf', 261 ], 262 }, 263 ], 264 [ 265 'expo-splash-screen', 266 { 267 ios: { 268 enableFullScreenImage_legacy: true, 269 backgroundColor: '#ffffff', 270 image: './assets/splash.png', 271 resizeMode: 'cover', 272 dark: { 273 enableFullScreenImage_legacy: true, 274 backgroundColor: '#001429', 275 image: './assets/splash-dark.png', 276 resizeMode: 'cover', 277 }, 278 }, 279 android: { 280 backgroundColor: '#eff1f5', 281 image: './assets/splash-android-icon.png', 282 imageWidth: 150, 283 dark: { 284 backgroundColor: '#1e1e2e', 285 image: './assets/splash-android-icon.png', 286 imageWidth: 150, 287 }, 288 }, 289 }, 290 ], 291 [ 292 '@mozzius/expo-dynamic-app-icon', 293 { 294 /** 295 * Default set 296 */ 297 default_light: { 298 ios: './assets/app-icons/ios_icon_default_light.png', 299 android: './assets/app-icons/android_icon_default_light.png', 300 prerendered: true, 301 }, 302 default_dark: { 303 ios: './assets/app-icons/ios_icon_default_dark.png', 304 android: './assets/app-icons/android_icon_default_dark.png', 305 prerendered: true, 306 }, 307 next: { 308 ios: './assets/app-icons/ios_icon_default_next.png', 309 android: './assets/app-icons/android_icon_default_next.png', 310 prerendered: true, 311 }, 312 313 /** 314 * Bluesky+ core set 315 */ 316 core_aurora: { 317 ios: './assets/app-icons/ios_icon_core_aurora.png', 318 android: './assets/app-icons/android_icon_core_aurora.png', 319 prerendered: true, 320 }, 321 core_bonfire: { 322 ios: './assets/app-icons/ios_icon_core_bonfire.png', 323 android: './assets/app-icons/android_icon_core_bonfire.png', 324 prerendered: true, 325 }, 326 core_sunrise: { 327 ios: './assets/app-icons/ios_icon_core_sunrise.png', 328 android: './assets/app-icons/android_icon_core_sunrise.png', 329 prerendered: true, 330 }, 331 core_sunset: { 332 ios: './assets/app-icons/ios_icon_core_sunset.png', 333 android: './assets/app-icons/android_icon_core_sunset.png', 334 prerendered: true, 335 }, 336 core_midnight: { 337 ios: './assets/app-icons/ios_icon_core_midnight.png', 338 android: './assets/app-icons/android_icon_core_midnight.png', 339 prerendered: true, 340 }, 341 core_flat_blue: { 342 ios: './assets/app-icons/ios_icon_core_flat_blue.png', 343 android: './assets/app-icons/android_icon_core_flat_blue.png', 344 prerendered: true, 345 }, 346 core_flat_white: { 347 ios: './assets/app-icons/ios_icon_core_flat_white.png', 348 android: './assets/app-icons/android_icon_core_flat_white.png', 349 prerendered: true, 350 }, 351 core_flat_black: { 352 ios: './assets/app-icons/ios_icon_core_flat_black.png', 353 android: './assets/app-icons/android_icon_core_flat_black.png', 354 prerendered: true, 355 }, 356 core_classic: { 357 ios: './assets/app-icons/ios_icon_core_classic.png', 358 android: './assets/app-icons/android_icon_core_classic.png', 359 prerendered: true, 360 }, 361 }, 362 ], 363 ['expo-screen-orientation', {initialOrientation: 'PORTRAIT_UP'}], 364 ['expo-location'], 365 ].filter(Boolean), 366 extra: { 367 eas: { 368 build: { 369 experimental: { 370 ios: { 371 appExtensions: [ 372 { 373 targetName: 'Share-with-Bluesky', 374 bundleIdentifier: 'xyz.blueskyweb.app.Share-with-Bluesky', 375 entitlements: { 376 'com.apple.security.application-groups': [ 377 'group.app.bsky', 378 ], 379 }, 380 }, 381 { 382 targetName: 'BlueskyNSE', 383 bundleIdentifier: 'xyz.blueskyweb.app.BlueskyNSE', 384 entitlements: { 385 'com.apple.security.application-groups': [ 386 'group.app.bsky', 387 ], 388 }, 389 }, 390 { 391 targetName: 'BlueskyClip', 392 bundleIdentifier: 'xyz.blueskyweb.app.AppClip', 393 }, 394 ], 395 }, 396 }, 397 }, 398 projectId: '55bd077a-d905-4184-9c7f-94789ba0f302', 399 }, 400 }, 401 }, 402 } 403}