forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1diff --git a/node_modules/expo-notifications/android/.gradle/8.10/checksums/checksums.lock b/node_modules/expo-notifications/android/.gradle/8.10/checksums/checksums.lock
2new file mode 100644
3index 0000000..883ef6a
4Binary files /dev/null and b/node_modules/expo-notifications/android/.gradle/8.10/checksums/checksums.lock differ
5diff --git a/node_modules/expo-notifications/android/.gradle/8.10/dependencies-accessors/gc.properties b/node_modules/expo-notifications/android/.gradle/8.10/dependencies-accessors/gc.properties
6new file mode 100644
7index 0000000..e69de29
8diff --git a/node_modules/expo-notifications/android/.gradle/8.10/fileChanges/last-build.bin b/node_modules/expo-notifications/android/.gradle/8.10/fileChanges/last-build.bin
9new file mode 100644
10index 0000000..f76dd23
11Binary files /dev/null and b/node_modules/expo-notifications/android/.gradle/8.10/fileChanges/last-build.bin differ
12diff --git a/node_modules/expo-notifications/android/.gradle/8.10/fileHashes/fileHashes.lock b/node_modules/expo-notifications/android/.gradle/8.10/fileHashes/fileHashes.lock
13new file mode 100644
14index 0000000..774caf7
15Binary files /dev/null and b/node_modules/expo-notifications/android/.gradle/8.10/fileHashes/fileHashes.lock differ
16diff --git a/node_modules/expo-notifications/android/.gradle/8.10/gc.properties b/node_modules/expo-notifications/android/.gradle/8.10/gc.properties
17new file mode 100644
18index 0000000..e69de29
19diff --git a/node_modules/expo-notifications/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/node_modules/expo-notifications/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock
20new file mode 100644
21index 0000000..a3c1514
22Binary files /dev/null and b/node_modules/expo-notifications/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
23diff --git a/node_modules/expo-notifications/android/.gradle/buildOutputCleanup/cache.properties b/node_modules/expo-notifications/android/.gradle/buildOutputCleanup/cache.properties
24new file mode 100644
25index 0000000..0e5b4da
26--- /dev/null
27+++ b/node_modules/expo-notifications/android/.gradle/buildOutputCleanup/cache.properties
28@@ -0,0 +1,2 @@
29+#Thu Apr 24 20:44:36 PDT 2025
30+gradle.version=8.10
31diff --git a/node_modules/expo-notifications/android/.gradle/config.properties b/node_modules/expo-notifications/android/.gradle/config.properties
32new file mode 100644
33index 0000000..0bd71c6
34--- /dev/null
35+++ b/node_modules/expo-notifications/android/.gradle/config.properties
36@@ -0,0 +1,2 @@
37+#Thu Apr 24 20:44:32 PDT 2025
38+java.home=/Applications/Android Studio.app/Contents/jbr/Contents/Home
39diff --git a/node_modules/expo-notifications/android/.gradle/vcs-1/gc.properties b/node_modules/expo-notifications/android/.gradle/vcs-1/gc.properties
40new file mode 100644
41index 0000000..e69de29
42diff --git a/node_modules/expo-notifications/android/.idea/.gitignore b/node_modules/expo-notifications/android/.idea/.gitignore
43new file mode 100644
44index 0000000..26d3352
45--- /dev/null
46+++ b/node_modules/expo-notifications/android/.idea/.gitignore
47@@ -0,0 +1,3 @@
48+# Default ignored files
49+/shelf/
50+/workspace.xml
51diff --git a/node_modules/expo-notifications/android/.idea/AndroidProjectSystem.xml b/node_modules/expo-notifications/android/.idea/AndroidProjectSystem.xml
52new file mode 100644
53index 0000000..4a53bee
54--- /dev/null
55+++ b/node_modules/expo-notifications/android/.idea/AndroidProjectSystem.xml
56@@ -0,0 +1,6 @@
57+<?xml version="1.0" encoding="UTF-8"?>
58+<project version="4">
59+ <component name="AndroidProjectSystem">
60+ <option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
61+ </component>
62+</project>
63\ No newline at end of file
64diff --git a/node_modules/expo-notifications/android/.idea/caches/deviceStreaming.xml b/node_modules/expo-notifications/android/.idea/caches/deviceStreaming.xml
65new file mode 100644
66index 0000000..9e9ba09
67--- /dev/null
68+++ b/node_modules/expo-notifications/android/.idea/caches/deviceStreaming.xml
69@@ -0,0 +1,607 @@
70+<?xml version="1.0" encoding="UTF-8"?>
71+<project version="4">
72+ <component name="DeviceStreaming">
73+ <option name="deviceSelectionList">
74+ <list>
75+ <PersistentDeviceSelectionData>
76+ <option name="api" value="27" />
77+ <option name="brand" value="DOCOMO" />
78+ <option name="codename" value="F01L" />
79+ <option name="id" value="F01L" />
80+ <option name="labId" value="google" />
81+ <option name="manufacturer" value="FUJITSU" />
82+ <option name="name" value="F-01L" />
83+ <option name="screenDensity" value="360" />
84+ <option name="screenX" value="720" />
85+ <option name="screenY" value="1280" />
86+ </PersistentDeviceSelectionData>
87+ <PersistentDeviceSelectionData>
88+ <option name="api" value="34" />
89+ <option name="brand" value="OnePlus" />
90+ <option name="codename" value="OP5552L1" />
91+ <option name="id" value="OP5552L1" />
92+ <option name="labId" value="google" />
93+ <option name="manufacturer" value="OnePlus" />
94+ <option name="name" value="CPH2415" />
95+ <option name="screenDensity" value="480" />
96+ <option name="screenX" value="1080" />
97+ <option name="screenY" value="2412" />
98+ </PersistentDeviceSelectionData>
99+ <PersistentDeviceSelectionData>
100+ <option name="api" value="34" />
101+ <option name="brand" value="OPPO" />
102+ <option name="codename" value="OP573DL1" />
103+ <option name="id" value="OP573DL1" />
104+ <option name="labId" value="google" />
105+ <option name="manufacturer" value="OPPO" />
106+ <option name="name" value="CPH2557" />
107+ <option name="screenDensity" value="480" />
108+ <option name="screenX" value="1080" />
109+ <option name="screenY" value="2400" />
110+ </PersistentDeviceSelectionData>
111+ <PersistentDeviceSelectionData>
112+ <option name="api" value="28" />
113+ <option name="brand" value="DOCOMO" />
114+ <option name="codename" value="SH-01L" />
115+ <option name="id" value="SH-01L" />
116+ <option name="labId" value="google" />
117+ <option name="manufacturer" value="SHARP" />
118+ <option name="name" value="AQUOS sense2 SH-01L" />
119+ <option name="screenDensity" value="480" />
120+ <option name="screenX" value="1080" />
121+ <option name="screenY" value="2160" />
122+ </PersistentDeviceSelectionData>
123+ <PersistentDeviceSelectionData>
124+ <option name="api" value="34" />
125+ <option name="brand" value="Lenovo" />
126+ <option name="codename" value="TB370FU" />
127+ <option name="formFactor" value="Tablet" />
128+ <option name="id" value="TB370FU" />
129+ <option name="labId" value="google" />
130+ <option name="manufacturer" value="Lenovo" />
131+ <option name="name" value="Tab P12" />
132+ <option name="screenDensity" value="340" />
133+ <option name="screenX" value="1840" />
134+ <option name="screenY" value="2944" />
135+ </PersistentDeviceSelectionData>
136+ <PersistentDeviceSelectionData>
137+ <option name="api" value="34" />
138+ <option name="brand" value="samsung" />
139+ <option name="codename" value="a15" />
140+ <option name="id" value="a15" />
141+ <option name="labId" value="google" />
142+ <option name="manufacturer" value="Samsung" />
143+ <option name="name" value="A15" />
144+ <option name="screenDensity" value="450" />
145+ <option name="screenX" value="1080" />
146+ <option name="screenY" value="2340" />
147+ </PersistentDeviceSelectionData>
148+ <PersistentDeviceSelectionData>
149+ <option name="api" value="34" />
150+ <option name="brand" value="samsung" />
151+ <option name="codename" value="a35x" />
152+ <option name="id" value="a35x" />
153+ <option name="labId" value="google" />
154+ <option name="manufacturer" value="Samsung" />
155+ <option name="name" value="A35" />
156+ <option name="screenDensity" value="450" />
157+ <option name="screenX" value="1080" />
158+ <option name="screenY" value="2340" />
159+ </PersistentDeviceSelectionData>
160+ <PersistentDeviceSelectionData>
161+ <option name="api" value="31" />
162+ <option name="brand" value="samsung" />
163+ <option name="codename" value="a51" />
164+ <option name="id" value="a51" />
165+ <option name="labId" value="google" />
166+ <option name="manufacturer" value="Samsung" />
167+ <option name="name" value="Galaxy A51" />
168+ <option name="screenDensity" value="420" />
169+ <option name="screenX" value="1080" />
170+ <option name="screenY" value="2400" />
171+ </PersistentDeviceSelectionData>
172+ <PersistentDeviceSelectionData>
173+ <option name="api" value="34" />
174+ <option name="brand" value="google" />
175+ <option name="codename" value="akita" />
176+ <option name="id" value="akita" />
177+ <option name="labId" value="google" />
178+ <option name="manufacturer" value="Google" />
179+ <option name="name" value="Pixel 8a" />
180+ <option name="screenDensity" value="420" />
181+ <option name="screenX" value="1080" />
182+ <option name="screenY" value="2400" />
183+ </PersistentDeviceSelectionData>
184+ <PersistentDeviceSelectionData>
185+ <option name="api" value="34" />
186+ <option name="brand" value="motorola" />
187+ <option name="codename" value="arcfox" />
188+ <option name="id" value="arcfox" />
189+ <option name="labId" value="google" />
190+ <option name="manufacturer" value="Motorola" />
191+ <option name="name" value="razr plus 2024" />
192+ <option name="screenDensity" value="360" />
193+ <option name="screenX" value="1080" />
194+ <option name="screenY" value="1272" />
195+ </PersistentDeviceSelectionData>
196+ <PersistentDeviceSelectionData>
197+ <option name="api" value="33" />
198+ <option name="brand" value="motorola" />
199+ <option name="codename" value="austin" />
200+ <option name="id" value="austin" />
201+ <option name="labId" value="google" />
202+ <option name="manufacturer" value="Motorola" />
203+ <option name="name" value="moto g 5G (2022)" />
204+ <option name="screenDensity" value="280" />
205+ <option name="screenX" value="720" />
206+ <option name="screenY" value="1600" />
207+ </PersistentDeviceSelectionData>
208+ <PersistentDeviceSelectionData>
209+ <option name="api" value="33" />
210+ <option name="brand" value="samsung" />
211+ <option name="codename" value="b0q" />
212+ <option name="id" value="b0q" />
213+ <option name="labId" value="google" />
214+ <option name="manufacturer" value="Samsung" />
215+ <option name="name" value="Galaxy S22 Ultra" />
216+ <option name="screenDensity" value="600" />
217+ <option name="screenX" value="1440" />
218+ <option name="screenY" value="3088" />
219+ </PersistentDeviceSelectionData>
220+ <PersistentDeviceSelectionData>
221+ <option name="api" value="32" />
222+ <option name="brand" value="google" />
223+ <option name="codename" value="bluejay" />
224+ <option name="id" value="bluejay" />
225+ <option name="labId" value="google" />
226+ <option name="manufacturer" value="Google" />
227+ <option name="name" value="Pixel 6a" />
228+ <option name="screenDensity" value="420" />
229+ <option name="screenX" value="1080" />
230+ <option name="screenY" value="2400" />
231+ </PersistentDeviceSelectionData>
232+ <PersistentDeviceSelectionData>
233+ <option name="api" value="34" />
234+ <option name="brand" value="google" />
235+ <option name="codename" value="caiman" />
236+ <option name="id" value="caiman" />
237+ <option name="labId" value="google" />
238+ <option name="manufacturer" value="Google" />
239+ <option name="name" value="Pixel 9 Pro" />
240+ <option name="screenDensity" value="360" />
241+ <option name="screenX" value="960" />
242+ <option name="screenY" value="2142" />
243+ </PersistentDeviceSelectionData>
244+ <PersistentDeviceSelectionData>
245+ <option name="api" value="34" />
246+ <option name="brand" value="google" />
247+ <option name="codename" value="comet" />
248+ <option name="default" value="true" />
249+ <option name="id" value="comet" />
250+ <option name="labId" value="google" />
251+ <option name="manufacturer" value="Google" />
252+ <option name="name" value="Pixel 9 Pro Fold" />
253+ <option name="screenDensity" value="390" />
254+ <option name="screenX" value="2076" />
255+ <option name="screenY" value="2152" />
256+ </PersistentDeviceSelectionData>
257+ <PersistentDeviceSelectionData>
258+ <option name="api" value="29" />
259+ <option name="brand" value="samsung" />
260+ <option name="codename" value="crownqlteue" />
261+ <option name="id" value="crownqlteue" />
262+ <option name="labId" value="google" />
263+ <option name="manufacturer" value="Samsung" />
264+ <option name="name" value="Galaxy Note9" />
265+ <option name="screenDensity" value="420" />
266+ <option name="screenX" value="2220" />
267+ <option name="screenY" value="1080" />
268+ </PersistentDeviceSelectionData>
269+ <PersistentDeviceSelectionData>
270+ <option name="api" value="34" />
271+ <option name="brand" value="samsung" />
272+ <option name="codename" value="dm2q" />
273+ <option name="id" value="dm2q" />
274+ <option name="labId" value="google" />
275+ <option name="manufacturer" value="Samsung" />
276+ <option name="name" value="S23 Plus" />
277+ <option name="screenDensity" value="450" />
278+ <option name="screenX" value="1080" />
279+ <option name="screenY" value="2340" />
280+ </PersistentDeviceSelectionData>
281+ <PersistentDeviceSelectionData>
282+ <option name="api" value="34" />
283+ <option name="brand" value="samsung" />
284+ <option name="codename" value="dm3q" />
285+ <option name="id" value="dm3q" />
286+ <option name="labId" value="google" />
287+ <option name="manufacturer" value="Samsung" />
288+ <option name="name" value="Galaxy S23 Ultra" />
289+ <option name="screenDensity" value="600" />
290+ <option name="screenX" value="1440" />
291+ <option name="screenY" value="3088" />
292+ </PersistentDeviceSelectionData>
293+ <PersistentDeviceSelectionData>
294+ <option name="api" value="34" />
295+ <option name="brand" value="samsung" />
296+ <option name="codename" value="e1q" />
297+ <option name="default" value="true" />
298+ <option name="id" value="e1q" />
299+ <option name="labId" value="google" />
300+ <option name="manufacturer" value="Samsung" />
301+ <option name="name" value="Galaxy S24" />
302+ <option name="screenDensity" value="480" />
303+ <option name="screenX" value="1080" />
304+ <option name="screenY" value="2340" />
305+ </PersistentDeviceSelectionData>
306+ <PersistentDeviceSelectionData>
307+ <option name="api" value="34" />
308+ <option name="brand" value="samsung" />
309+ <option name="codename" value="e3q" />
310+ <option name="id" value="e3q" />
311+ <option name="labId" value="google" />
312+ <option name="manufacturer" value="Samsung" />
313+ <option name="name" value="Galaxy S24 Ultra" />
314+ <option name="screenDensity" value="450" />
315+ <option name="screenX" value="1440" />
316+ <option name="screenY" value="3120" />
317+ </PersistentDeviceSelectionData>
318+ <PersistentDeviceSelectionData>
319+ <option name="api" value="33" />
320+ <option name="brand" value="google" />
321+ <option name="codename" value="eos" />
322+ <option name="id" value="eos" />
323+ <option name="labId" value="google" />
324+ <option name="manufacturer" value="Google" />
325+ <option name="name" value="Eos" />
326+ <option name="screenDensity" value="320" />
327+ <option name="screenX" value="384" />
328+ <option name="screenY" value="384" />
329+ </PersistentDeviceSelectionData>
330+ <PersistentDeviceSelectionData>
331+ <option name="api" value="33" />
332+ <option name="brand" value="google" />
333+ <option name="codename" value="felix" />
334+ <option name="id" value="felix" />
335+ <option name="labId" value="google" />
336+ <option name="manufacturer" value="Google" />
337+ <option name="name" value="Pixel Fold" />
338+ <option name="screenDensity" value="420" />
339+ <option name="screenX" value="2208" />
340+ <option name="screenY" value="1840" />
341+ </PersistentDeviceSelectionData>
342+ <PersistentDeviceSelectionData>
343+ <option name="api" value="34" />
344+ <option name="brand" value="google" />
345+ <option name="codename" value="felix" />
346+ <option name="id" value="felix" />
347+ <option name="labId" value="google" />
348+ <option name="manufacturer" value="Google" />
349+ <option name="name" value="Pixel Fold" />
350+ <option name="screenDensity" value="420" />
351+ <option name="screenX" value="2208" />
352+ <option name="screenY" value="1840" />
353+ </PersistentDeviceSelectionData>
354+ <PersistentDeviceSelectionData>
355+ <option name="api" value="33" />
356+ <option name="brand" value="google" />
357+ <option name="codename" value="felix_camera" />
358+ <option name="id" value="felix_camera" />
359+ <option name="labId" value="google" />
360+ <option name="manufacturer" value="Google" />
361+ <option name="name" value="Pixel Fold (Camera-enabled)" />
362+ <option name="screenDensity" value="420" />
363+ <option name="screenX" value="2208" />
364+ <option name="screenY" value="1840" />
365+ </PersistentDeviceSelectionData>
366+ <PersistentDeviceSelectionData>
367+ <option name="api" value="34" />
368+ <option name="brand" value="motorola" />
369+ <option name="codename" value="fogona" />
370+ <option name="id" value="fogona" />
371+ <option name="labId" value="google" />
372+ <option name="manufacturer" value="Motorola" />
373+ <option name="name" value="moto g play - 2024" />
374+ <option name="screenDensity" value="280" />
375+ <option name="screenX" value="720" />
376+ <option name="screenY" value="1600" />
377+ </PersistentDeviceSelectionData>
378+ <PersistentDeviceSelectionData>
379+ <option name="api" value="34" />
380+ <option name="brand" value="samsung" />
381+ <option name="codename" value="g0q" />
382+ <option name="id" value="g0q" />
383+ <option name="labId" value="google" />
384+ <option name="manufacturer" value="Samsung" />
385+ <option name="name" value="SM-S906U1" />
386+ <option name="screenDensity" value="450" />
387+ <option name="screenX" value="1080" />
388+ <option name="screenY" value="2340" />
389+ </PersistentDeviceSelectionData>
390+ <PersistentDeviceSelectionData>
391+ <option name="api" value="34" />
392+ <option name="brand" value="samsung" />
393+ <option name="codename" value="gta9pwifi" />
394+ <option name="id" value="gta9pwifi" />
395+ <option name="labId" value="google" />
396+ <option name="manufacturer" value="Samsung" />
397+ <option name="name" value="SM-X210" />
398+ <option name="screenDensity" value="240" />
399+ <option name="screenX" value="1200" />
400+ <option name="screenY" value="1920" />
401+ </PersistentDeviceSelectionData>
402+ <PersistentDeviceSelectionData>
403+ <option name="api" value="34" />
404+ <option name="brand" value="samsung" />
405+ <option name="codename" value="gts7xllite" />
406+ <option name="id" value="gts7xllite" />
407+ <option name="labId" value="google" />
408+ <option name="manufacturer" value="Samsung" />
409+ <option name="name" value="SM-T738U" />
410+ <option name="screenDensity" value="340" />
411+ <option name="screenX" value="1600" />
412+ <option name="screenY" value="2560" />
413+ </PersistentDeviceSelectionData>
414+ <PersistentDeviceSelectionData>
415+ <option name="api" value="33" />
416+ <option name="brand" value="samsung" />
417+ <option name="codename" value="gts8uwifi" />
418+ <option name="formFactor" value="Tablet" />
419+ <option name="id" value="gts8uwifi" />
420+ <option name="labId" value="google" />
421+ <option name="manufacturer" value="Samsung" />
422+ <option name="name" value="Galaxy Tab S8 Ultra" />
423+ <option name="screenDensity" value="320" />
424+ <option name="screenX" value="1848" />
425+ <option name="screenY" value="2960" />
426+ </PersistentDeviceSelectionData>
427+ <PersistentDeviceSelectionData>
428+ <option name="api" value="34" />
429+ <option name="brand" value="samsung" />
430+ <option name="codename" value="gts8wifi" />
431+ <option name="formFactor" value="Tablet" />
432+ <option name="id" value="gts8wifi" />
433+ <option name="labId" value="google" />
434+ <option name="manufacturer" value="Samsung" />
435+ <option name="name" value="Galaxy Tab S8" />
436+ <option name="screenDensity" value="274" />
437+ <option name="screenX" value="1600" />
438+ <option name="screenY" value="2560" />
439+ </PersistentDeviceSelectionData>
440+ <PersistentDeviceSelectionData>
441+ <option name="api" value="34" />
442+ <option name="brand" value="samsung" />
443+ <option name="codename" value="gts9fe" />
444+ <option name="id" value="gts9fe" />
445+ <option name="labId" value="google" />
446+ <option name="manufacturer" value="Samsung" />
447+ <option name="name" value="Galaxy Tab S9 FE 5G" />
448+ <option name="screenDensity" value="280" />
449+ <option name="screenX" value="1440" />
450+ <option name="screenY" value="2304" />
451+ </PersistentDeviceSelectionData>
452+ <PersistentDeviceSelectionData>
453+ <option name="api" value="34" />
454+ <option name="brand" value="google" />
455+ <option name="codename" value="husky" />
456+ <option name="id" value="husky" />
457+ <option name="labId" value="google" />
458+ <option name="manufacturer" value="Google" />
459+ <option name="name" value="Pixel 8 Pro" />
460+ <option name="screenDensity" value="390" />
461+ <option name="screenX" value="1008" />
462+ <option name="screenY" value="2244" />
463+ </PersistentDeviceSelectionData>
464+ <PersistentDeviceSelectionData>
465+ <option name="api" value="30" />
466+ <option name="brand" value="motorola" />
467+ <option name="codename" value="java" />
468+ <option name="id" value="java" />
469+ <option name="labId" value="google" />
470+ <option name="manufacturer" value="Motorola" />
471+ <option name="name" value="G20" />
472+ <option name="screenDensity" value="280" />
473+ <option name="screenX" value="720" />
474+ <option name="screenY" value="1600" />
475+ </PersistentDeviceSelectionData>
476+ <PersistentDeviceSelectionData>
477+ <option name="api" value="34" />
478+ <option name="brand" value="google" />
479+ <option name="codename" value="komodo" />
480+ <option name="id" value="komodo" />
481+ <option name="labId" value="google" />
482+ <option name="manufacturer" value="Google" />
483+ <option name="name" value="Pixel 9 Pro XL" />
484+ <option name="screenDensity" value="360" />
485+ <option name="screenX" value="1008" />
486+ <option name="screenY" value="2244" />
487+ </PersistentDeviceSelectionData>
488+ <PersistentDeviceSelectionData>
489+ <option name="api" value="33" />
490+ <option name="brand" value="google" />
491+ <option name="codename" value="lynx" />
492+ <option name="id" value="lynx" />
493+ <option name="labId" value="google" />
494+ <option name="manufacturer" value="Google" />
495+ <option name="name" value="Pixel 7a" />
496+ <option name="screenDensity" value="420" />
497+ <option name="screenX" value="1080" />
498+ <option name="screenY" value="2400" />
499+ </PersistentDeviceSelectionData>
500+ <PersistentDeviceSelectionData>
501+ <option name="api" value="33" />
502+ <option name="brand" value="motorola" />
503+ <option name="codename" value="maui" />
504+ <option name="id" value="maui" />
505+ <option name="labId" value="google" />
506+ <option name="manufacturer" value="Motorola" />
507+ <option name="name" value="moto g play - 2023" />
508+ <option name="screenDensity" value="280" />
509+ <option name="screenX" value="720" />
510+ <option name="screenY" value="1600" />
511+ </PersistentDeviceSelectionData>
512+ <PersistentDeviceSelectionData>
513+ <option name="api" value="34" />
514+ <option name="brand" value="samsung" />
515+ <option name="codename" value="o1q" />
516+ <option name="id" value="o1q" />
517+ <option name="labId" value="google" />
518+ <option name="manufacturer" value="Samsung" />
519+ <option name="name" value="Galaxy S21" />
520+ <option name="screenDensity" value="421" />
521+ <option name="screenX" value="1080" />
522+ <option name="screenY" value="2400" />
523+ </PersistentDeviceSelectionData>
524+ <PersistentDeviceSelectionData>
525+ <option name="api" value="31" />
526+ <option name="brand" value="google" />
527+ <option name="codename" value="oriole" />
528+ <option name="id" value="oriole" />
529+ <option name="labId" value="google" />
530+ <option name="manufacturer" value="Google" />
531+ <option name="name" value="Pixel 6" />
532+ <option name="screenDensity" value="420" />
533+ <option name="screenX" value="1080" />
534+ <option name="screenY" value="2400" />
535+ </PersistentDeviceSelectionData>
536+ <PersistentDeviceSelectionData>
537+ <option name="api" value="33" />
538+ <option name="brand" value="google" />
539+ <option name="codename" value="panther" />
540+ <option name="id" value="panther" />
541+ <option name="labId" value="google" />
542+ <option name="manufacturer" value="Google" />
543+ <option name="name" value="Pixel 7" />
544+ <option name="screenDensity" value="420" />
545+ <option name="screenX" value="1080" />
546+ <option name="screenY" value="2400" />
547+ </PersistentDeviceSelectionData>
548+ <PersistentDeviceSelectionData>
549+ <option name="api" value="34" />
550+ <option name="brand" value="samsung" />
551+ <option name="codename" value="q5q" />
552+ <option name="id" value="q5q" />
553+ <option name="labId" value="google" />
554+ <option name="manufacturer" value="Samsung" />
555+ <option name="name" value="Galaxy Z Fold5" />
556+ <option name="screenDensity" value="420" />
557+ <option name="screenX" value="1812" />
558+ <option name="screenY" value="2176" />
559+ </PersistentDeviceSelectionData>
560+ <PersistentDeviceSelectionData>
561+ <option name="api" value="34" />
562+ <option name="brand" value="samsung" />
563+ <option name="codename" value="q6q" />
564+ <option name="id" value="q6q" />
565+ <option name="labId" value="google" />
566+ <option name="manufacturer" value="Samsung" />
567+ <option name="name" value="Galaxy Z Fold6" />
568+ <option name="screenDensity" value="420" />
569+ <option name="screenX" value="1856" />
570+ <option name="screenY" value="2160" />
571+ </PersistentDeviceSelectionData>
572+ <PersistentDeviceSelectionData>
573+ <option name="api" value="30" />
574+ <option name="brand" value="google" />
575+ <option name="codename" value="r11" />
576+ <option name="formFactor" value="Wear OS" />
577+ <option name="id" value="r11" />
578+ <option name="labId" value="google" />
579+ <option name="manufacturer" value="Google" />
580+ <option name="name" value="Pixel Watch" />
581+ <option name="screenDensity" value="320" />
582+ <option name="screenX" value="384" />
583+ <option name="screenY" value="384" />
584+ <option name="type" value="WEAR_OS" />
585+ </PersistentDeviceSelectionData>
586+ <PersistentDeviceSelectionData>
587+ <option name="api" value="34" />
588+ <option name="brand" value="samsung" />
589+ <option name="codename" value="r11q" />
590+ <option name="id" value="r11q" />
591+ <option name="labId" value="google" />
592+ <option name="manufacturer" value="Samsung" />
593+ <option name="name" value="SM-S711U" />
594+ <option name="screenDensity" value="450" />
595+ <option name="screenX" value="1080" />
596+ <option name="screenY" value="2340" />
597+ </PersistentDeviceSelectionData>
598+ <PersistentDeviceSelectionData>
599+ <option name="api" value="30" />
600+ <option name="brand" value="google" />
601+ <option name="codename" value="redfin" />
602+ <option name="id" value="redfin" />
603+ <option name="labId" value="google" />
604+ <option name="manufacturer" value="Google" />
605+ <option name="name" value="Pixel 5" />
606+ <option name="screenDensity" value="440" />
607+ <option name="screenX" value="1080" />
608+ <option name="screenY" value="2340" />
609+ </PersistentDeviceSelectionData>
610+ <PersistentDeviceSelectionData>
611+ <option name="api" value="34" />
612+ <option name="brand" value="google" />
613+ <option name="codename" value="shiba" />
614+ <option name="id" value="shiba" />
615+ <option name="labId" value="google" />
616+ <option name="manufacturer" value="Google" />
617+ <option name="name" value="Pixel 8" />
618+ <option name="screenDensity" value="420" />
619+ <option name="screenX" value="1080" />
620+ <option name="screenY" value="2400" />
621+ </PersistentDeviceSelectionData>
622+ <PersistentDeviceSelectionData>
623+ <option name="api" value="34" />
624+ <option name="brand" value="samsung" />
625+ <option name="codename" value="t2q" />
626+ <option name="id" value="t2q" />
627+ <option name="labId" value="google" />
628+ <option name="manufacturer" value="Samsung" />
629+ <option name="name" value="Galaxy S21 Plus" />
630+ <option name="screenDensity" value="394" />
631+ <option name="screenX" value="1080" />
632+ <option name="screenY" value="2400" />
633+ </PersistentDeviceSelectionData>
634+ <PersistentDeviceSelectionData>
635+ <option name="api" value="33" />
636+ <option name="brand" value="google" />
637+ <option name="codename" value="tangorpro" />
638+ <option name="formFactor" value="Tablet" />
639+ <option name="id" value="tangorpro" />
640+ <option name="labId" value="google" />
641+ <option name="manufacturer" value="Google" />
642+ <option name="name" value="Pixel Tablet" />
643+ <option name="screenDensity" value="320" />
644+ <option name="screenX" value="1600" />
645+ <option name="screenY" value="2560" />
646+ </PersistentDeviceSelectionData>
647+ <PersistentDeviceSelectionData>
648+ <option name="api" value="34" />
649+ <option name="brand" value="google" />
650+ <option name="codename" value="tokay" />
651+ <option name="default" value="true" />
652+ <option name="id" value="tokay" />
653+ <option name="labId" value="google" />
654+ <option name="manufacturer" value="Google" />
655+ <option name="name" value="Pixel 9" />
656+ <option name="screenDensity" value="420" />
657+ <option name="screenX" value="1080" />
658+ <option name="screenY" value="2424" />
659+ </PersistentDeviceSelectionData>
660+ <PersistentDeviceSelectionData>
661+ <option name="api" value="35" />
662+ <option name="brand" value="google" />
663+ <option name="codename" value="tokay" />
664+ <option name="default" value="true" />
665+ <option name="id" value="tokay" />
666+ <option name="labId" value="google" />
667+ <option name="manufacturer" value="Google" />
668+ <option name="name" value="Pixel 9" />
669+ <option name="screenDensity" value="420" />
670+ <option name="screenX" value="1080" />
671+ <option name="screenY" value="2424" />
672+ </PersistentDeviceSelectionData>
673+ </list>
674+ </option>
675+ </component>
676+</project>
677\ No newline at end of file
678diff --git a/node_modules/expo-notifications/android/.idea/gradle.xml b/node_modules/expo-notifications/android/.idea/gradle.xml
679new file mode 100644
680index 0000000..b838237
681--- /dev/null
682+++ b/node_modules/expo-notifications/android/.idea/gradle.xml
683@@ -0,0 +1,12 @@
684+<?xml version="1.0" encoding="UTF-8"?>
685+<project version="4">
686+ <component name="GradleSettings">
687+ <option name="linkedExternalProjectsSettings">
688+ <GradleProjectSettings>
689+ <option name="testRunner" value="CHOOSE_PER_TEST" />
690+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
691+ <option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
692+ </GradleProjectSettings>
693+ </option>
694+ </component>
695+</project>
696\ No newline at end of file
697diff --git a/node_modules/expo-notifications/android/.idea/migrations.xml b/node_modules/expo-notifications/android/.idea/migrations.xml
698new file mode 100644
699index 0000000..f8051a6
700--- /dev/null
701+++ b/node_modules/expo-notifications/android/.idea/migrations.xml
702@@ -0,0 +1,10 @@
703+<?xml version="1.0" encoding="UTF-8"?>
704+<project version="4">
705+ <component name="ProjectMigrations">
706+ <option name="MigrateToGradleLocalJavaHome">
707+ <set>
708+ <option value="$PROJECT_DIR$" />
709+ </set>
710+ </option>
711+ </component>
712+</project>
713\ No newline at end of file
714diff --git a/node_modules/expo-notifications/android/.idea/misc.xml b/node_modules/expo-notifications/android/.idea/misc.xml
715new file mode 100644
716index 0000000..3040d03
717--- /dev/null
718+++ b/node_modules/expo-notifications/android/.idea/misc.xml
719@@ -0,0 +1,10 @@
720+<?xml version="1.0" encoding="UTF-8"?>
721+<project version="4">
722+ <component name="ExternalStorageConfigurationManager" enabled="true" />
723+ <component name="ProjectRootManager">
724+ <output url="file://$PROJECT_DIR$/build/classes" />
725+ </component>
726+ <component name="ProjectType">
727+ <option name="id" value="Android" />
728+ </component>
729+</project>
730\ No newline at end of file
731diff --git a/node_modules/expo-notifications/android/.idea/runConfigurations.xml b/node_modules/expo-notifications/android/.idea/runConfigurations.xml
732new file mode 100644
733index 0000000..16660f1
734--- /dev/null
735+++ b/node_modules/expo-notifications/android/.idea/runConfigurations.xml
736@@ -0,0 +1,17 @@
737+<?xml version="1.0" encoding="UTF-8"?>
738+<project version="4">
739+ <component name="RunConfigurationProducerService">
740+ <option name="ignoredProducers">
741+ <set>
742+ <option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
743+ <option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
744+ <option value="com.intellij.execution.junit.PatternConfigurationProducer" />
745+ <option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
746+ <option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
747+ <option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
748+ <option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
749+ <option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
750+ </set>
751+ </option>
752+ </component>
753+</project>
754\ No newline at end of file
755diff --git a/node_modules/expo-notifications/android/.idea/workspace.xml b/node_modules/expo-notifications/android/.idea/workspace.xml
756new file mode 100644
757index 0000000..df26928
758--- /dev/null
759+++ b/node_modules/expo-notifications/android/.idea/workspace.xml
760@@ -0,0 +1,47 @@
761+<?xml version="1.0" encoding="UTF-8"?>
762+<project version="4">
763+ <component name="AutoImportSettings">
764+ <option name="autoReloadType" value="NONE" />
765+ </component>
766+ <component name="ChangeListManager">
767+ <list default="true" id="fed6a9c0-2e93-4b6e-953a-d1cd1e93b59f" name="Changes" comment="" />
768+ <option name="SHOW_DIALOG" value="false" />
769+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
770+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
771+ <option name="LAST_RESOLUTION" value="IGNORE" />
772+ </component>
773+ <component name="ClangdSettings">
774+ <option name="formatViaClangd" value="false" />
775+ </component>
776+ <component name="ProjectColorInfo"><![CDATA[{
777+ "associatedIndex": 4
778+}]]></component>
779+ <component name="ProjectId" id="2wCjuanPzVGKP91vdmftQVgUlaM" />
780+ <component name="ProjectViewState">
781+ <option name="hideEmptyMiddlePackages" value="true" />
782+ <option name="showLibraryContents" value="true" />
783+ </component>
784+ <component name="PropertiesComponent"><![CDATA[{
785+ "keyToString": {
786+ "RunOnceActivity.ShowReadmeOnStart": "true",
787+ "RunOnceActivity.cidr.known.project.marker": "true",
788+ "RunOnceActivity.readMode.enableVisualFormatting": "true",
789+ "android.gradle.sync.needed": "true",
790+ "cf.first.check.clang-format": "false",
791+ "cidr.known.project.marker": "true",
792+ "kotlin-language-version-configured": "true",
793+ "last_opened_file_path": "/Users/hailey/bsky/social-app/node_modules/expo-notifications/android"
794+ }
795+}]]></component>
796+ <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
797+ <component name="TaskManager">
798+ <task active="true" id="Default" summary="Default task">
799+ <changelist id="fed6a9c0-2e93-4b6e-953a-d1cd1e93b59f" name="Changes" comment="" />
800+ <created>1745552672693</created>
801+ <option name="number" value="Default" />
802+ <option name="presentableId" value="Default" />
803+ <updated>1745552672693</updated>
804+ </task>
805+ <servers />
806+ </component>
807+</project>
808\ No newline at end of file
809diff --git a/node_modules/expo-notifications/android/build.gradle b/node_modules/expo-notifications/android/build.gradle
810index bc479ee..1ebfa00 100644
811--- a/node_modules/expo-notifications/android/build.gradle
812+++ b/node_modules/expo-notifications/android/build.gradle
813@@ -42,6 +42,7 @@ dependencies {
814 implementation 'com.google.firebase:firebase-messaging:24.0.1'
815
816 implementation 'me.leolin:ShortcutBadger:1.1.22@aar'
817+ implementation project(':expo-background-notification-handler')
818
819 if (project.findProject(':expo-modules-test-core')) {
820 testImplementation project(':expo-modules-test-core')
821diff --git a/node_modules/expo-notifications/android/local.properties b/node_modules/expo-notifications/android/local.properties
822new file mode 100644
823index 0000000..ab4c86d
824--- /dev/null
825+++ b/node_modules/expo-notifications/android/local.properties
826@@ -0,0 +1,8 @@
827+## This file must *NOT* be checked into Version Control Systems,
828+# as it contains information specific to your local configuration.
829+#
830+# Location of the SDK. This is only used by Gradle.
831+# For customization when using a Version Control System, please read the
832+# header note.
833+#Thu Apr 24 20:44:32 PDT 2025
834+sdk.dir=/Users/hailey/Library/Android/sdk
835diff --git a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/interfaces/INotificationContent.kt b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/interfaces/INotificationContent.kt
836index 7b99e6c..45a450d 100644
837--- a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/interfaces/INotificationContent.kt
838+++ b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/interfaces/INotificationContent.kt
839@@ -15,6 +15,7 @@ import org.json.JSONObject
840 * This interface exists to provide a common API for both classes.
841 * */
842 interface INotificationContent : Parcelable {
843+ val channelId: String?
844 val title: String?
845 val text: String?
846 val subText: String?
847diff --git a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java
848index 191b64e..fe8b3c5 100644
849--- a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java
850+++ b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java
851@@ -35,6 +35,7 @@ import kotlin.coroutines.Continuation;
852 * Refactoring this class may require a migration strategy for the data stored in SharedPreferences.
853 */
854 public class NotificationContent implements Parcelable, Serializable, INotificationContent {
855+ private String mChannelId;
856 private String mTitle;
857 private String mText;
858 private String mSubtitle;
859@@ -65,6 +66,11 @@ public class NotificationContent implements Parcelable, Serializable, INotificat
860 }
861 };
862
863+ @Nullable
864+ public String getChannelId() {
865+ return mChannelId;
866+ }
867+
868 @Nullable
869 public String getTitle() {
870 return mTitle;
871@@ -158,6 +164,7 @@ public class NotificationContent implements Parcelable, Serializable, INotificat
872 }
873
874 protected NotificationContent(Parcel in) {
875+ mChannelId = in.readString();
876 mTitle = in.readString();
877 mText = in.readString();
878 mSubtitle = in.readString();
879@@ -183,6 +190,7 @@ public class NotificationContent implements Parcelable, Serializable, INotificat
880
881 @Override
882 public void writeToParcel(Parcel dest, int flags) {
883+ dest.writeString(mChannelId);
884 dest.writeString(mTitle);
885 dest.writeString(mText);
886 dest.writeString(mSubtitle);
887@@ -203,6 +211,7 @@ public class NotificationContent implements Parcelable, Serializable, INotificat
888 private static final long serialVersionUID = 397666843266836802L;
889
890 private void writeObject(java.io.ObjectOutputStream out) throws IOException {
891+ out.writeObject(mChannelId);
892 out.writeObject(mTitle);
893 out.writeObject(mText);
894 out.writeObject(mSubtitle);
895@@ -285,6 +294,11 @@ public class NotificationContent implements Parcelable, Serializable, INotificat
896 useDefaultVibrationPattern();
897 }
898
899+ public Builder setChannelId(String channelId) {
900+ content.mChannelId = channelId;
901+ return this;
902+ }
903+
904 public Builder setTitle(String title) {
905 content.mTitle = title;
906 return this;
907diff --git a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationData.kt b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationData.kt
908index 3af254c..3c77e9d 100644
909--- a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationData.kt
910+++ b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/NotificationData.kt
911@@ -11,6 +11,9 @@ import org.json.JSONObject
912 * */
913 @JvmInline
914 value class NotificationData(private val data: Map<String, String>) {
915+ val channelId: String?
916+ get() = data["channelId"]
917+
918 val title: String?
919 get() = data["title"]
920
921diff --git a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/RemoteNotificationContent.kt b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/RemoteNotificationContent.kt
922index d2cc6cf..6a48ff2 100644
923--- a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/RemoteNotificationContent.kt
924+++ b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/model/RemoteNotificationContent.kt
925@@ -31,6 +31,8 @@ class RemoteNotificationContent(private val remoteMessage: RemoteMessage) : INot
926 return remoteMessage.notification?.imageUrl != null
927 }
928
929+ override val channelId = remoteMessage.notification?.channelId ?: notificationData.channelId
930+
931 override val title = remoteMessage.notification?.title ?: notificationData.title
932
933 override val text = remoteMessage.notification?.body ?: notificationData.message
934diff --git a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ExpoNotificationBuilder.kt b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ExpoNotificationBuilder.kt
935index 98f003f..2f745e8 100644
936--- a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ExpoNotificationBuilder.kt
937+++ b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ExpoNotificationBuilder.kt
938@@ -101,6 +101,9 @@ open class ExpoNotificationBuilder(
939 builder.setOngoing(content.isSticky)
940
941 // see "Notification anatomy" https://developer.android.com/develop/ui/views/notifications#Templates
942+ content.channelId?.let {
943+ builder.setChannelId(it)
944+ }
945 builder.setContentTitle(content.title)
946 builder.setContentText(content.text)
947 builder.setSubText(content.subText)
948diff --git a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt
949index 90ca4ff..9d4cb09 100644
950--- a/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt
951+++ b/node_modules/expo-notifications/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt
952@@ -3,6 +3,9 @@ package expo.modules.notifications.service.delegates
953 import android.content.Context
954 import android.os.Bundle
955 import com.google.firebase.messaging.RemoteMessage
956+import expo.modules.backgroundnotificationhandler.BackgroundNotificationHandler
957+import expo.modules.backgroundnotificationhandler.BackgroundNotificationHandlerInterface
958+import expo.modules.backgroundnotificationhandler.ExpoBackgroundNotificationHandlerModule
959 import expo.modules.interfaces.taskManager.TaskServiceProviderHelper
960 import expo.modules.notifications.notifications.RemoteMessageSerializer
961 import expo.modules.notifications.notifications.background.BackgroundRemoteNotificationTaskConsumer
962@@ -18,7 +21,7 @@ import expo.modules.notifications.tokens.interfaces.FirebaseTokenListener
963 import java.lang.ref.WeakReference
964 import java.util.*
965
966-open class FirebaseMessagingDelegate(protected val context: Context) : FirebaseMessagingDelegate {
967+open class FirebaseMessagingDelegate(protected val context: Context) : FirebaseMessagingDelegate, BackgroundNotificationHandlerInterface{
968 companion object {
969 // Unfortunately we cannot save state between instances of a service other way
970 // than by static properties. Fortunately, using weak references we can
971@@ -105,8 +108,19 @@ open class FirebaseMessagingDelegate(protected val context: Context) : FirebaseM
972 DebugLogging.logRemoteMessage("FirebaseMessagingDelegate.onMessageReceived: message", remoteMessage)
973 val notification = createNotification(remoteMessage)
974 DebugLogging.logNotification("FirebaseMessagingDelegate.onMessageReceived: notification", notification)
975- NotificationsService.receive(context, notification)
976- runTaskManagerTasks(context.applicationContext, RemoteMessageSerializer.toBundle(remoteMessage))
977+ if (!ExpoBackgroundNotificationHandlerModule.isForegrounded) {
978+ BackgroundNotificationHandler(context, this).handleMessage(remoteMessage)
979+ } else {
980+ NotificationsService.receive(context, notification)
981+ runTaskManagerTasks(
982+ context.applicationContext,
983+ RemoteMessageSerializer.toBundle(remoteMessage)
984+ )
985+ }
986+ }
987+
988+ override fun showMessage(remoteMessage: RemoteMessage) {
989+ NotificationsService.receive(context, createNotification(remoteMessage))
990 }
991
992 protected fun createNotification(remoteMessage: RemoteMessage): Notification {