···11import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'
22-import {observer} from 'mobx-react-lite'
32import {
43 ActivityIndicator,
54 BackHandler,
···1211 TouchableOpacity,
1312 View,
1413} from 'react-native'
1515-import {useSafeAreaInsets} from 'react-native-safe-area-context'
1614import LinearGradient from 'react-native-linear-gradient'
1717-import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
1515+import {useSafeAreaInsets} from 'react-native-safe-area-context'
1816import {RichText} from '@atproto/api'
1919-import {useAnalytics} from 'lib/analytics/analytics'
2020-import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible'
2121-import {ExternalEmbed} from './ExternalEmbed'
2222-import {Text} from '../util/text/Text'
2323-import * as Toast from '../util/Toast'
2424-// TODO: Prevent naming components that coincide with RN primitives
2525-// due to linting false positives
2626-import {TextInput, TextInputRef} from './text-input/TextInput'
2727-import {CharProgress} from './char-progress/CharProgress'
2828-import {UserAvatar} from '../util/UserAvatar'
2929-import * as apilib from 'lib/api/index'
3030-import {ComposerOpts} from 'state/shell/composer'
3131-import {s, colors, gradients} from 'lib/styles'
3232-import {cleanError} from 'lib/strings/errors'
3333-import {shortenLinks} from 'lib/strings/rich-text-manip'
3434-import {toShortUrl} from 'lib/strings/url-helpers'
3535-import {SelectPhotoBtn} from './photos/SelectPhotoBtn'
3636-import {OpenCameraBtn} from './photos/OpenCameraBtn'
3737-import {ThreadgateBtn} from './threadgate/ThreadgateBtn'
3838-import {usePalette} from 'lib/hooks/usePalette'
3939-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
4040-import {useExternalLinkFetch} from './useExternalLinkFetch'
4141-import {isWeb, isNative, isAndroid, isIOS} from 'platform/detection'
4242-import {QuoteEmbed} from '../util/post-embeds/QuoteEmbed'
4343-import {GalleryModel} from 'state/models/media/gallery'
4444-import {Gallery} from './photos/Gallery'
4545-import {MAX_GRAPHEME_LENGTH} from 'lib/constants'
4646-import {LabelsBtn} from './labels/LabelsBtn'
4747-import {SelectLangBtn} from './select-language/SelectLangBtn'
4848-import {SuggestedLanguage} from './select-language/SuggestedLanguage'
4949-import {insertMentionAt} from 'lib/strings/mention-manip'
5050-import {Trans, msg} from '@lingui/macro'
1717+import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
1818+import {msg, Trans} from '@lingui/macro'
5119import {useLingui} from '@lingui/react'
2020+import {observer} from 'mobx-react-lite'
2121+2222+import {logEvent} from '#/lib/statsig/statsig'
2323+import {logger} from '#/logger'
2424+import {emitPostCreated} from '#/state/events'
5225import {useModals} from '#/state/modals'
5326import {useRequireAltTextEnabled} from '#/state/preferences'
5427import {
2828+ toPostLanguages,
5529 useLanguagePrefs,
5630 useLanguagePrefsApi,
5757- toPostLanguages,
5831} from '#/state/preferences/languages'
5959-import {useSession, getAgent} from '#/state/session'
6032import {useProfileQuery} from '#/state/queries/profile'
3333+import {ThreadgateSetting} from '#/state/queries/threadgate'
3434+import {getAgent, useSession} from '#/state/session'
6135import {useComposerControls} from '#/state/shell/composer'
6262-import {emitPostCreated} from '#/state/events'
6363-import {ThreadgateSetting} from '#/state/queries/threadgate'
6464-import {logger} from '#/logger'
3636+import {useAnalytics} from 'lib/analytics/analytics'
3737+import * as apilib from 'lib/api/index'
3838+import {MAX_GRAPHEME_LENGTH} from 'lib/constants'
3939+import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible'
4040+import {usePalette} from 'lib/hooks/usePalette'
4141+import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
4242+import {cleanError} from 'lib/strings/errors'
4343+import {insertMentionAt} from 'lib/strings/mention-manip'
4444+import {shortenLinks} from 'lib/strings/rich-text-manip'
4545+import {toShortUrl} from 'lib/strings/url-helpers'
4646+import {colors, gradients, s} from 'lib/styles'
4747+import {isAndroid, isIOS, isNative, isWeb} from 'platform/detection'
4848+import {useDialogStateControlContext} from 'state/dialogs'
4949+import {GalleryModel} from 'state/models/media/gallery'
5050+import {ComposerOpts} from 'state/shell/composer'
6551import {ComposerReplyTo} from 'view/com/composer/ComposerReplyTo'
6652import * as Prompt from '#/components/Prompt'
6767-import {useDialogStateControlContext} from 'state/dialogs'
6868-import {logEvent} from '#/lib/statsig/statsig'
5353+import {QuoteEmbed} from '../util/post-embeds/QuoteEmbed'
5454+import {Text} from '../util/text/Text'
5555+import * as Toast from '../util/Toast'
5656+import {UserAvatar} from '../util/UserAvatar'
5757+import {CharProgress} from './char-progress/CharProgress'
5858+import {ExternalEmbed} from './ExternalEmbed'
5959+import {LabelsBtn} from './labels/LabelsBtn'
6060+import {Gallery} from './photos/Gallery'
6161+import {OpenCameraBtn} from './photos/OpenCameraBtn'
6262+import {SelectPhotoBtn} from './photos/SelectPhotoBtn'
6363+import {SelectLangBtn} from './select-language/SelectLangBtn'
6464+import {SuggestedLanguage} from './select-language/SuggestedLanguage'
6565+// TODO: Prevent naming components that coincide with RN primitives
6666+// due to linting false positives
6767+import {TextInput, TextInputRef} from './text-input/TextInput'
6868+import {ThreadgateBtn} from './threadgate/ThreadgateBtn'
6969+import {useExternalLinkFetch} from './useExternalLinkFetch'
69707071type Props = ComposerOpts
7172export const ComposePost = observer(function ComposePost({
···506507 control={discardPromptControl}
507508 title={_(msg`Discard draft?`)}
508509 description={_(msg`Are you sure you'd like to discard this draft?`)}
509509- onConfirm={onClose}
510510+ onConfirm={() => {
511511+ discardPromptControl.close(onClose)
512512+ }}
510513 confirmButtonCta={_(msg`Discard`)}
511514 confirmButtonColor="negative"
512515 />