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