···6363### Tips
64646565- Copy the `.env.example` to `.env` and fill in any necessary tokens. (The Sentry token is NOT required; see instructions below if you want to enable Sentry.)
6666-- To run on the device, add `--device` to the command (e.g. `yarn android --device`). To build in production mode (slower build, faster app), also add `--variant release`.
6666+- To run on the device, add `--device` to the command (e.g. `yarn android --device`). To build in production mode (slower build, faster app), also add `--variant release` on Android or `--configuration Release` on iOS.
6767- If you want to use Expo EAS on your own builds without ejecting from Expo, make sure to change the `owner` and `extra.eas.projectId` properties. If you do not have an Expo account, you may remove these properties.
6868- `npx react-native info` Checks what has been installed.
6969- If the Android simulator frequently hangs or is very sluggish, [bump its memory limit](https://stackoverflow.com/a/40068396)
···164164- TextEncoder / TextDecoder
165165- react-native-url-polyfill
166166- Array#findLast (on web)
167167-- atob (on native)
168167169168### Sentry sourcemaps
170169
···11import ExpoModulesCore
22+import React
2334// This view will be used as a native component. Make sure to inherit from `ExpoView`
45// to apply the proper styling (e.g. border radius and shadows).
···22 Children,
33 cloneElement,
44 isValidElement,
55- type ReactElement,
66- type ReactNode,
75 useCallback,
86 useEffect,
97 useMemo,
···2624 * screen reader support is enabled. THIS SHOULD BE USED SPARINGLY, only when
2725 * no better option is available.
2826 */
2929-export function FocusScope({children}: {children: ReactNode}) {
2727+export function FocusScope({children}: {children: React.ReactNode}) {
3028 const {screenReaderEnabled} = useA11y()
31293230 return screenReaderEnabled ? <FocusTrap>{children}</FocusTrap> : children
···4139 * they have reached the start or end of the content and tell them how to
4240 * remain within the active content section.
4341 */
4444-function FocusTrap({children}: {children: ReactNode}) {
4242+function FocusTrap({children}: {children: React.ReactNode}) {
4543 const {_} = useLingui()
4644 const child = useRef<View>(null)
4745···5351 const decoratedChildren = useMemo(() => {
5452 return Children.toArray(children).map((node, i) => {
5553 if (i === 0 && isValidElement(node)) {
5656- const n = node as ReactElement<any>
5454+ const n = node as React.ReactElement<any>
5755 if (n.props.ref !== undefined) {
5856 throw new Error(
5957 'FocusScope needs to override the ref on its first child.',
+1-2
src/components/FocusScope/index.web.tsx
···11-import {type ReactNode} from 'react'
21import {FocusScope as RadixFocusScope} from 'radix-ui/internal'
3243/*
···65 * use this in Dialogs and such already. It's here as a convenient counterpart
76 * to the hacky native solution.
87 */
99-export function FocusScope({children}: {children: ReactNode}) {
88+export function FocusScope({children}: {children: React.ReactNode}) {
109 return (
1110 <RadixFocusScope.FocusScope loop asChild trapped>
1211 {children}
+1-1
src/components/dms/ActionsWrapper.web.tsx
···72727373 return (
7474 <View
7575- // @ts-expect-error web only
7675 onMouseEnter={onMouseEnter}
7776 onMouseLeave={onMouseLeave}
7777+ // @ts-expect-error web only
7878 onFocus={onFocus}
7979 onBlur={onMouseLeave}
8080 style={[a.flex_1, isFromSelf ? a.flex_row : a.flex_row_reverse]}
+1-1
src/lib/api/upload-blob.ts
···11-import {copyAsync} from 'expo-file-system'
11+import {copyAsync} from 'expo-file-system/legacy'
22import {type BskyAgent, type ComAtprotoRepoUploadBlob} from '@atproto/api'
3344import {safeDeleteAsync} from '#/lib/media/manip'
-15
src/lib/hooks/useAnimatedScrollHandler_FIXED.ts
···11-// Be warned. This Hook is very buggy unless used in a very constrained way.
22-// To use it safely:
33-//
44-// - DO NOT pass its return value as a prop to any user-defined component.
55-// - DO NOT pass its return value to more than a single component.
66-//
77-// In other words, the only safe way to use it is next to the leaf Reanimated View.
88-//
99-// Relevant bug reports:
1010-// - https://github.com/software-mansion/react-native-reanimated/issues/5345
1111-// - https://github.com/software-mansion/react-native-reanimated/issues/5360
1212-// - https://github.com/software-mansion/react-native-reanimated/issues/5364
1313-//
1414-// It's great when it works though.
1515-export {useAnimatedScrollHandler} from 'react-native-reanimated'
···1010 makeDirectoryAsync,
1111 StorageAccessFramework,
1212 writeAsStringAsync,
1313-} from 'expo-file-system'
1313+} from 'expo-file-system/legacy'
1414import {manipulateAsync, SaveFormat} from 'expo-image-manipulator'
1515import * as MediaLibrary from 'expo-media-library'
1616import * as Sharing from 'expo-sharing'
···22 documentDirectory,
33 getInfoAsync,
44 readDirectoryAsync,
55-} from 'expo-file-system'
55+} from 'expo-file-system/legacy'
66import ExpoImageCropTool, {type OpenCropperOptions} from 'expo-image-crop-tool'
7788import {compressIfNeeded} from './manip'
+1-1
src/lib/media/video/upload.ts
···11-import {createUploadTask, FileSystemUploadType} from 'expo-file-system'
11+import {createUploadTask, FileSystemUploadType} from 'expo-file-system/legacy'
22import {type AppBskyVideoDefs, type BskyAgent} from '@atproto/api'
33import {type I18n} from '@lingui/core'
44import {msg} from '@lingui/macro'
+63-63
src/locale/locales/en/messages.po
···217217msgid "{0}s"
218218msgstr ""
219219220220-#: src/view/shell/desktop/LeftNav.tsx:457
220220+#: src/view/shell/desktop/LeftNav.tsx:456
221221msgid "{count, plural, one {# unread item} other {# unread items}}"
222222msgstr ""
223223···707707msgid "Add another account"
708708msgstr ""
709709710710-#: src/view/com/composer/Composer.tsx:927
710710+#: src/view/com/composer/Composer.tsx:964
711711msgid "Add another post"
712712msgstr ""
713713714714-#: src/view/com/composer/Composer.tsx:1559
714714+#: src/view/com/composer/Composer.tsx:1596
715715msgid "Add another post to thread"
716716msgstr ""
717717···11941194msgid "Are you sure you want to remove this from your feeds?"
11951195msgstr ""
1196119611971197-#: src/view/com/composer/Composer.tsx:873
11971197+#: src/view/com/composer/Composer.tsx:910
11981198msgid "Are you sure you'd like to discard this draft?"
11991199msgstr ""
1200120012011201-#: src/view/com/composer/Composer.tsx:1065
12011201+#: src/view/com/composer/Composer.tsx:1102
12021202msgid "Are you sure you'd like to discard this post?"
12031203msgstr ""
12041204···12061206msgid "Are you sure?"
12071207msgstr ""
1208120812091209-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:89
12091209+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:82
12101210msgid "Are you writing in <0>{suggestedLanguageName}</0>?"
12111211msgstr ""
12121212···14631463msgid "Bookmarks"
14641464msgstr ""
1465146514661466-#: src/view/shell/desktop/LeftNav.tsx:766
14661466+#: src/view/shell/desktop/LeftNav.tsx:767
14671467#: src/view/shell/Drawer.tsx:572
14681468msgctxt "link to bookmarks screen"
14691469msgid "Bookmarks"
···15791579#: src/screens/Settings/Settings.tsx:293
15801580#: src/screens/Takendown.tsx:108
15811581#: src/screens/Takendown.tsx:111
15821582-#: src/view/com/composer/Composer.tsx:1120
15831583-#: src/view/com/composer/Composer.tsx:1131
15821582+#: src/view/com/composer/Composer.tsx:1157
15831583+#: src/view/com/composer/Composer.tsx:1168
15841584#: src/view/com/composer/photos/EditImageDialog.web.tsx:43
15851585#: src/view/com/composer/photos/EditImageDialog.web.tsx:52
15861586#: src/view/com/modals/CreateOrEditList.tsx:333
···16691669msgid "Change password dialog"
16701670msgstr ""
1671167116721672-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:100
16721672+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:93
16731673msgid "Change post language to {suggestedLanguageName}"
16741674msgstr ""
16751675···16971697#: src/lib/hooks/useNotificationHandler.ts:99
16981698#: src/Navigation.tsx:541
16991699#: src/view/shell/bottom-bar/BottomBar.tsx:221
17001700-#: src/view/shell/desktop/LeftNav.tsx:609
17001700+#: src/view/shell/desktop/LeftNav.tsx:610
17011701#: src/view/shell/Drawer.tsx:466
17021702msgid "Chat"
17031703msgstr ""
···19581958msgid "Closes password update alert"
19591959msgstr ""
1960196019611961-#: src/view/com/composer/Composer.tsx:1128
19611961+#: src/view/com/composer/Composer.tsx:1165
19621962msgid "Closes post composer and discards post draft"
19631963msgstr ""
19641964···20182018msgid "Complete the challenge"
20192019msgstr ""
2020202020212021-#: src/view/shell/desktop/LeftNav.tsx:574
20212021+#: src/view/shell/desktop/LeftNav.tsx:575
20222022msgid "Compose new post"
20232023msgstr ""
2024202420252025-#: src/view/com/composer/Composer.tsx:1029
20252025+#: src/view/com/composer/Composer.tsx:1066
20262026msgid "Compose posts up to {0, plural, other {# characters}} in length"
20272027msgstr ""
20282028···20302030msgid "Compose reply"
20312031msgstr ""
2032203220332033-#: src/view/com/composer/Composer.tsx:1949
20332033+#: src/view/com/composer/Composer.tsx:1986
20342034msgid "Compressing video..."
20352035msgstr ""
20362036···2582258225832583#: src/components/PostControls/PostMenu/PostMenuItems.tsx:783
25842584#: src/components/PostControls/PostMenu/PostMenuItems.tsx:785
25852585-#: src/view/com/composer/Composer.tsx:1039
25852585+#: src/view/com/composer/Composer.tsx:1076
25862586msgid "Delete post"
25872587msgstr ""
25882588···26932693msgstr ""
2694269426952695#: src/screens/Profile/Header/EditProfileDialog.tsx:83
26962696-#: src/view/com/composer/Composer.tsx:875
26972697-#: src/view/com/composer/Composer.tsx:1072
26962696+#: src/view/com/composer/Composer.tsx:912
26972697+#: src/view/com/composer/Composer.tsx:1109
26982698msgid "Discard"
26992699msgstr ""
27002700···27022702msgid "Discard changes?"
27032703msgstr ""
2704270427052705-#: src/view/com/composer/Composer.tsx:872
27052705+#: src/view/com/composer/Composer.tsx:909
27062706msgid "Discard draft?"
27072707msgstr ""
2708270827092709-#: src/view/com/composer/Composer.tsx:1064
27092709+#: src/view/com/composer/Composer.tsx:1101
27102710msgid "Discard post?"
27112711msgstr ""
27122712···27292729msgid "Dismiss"
27302730msgstr ""
2731273127322732-#: src/view/com/composer/Composer.tsx:1873
27322732+#: src/view/com/composer/Composer.tsx:1910
27332733msgid "Dismiss error"
27342734msgstr ""
27352735···32053205msgid "Entertainment"
32063206msgstr ""
3207320732083208-#: src/view/com/composer/Composer.tsx:1958
32083208+#: src/view/com/composer/Composer.tsx:1995
32093209#: src/view/com/util/error/ErrorScreen.tsx:42
32103210msgid "Error"
32113211msgstr ""
···3352335233533353#: src/Navigation.tsx:751
33543354#: src/screens/Search/Shell.tsx:307
33553355-#: src/view/shell/desktop/LeftNav.tsx:691
33553355+#: src/view/shell/desktop/LeftNav.tsx:692
33563356#: src/view/shell/Drawer.tsx:414
33573357msgid "Explore"
33583358msgstr ""
···36413641#: src/screens/StarterPack/StarterPackScreen.tsx:190
36423642#: src/view/screens/Feeds.tsx:511
36433643#: src/view/screens/Profile.tsx:230
36443644-#: src/view/shell/desktop/LeftNav.tsx:729
36443644+#: src/view/shell/desktop/LeftNav.tsx:730
36453645#: src/view/shell/Drawer.tsx:530
36463646msgid "Feeds"
36473647msgstr ""
···43394339#: src/Navigation.tsx:746
43404340#: src/Navigation.tsx:766
43414341#: src/view/shell/bottom-bar/BottomBar.tsx:178
43424342-#: src/view/shell/desktop/LeftNav.tsx:673
43424342+#: src/view/shell/desktop/LeftNav.tsx:674
43434343#: src/view/shell/Drawer.tsx:440
43444344msgid "Home"
43454345msgstr ""
···46094609msgid "It's just you right now! Add more people to your starter pack by searching above."
46104610msgstr ""
4611461146124612-#: src/view/com/composer/Composer.tsx:1892
46124612+#: src/view/com/composer/Composer.tsx:1929
46134613msgid "Job ID: {0}"
46144614msgstr ""
46154615···49534953#: src/view/screens/Lists.tsx:65
49544954#: src/view/screens/Profile.tsx:224
49554955#: src/view/screens/Profile.tsx:232
49564956-#: src/view/shell/desktop/LeftNav.tsx:747
49564956+#: src/view/shell/desktop/LeftNav.tsx:748
49574957#: src/view/shell/Drawer.tsx:545
49584958msgid "Lists"
49594959msgstr ""
···55195519msgid "New post"
55205520msgstr ""
5521552155225522-#: src/view/shell/desktop/LeftNav.tsx:582
55225522+#: src/view/shell/desktop/LeftNav.tsx:583
55235523msgctxt "action"
55245524msgid "New Post"
55255525msgstr ""
···57865786#: src/screens/Settings/Settings.tsx:197
57875787#: src/view/screens/Notifications.tsx:130
57885788#: src/view/shell/bottom-bar/BottomBar.tsx:252
57895789-#: src/view/shell/desktop/LeftNav.tsx:710
57895789+#: src/view/shell/desktop/LeftNav.tsx:711
57905790#: src/view/shell/Drawer.tsx:493
57915791msgid "Notifications"
57925792msgstr ""
···58615861msgid "Onboarding reset"
58625862msgstr ""
5863586358645864-#: src/view/com/composer/Composer.tsx:469
58645864+#: src/view/com/composer/Composer.tsx:506
58655865msgid "One or more GIFs is missing alt text."
58665866msgstr ""
5867586758685868-#: src/view/com/composer/Composer.tsx:466
58685868+#: src/view/com/composer/Composer.tsx:503
58695869msgid "One or more images is missing alt text."
58705870msgstr ""
58715871···58775877msgid "One or more of your selected files are too large. Maximum size is 100 MB."
58785878msgstr ""
5879587958805880-#: src/view/com/composer/Composer.tsx:476
58805880+#: src/view/com/composer/Composer.tsx:513
58815881msgid "One or more videos is missing alt text."
58825882msgstr ""
58835883···59385938msgstr ""
5939593959405940#: src/screens/Messages/components/MessageInput.web.tsx:181
59415941-#: src/view/com/composer/Composer.tsx:1544
59415941+#: src/view/com/composer/Composer.tsx:1581
59425942msgid "Open emoji picker"
59435943msgstr ""
59445944···60386038msgid "Opens device gallery to select up to {MAX_IMAGES, plural, other {# images}}, or a single video or GIF."
60396039msgstr ""
6040604060416041-#: src/view/com/composer/Composer.tsx:1545
60416041+#: src/view/com/composer/Composer.tsx:1582
60426042msgid "Opens emoji picker"
60436043msgstr ""
60446044···64156415msgid "Please explain why you think your chats were incorrectly disabled"
64166416msgstr ""
6417641764186418-#: src/components/FocusScope/index.tsx:93
64196419-#: src/components/FocusScope/index.tsx:117
64186418+#: src/components/FocusScope/index.tsx:91
64196419+#: src/components/FocusScope/index.tsx:115
64206420msgid "Please go back, or activate this element to return to the start of the active content."
64216421msgstr ""
64226422···6430643064316431#: src/lib/hooks/useAccountSwitcher.ts:45
64326432#: src/lib/hooks/useAccountSwitcher.ts:55
64336433-#: src/view/com/composer/Composer.tsx:302
64336433+#: src/view/com/composer/Composer.tsx:338
64346434msgid "Please sign in as @{0}"
64356435msgstr ""
64366436···64576457msgid "Post"
64586458msgstr ""
6459645964606460-#: src/view/com/composer/Composer.tsx:1191
64606460+#: src/view/com/composer/Composer.tsx:1228
64616461msgctxt "action"
64626462msgid "Post"
64636463msgstr ""
6464646464656465-#: src/view/com/composer/Composer.tsx:1189
64656465+#: src/view/com/composer/Composer.tsx:1226
64666466msgctxt "action"
64676467msgid "Post All"
64686468msgstr ""
···66276627msgid "Privacy Policy"
66286628msgstr ""
6629662966306630-#: src/view/com/composer/Composer.tsx:1955
66306630+#: src/view/com/composer/Composer.tsx:1992
66316631msgid "Processing video..."
66326632msgstr ""
66336633···66426642msgstr ""
6643664366446644#: src/view/shell/bottom-bar/BottomBar.tsx:316
66456645-#: src/view/shell/desktop/LeftNav.tsx:788
66456645+#: src/view/shell/desktop/LeftNav.tsx:789
66466646#: src/view/shell/Drawer.tsx:77
66476647#: src/view/shell/Drawer.tsx:598
66486648msgid "Profile"
···66666666msgstr ""
6667666766686668#. Accessibility label for button to publish a single post
66696669-#: src/view/com/composer/Composer.tsx:1171
66696669+#: src/view/com/composer/Composer.tsx:1208
66706670msgid "Publish post"
66716671msgstr ""
6672667266736673#. Accessibility label for button to publish multiple posts in a thread
66746674-#: src/view/com/composer/Composer.tsx:1164
66746674+#: src/view/com/composer/Composer.tsx:1201
66756675msgid "Publish posts"
66766676msgstr ""
6677667766786678#. Accessibility label for button to publish multiple replies in a thread
66796679-#: src/view/com/composer/Composer.tsx:1149
66796679+#: src/view/com/composer/Composer.tsx:1186
66806680msgid "Publish replies"
66816681msgstr ""
6682668266836683#. Accessibility label for button to publish a single reply
66846684-#: src/view/com/composer/Composer.tsx:1156
66846684+#: src/view/com/composer/Composer.tsx:1193
66856685msgid "Publish reply"
66866686msgstr ""
66876687···70937093msgid "Replies to this post are disabled."
70947094msgstr ""
7095709570967096-#: src/view/com/composer/Composer.tsx:1187
70967096+#: src/view/com/composer/Composer.tsx:1224
70977097msgctxt "action"
70987098msgid "Reply"
70997099msgstr ""
···7888788878897889#: src/Navigation.tsx:201
78907890#: src/screens/Settings/Settings.tsx:99
78917891-#: src/view/shell/desktop/LeftNav.tsx:806
78917891+#: src/view/shell/desktop/LeftNav.tsx:807
78927892#: src/view/shell/Drawer.tsx:611
78937893msgid "Settings"
78947894msgstr ""
···90889088msgid "This post will be hidden from feeds and threads. This cannot be undone."
90899089msgstr ""
9090909090919091-#: src/view/com/composer/Composer.tsx:585
90919091+#: src/view/com/composer/Composer.tsx:622
90929092msgid "This post's author has disabled quote posts."
90939093msgstr ""
90949094···95269526msgid "Unsubscribed from list"
95279527msgstr ""
9528952895299529-#: src/view/com/composer/Composer.tsx:968
95299529+#: src/view/com/composer/Composer.tsx:1005
95309530msgid "Unsupported video type: {mimeType}"
95319531msgstr ""
95329532···96129612msgid "Uploading link thumbnail..."
96139613msgstr ""
9614961496159615-#: src/view/com/composer/Composer.tsx:1952
96159615+#: src/view/com/composer/Composer.tsx:1989
96169616msgid "Uploading video..."
96179617msgstr ""
96189618···98499849msgid "Video settings"
98509850msgstr ""
9851985198529852-#: src/view/com/composer/Composer.tsx:1962
98529852+#: src/view/com/composer/Composer.tsx:1999
98539853msgid "Video uploaded"
98549854msgstr ""
98559855···98699869msgid "View"
98709870msgstr ""
9871987198729872-#: src/view/com/composer/Composer.tsx:656
98729872+#: src/view/com/composer/Composer.tsx:693
98739873msgctxt "Action to view the post the user just created"
98749874msgid "View"
98759875msgstr ""
···99319931msgid "View more trending videos"
99329932msgstr ""
9933993399349934-#: src/view/com/composer/Composer.tsx:651
99349934+#: src/view/com/composer/Composer.tsx:688
99359935msgid "View post"
99369936msgstr ""
99379937···1014010140msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
1014110141msgstr ""
10142101421014310143-#: src/view/com/composer/Composer.tsx:582
1014310143+#: src/view/com/composer/Composer.tsx:619
1014410144msgid "We're sorry! The post you are replying to has been deleted."
1014510145msgstr ""
1014610146···1018910189msgid "What do you want to call your starter pack?"
1019010190msgstr ""
10191101911019210192-#: src/view/com/composer/Composer.tsx:928
1019210192+#: src/view/com/composer/Composer.tsx:965
1019310193msgid "What's up?"
1019410194msgstr ""
1019510195···1027110271msgid "Write a message"
1027210272msgstr ""
10273102731027410274-#: src/view/com/composer/Composer.tsx:1027
1027410274+#: src/view/com/composer/Composer.tsx:1064
1027510275msgid "Write post"
1027610276msgstr ""
10277102771027810278#: src/screens/PostThread/components/ThreadComposePrompt.tsx:90
1027910279-#: src/view/com/composer/Composer.tsx:926
1027910279+#: src/view/com/composer/Composer.tsx:963
1028010280msgid "Write your reply"
1028110281msgstr ""
1028210282···1029410294msgid "www.mylivestream.tv"
1029510295msgstr ""
10296102961029710297-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:102
1029710297+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:95
1029810298msgid "Yes"
1029910299msgstr ""
1030010300···1069610696msgid "You've found some people to follow"
1069710697msgstr ""
10698106981069910699-#: src/components/FocusScope/index.tsx:114
1069910699+#: src/components/FocusScope/index.tsx:112
1070010700msgid "You've reached the end of the active content."
1070110701msgstr ""
1070210702···1070810708msgid "You've reached the maximum number of requests allowed. Please try again later."
1070910709msgstr ""
10710107101071110711-#: src/components/FocusScope/index.tsx:90
1071110711+#: src/components/FocusScope/index.tsx:88
1071210712msgid "You've reached the start of the active content."
1071310713msgstr ""
1071410714···1082410824msgid "Your password must be at least 8 characters long."
1082510825msgstr ""
10826108261082710827-#: src/view/com/composer/Composer.tsx:647
1082710827+#: src/view/com/composer/Composer.tsx:684
1082810828msgid "Your post was sent"
1082910829msgstr ""
10830108301083110831-#: src/view/com/composer/Composer.tsx:644
1083110831+#: src/view/com/composer/Composer.tsx:681
1083210832msgid "Your posts were sent"
1083310833msgstr ""
1083410834···1084810848msgid "Your profile, posts, feeds, and lists will no longer be visible to other Bluesky users. You can reactivate your account at any time by logging in."
1084910849msgstr ""
10850108501085110851-#: src/view/com/composer/Composer.tsx:646
1085110851+#: src/view/com/composer/Composer.tsx:683
1085210852msgid "Your reply was sent"
1085310853msgstr ""
1085410854
+1-1
src/screens/Messages/components/ChatListItem.tsx
···333333 return (
334334 <GestureActionView actions={actions}>
335335 <View
336336- // @ts-expect-error web only
337336 onMouseEnter={onMouseEnter}
338337 onMouseLeave={onMouseLeave}
338338+ // @ts-expect-error web only
339339 onFocus={onFocus}
340340 onBlur={onMouseLeave}
341341 style={[a.relative, t.atoms.bg]}>
+1-1
src/screens/Settings/AboutSettings.tsx
···11import {Platform} from 'react-native'
22import {setStringAsync} from 'expo-clipboard'
33-import * as FileSystem from 'expo-file-system'
33+import * as FileSystem from 'expo-file-system/legacy'
44import {Image} from 'expo-image'
55import {msg, Trans} from '@lingui/macro'
66import {useLingui} from '@lingui/react'
···33 deleteAsync,
44 makeDirectoryAsync,
55 moveAsync,
66-} from 'expo-file-system'
66+} from 'expo-file-system/legacy'
77import {
88 type Action,
99 type ActionCrop,
+1-1
src/view/com/composer/Composer.tsx
···3232 runOnUI,
3333 scrollTo,
3434 useAnimatedRef,
3535+ useAnimatedScrollHandler,
3536 useAnimatedStyle,
3637 useDerivedValue,
3738 useSharedValue,
···6869 SUPPORTED_MIME_TYPES,
6970 type SupportedMimeTypes,
7071} from '#/lib/constants'
7171-import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED'
7272import {useAppState} from '#/lib/hooks/useAppState'
7373import {useIsKeyboardVisible} from '#/lib/hooks/useIsKeyboardVisible'
7474import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
···1919 useAnimatedProps,
2020 useAnimatedReaction,
2121 useAnimatedRef,
2222+ useAnimatedScrollHandler,
2223 useAnimatedStyle,
2324 useSharedValue,
2425} from 'react-native-reanimated'
2526import {useSafeAreaFrame} from 'react-native-safe-area-context'
2627import {Image} from 'expo-image'
27282828-import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED'
2929import {
3030 type Dimensions as ImageDimensions,
3131 type ImageSource,
+1-1
src/view/com/util/List.tsx
···33import {
44 type FlatListPropsWithLayout,
55 runOnJS,
66+ useAnimatedScrollHandler,
67 useSharedValue,
78} from 'react-native-reanimated'
89import {updateActiveVideoViewAsync} from '@haileyok/bluesky-video'
9101010-import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED'
1111import {useDedupe} from '#/lib/hooks/useDedupe'
1212import {useScrollHandlers} from '#/lib/ScrollContext'
1313import {addStyle} from '#/lib/styles'