mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
fork

Configure Feed

Select the types of activity you want to include in your feed.

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