···1import {BottomSheet} from './src/BottomSheet'
2import {
3 BottomSheetSnapPoint,
4- BottomSheetState,
5- BottomSheetViewProps,
6} from './src/BottomSheet.types'
7import {BottomSheetNativeComponent} from './src/BottomSheetNativeComponent'
8import {
···1import {BottomSheet} from './src/BottomSheet'
2import {
3 BottomSheetSnapPoint,
4+ type BottomSheetState,
5+ type BottomSheetViewProps,
6} from './src/BottomSheet.types'
7import {BottomSheetNativeComponent} from './src/BottomSheetNativeComponent'
8import {
···112 onStateChange={this.onStateChange}
113 extraStyles={extraStyles}
114 onLayout={e => {
115+ if (isIOS15) {
116+ const {height} = e.nativeEvent.layout
117+ this.setState({viewHeight: height})
118+ }
119+ if (Platform.OS === 'android') {
120+ // TEMP HACKFIX: I had to timebox this, but this is Bad.
121+ // On Android, if you run updateLayout() immediately,
122+ // it will take ages to actually run on the native side.
123+ // However, adding literally any delay will fix this, including
124+ // a console.log() - just sending the log to the CLI is enough.
125+ // TODO: Get to the bottom of this and fix it properly! -sfn
126+ setTimeout(() => this.updateLayout())
127+ } else {
128+ this.updateLayout()
129+ }
130 }}
131 />
132 </Portal>
···4import {useLingui} from '@lingui/react'
56import {toNiceDomain} from '#/lib/strings/url-helpers'
7-import {ServerInputDialog} from '#/view/com/auth/server-input'
8import {atoms as a, tokens, useTheme} from '#/alf'
9import {Button, ButtonIcon, ButtonText} from '#/components/Button'
10import {useDialogControl} from '#/components/Dialog'
011import {Globe_Stroke2_Corner0_Rounded as GlobeIcon} from '#/components/icons/Globe'
12import {PencilLine_Stroke2_Corner0_Rounded as PencilIcon} from '#/components/icons/Pencil'
13import {Text} from '#/components/Typography'
···4import {useLingui} from '@lingui/react'
56import {toNiceDomain} from '#/lib/strings/url-helpers'
07import {atoms as a, tokens, useTheme} from '#/alf'
8import {Button, ButtonIcon, ButtonText} from '#/components/Button'
9import {useDialogControl} from '#/components/Dialog'
10+import {ServerInputDialog} from '#/components/dialogs/ServerInput'
11import {Globe_Stroke2_Corner0_Rounded as GlobeIcon} from '#/components/icons/Globe'
12import {PencilLine_Stroke2_Corner0_Rounded as PencilIcon} from '#/components/icons/Pencil'
13import {Text} from '#/components/Typography'
···1+import {device, useStorage} from '#/storage'
2+3+export function useThreadgateNudged() {
4+ const [threadgateNudged = false, setThreadgateNudged] = useStorage(device, [
5+ 'threadgateNudged',
6+ ])
7+8+ return [threadgateNudged, setThreadgateNudged] as const
9+}
+1
src/storage/schema.ts
···40 // deer
41 deerGateCache: string
42 activitySubscriptionsNudged?: boolean
04344 /**
45 * Policy update overlays. New IDs are required for each new announcement.
···40 // deer
41 deerGateCache: string
42 activitySubscriptionsNudged?: boolean
43+ threadgateNudged?: boolean
4445 /**
46 * Policy update overlays. New IDs are required for each new announcement.