fix android back after closing composer (#3330)
parent
6f2dfcb502
commit
772d528145
|
@ -1,5 +1,4 @@
|
||||||
import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'
|
import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'
|
||||||
import {observer} from 'mobx-react-lite'
|
|
||||||
import {
|
import {
|
||||||
ActivityIndicator,
|
ActivityIndicator,
|
||||||
BackHandler,
|
BackHandler,
|
||||||
|
@ -12,60 +11,62 @@ import {
|
||||||
TouchableOpacity,
|
TouchableOpacity,
|
||||||
View,
|
View,
|
||||||
} from 'react-native'
|
} from 'react-native'
|
||||||
import {useSafeAreaInsets} from 'react-native-safe-area-context'
|
|
||||||
import LinearGradient from 'react-native-linear-gradient'
|
import LinearGradient from 'react-native-linear-gradient'
|
||||||
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
|
import {useSafeAreaInsets} from 'react-native-safe-area-context'
|
||||||
import {RichText} from '@atproto/api'
|
import {RichText} from '@atproto/api'
|
||||||
import {useAnalytics} from 'lib/analytics/analytics'
|
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
|
||||||
import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible'
|
import {msg, Trans} from '@lingui/macro'
|
||||||
import {ExternalEmbed} from './ExternalEmbed'
|
|
||||||
import {Text} from '../util/text/Text'
|
|
||||||
import * as Toast from '../util/Toast'
|
|
||||||
// TODO: Prevent naming components that coincide with RN primitives
|
|
||||||
// due to linting false positives
|
|
||||||
import {TextInput, TextInputRef} from './text-input/TextInput'
|
|
||||||
import {CharProgress} from './char-progress/CharProgress'
|
|
||||||
import {UserAvatar} from '../util/UserAvatar'
|
|
||||||
import * as apilib from 'lib/api/index'
|
|
||||||
import {ComposerOpts} from 'state/shell/composer'
|
|
||||||
import {s, colors, gradients} from 'lib/styles'
|
|
||||||
import {cleanError} from 'lib/strings/errors'
|
|
||||||
import {shortenLinks} from 'lib/strings/rich-text-manip'
|
|
||||||
import {toShortUrl} from 'lib/strings/url-helpers'
|
|
||||||
import {SelectPhotoBtn} from './photos/SelectPhotoBtn'
|
|
||||||
import {OpenCameraBtn} from './photos/OpenCameraBtn'
|
|
||||||
import {ThreadgateBtn} from './threadgate/ThreadgateBtn'
|
|
||||||
import {usePalette} from 'lib/hooks/usePalette'
|
|
||||||
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
|
|
||||||
import {useExternalLinkFetch} from './useExternalLinkFetch'
|
|
||||||
import {isWeb, isNative, isAndroid, isIOS} from 'platform/detection'
|
|
||||||
import {QuoteEmbed} from '../util/post-embeds/QuoteEmbed'
|
|
||||||
import {GalleryModel} from 'state/models/media/gallery'
|
|
||||||
import {Gallery} from './photos/Gallery'
|
|
||||||
import {MAX_GRAPHEME_LENGTH} from 'lib/constants'
|
|
||||||
import {LabelsBtn} from './labels/LabelsBtn'
|
|
||||||
import {SelectLangBtn} from './select-language/SelectLangBtn'
|
|
||||||
import {SuggestedLanguage} from './select-language/SuggestedLanguage'
|
|
||||||
import {insertMentionAt} from 'lib/strings/mention-manip'
|
|
||||||
import {Trans, msg} from '@lingui/macro'
|
|
||||||
import {useLingui} from '@lingui/react'
|
import {useLingui} from '@lingui/react'
|
||||||
|
import {observer} from 'mobx-react-lite'
|
||||||
|
|
||||||
|
import {logEvent} from '#/lib/statsig/statsig'
|
||||||
|
import {logger} from '#/logger'
|
||||||
|
import {emitPostCreated} from '#/state/events'
|
||||||
import {useModals} from '#/state/modals'
|
import {useModals} from '#/state/modals'
|
||||||
import {useRequireAltTextEnabled} from '#/state/preferences'
|
import {useRequireAltTextEnabled} from '#/state/preferences'
|
||||||
import {
|
import {
|
||||||
|
toPostLanguages,
|
||||||
useLanguagePrefs,
|
useLanguagePrefs,
|
||||||
useLanguagePrefsApi,
|
useLanguagePrefsApi,
|
||||||
toPostLanguages,
|
|
||||||
} from '#/state/preferences/languages'
|
} from '#/state/preferences/languages'
|
||||||
import {useSession, getAgent} from '#/state/session'
|
|
||||||
import {useProfileQuery} from '#/state/queries/profile'
|
import {useProfileQuery} from '#/state/queries/profile'
|
||||||
import {useComposerControls} from '#/state/shell/composer'
|
|
||||||
import {emitPostCreated} from '#/state/events'
|
|
||||||
import {ThreadgateSetting} from '#/state/queries/threadgate'
|
import {ThreadgateSetting} from '#/state/queries/threadgate'
|
||||||
import {logger} from '#/logger'
|
import {getAgent, useSession} from '#/state/session'
|
||||||
|
import {useComposerControls} from '#/state/shell/composer'
|
||||||
|
import {useAnalytics} from 'lib/analytics/analytics'
|
||||||
|
import * as apilib from 'lib/api/index'
|
||||||
|
import {MAX_GRAPHEME_LENGTH} from 'lib/constants'
|
||||||
|
import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible'
|
||||||
|
import {usePalette} from 'lib/hooks/usePalette'
|
||||||
|
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
|
||||||
|
import {cleanError} from 'lib/strings/errors'
|
||||||
|
import {insertMentionAt} from 'lib/strings/mention-manip'
|
||||||
|
import {shortenLinks} from 'lib/strings/rich-text-manip'
|
||||||
|
import {toShortUrl} from 'lib/strings/url-helpers'
|
||||||
|
import {colors, gradients, s} from 'lib/styles'
|
||||||
|
import {isAndroid, isIOS, isNative, isWeb} from 'platform/detection'
|
||||||
|
import {useDialogStateControlContext} from 'state/dialogs'
|
||||||
|
import {GalleryModel} from 'state/models/media/gallery'
|
||||||
|
import {ComposerOpts} from 'state/shell/composer'
|
||||||
import {ComposerReplyTo} from 'view/com/composer/ComposerReplyTo'
|
import {ComposerReplyTo} from 'view/com/composer/ComposerReplyTo'
|
||||||
import * as Prompt from '#/components/Prompt'
|
import * as Prompt from '#/components/Prompt'
|
||||||
import {useDialogStateControlContext} from 'state/dialogs'
|
import {QuoteEmbed} from '../util/post-embeds/QuoteEmbed'
|
||||||
import {logEvent} from '#/lib/statsig/statsig'
|
import {Text} from '../util/text/Text'
|
||||||
|
import * as Toast from '../util/Toast'
|
||||||
|
import {UserAvatar} from '../util/UserAvatar'
|
||||||
|
import {CharProgress} from './char-progress/CharProgress'
|
||||||
|
import {ExternalEmbed} from './ExternalEmbed'
|
||||||
|
import {LabelsBtn} from './labels/LabelsBtn'
|
||||||
|
import {Gallery} from './photos/Gallery'
|
||||||
|
import {OpenCameraBtn} from './photos/OpenCameraBtn'
|
||||||
|
import {SelectPhotoBtn} from './photos/SelectPhotoBtn'
|
||||||
|
import {SelectLangBtn} from './select-language/SelectLangBtn'
|
||||||
|
import {SuggestedLanguage} from './select-language/SuggestedLanguage'
|
||||||
|
// TODO: Prevent naming components that coincide with RN primitives
|
||||||
|
// due to linting false positives
|
||||||
|
import {TextInput, TextInputRef} from './text-input/TextInput'
|
||||||
|
import {ThreadgateBtn} from './threadgate/ThreadgateBtn'
|
||||||
|
import {useExternalLinkFetch} from './useExternalLinkFetch'
|
||||||
|
|
||||||
type Props = ComposerOpts
|
type Props = ComposerOpts
|
||||||
export const ComposePost = observer(function ComposePost({
|
export const ComposePost = observer(function ComposePost({
|
||||||
|
@ -506,7 +507,9 @@ export const ComposePost = observer(function ComposePost({
|
||||||
control={discardPromptControl}
|
control={discardPromptControl}
|
||||||
title={_(msg`Discard draft?`)}
|
title={_(msg`Discard draft?`)}
|
||||||
description={_(msg`Are you sure you'd like to discard this draft?`)}
|
description={_(msg`Are you sure you'd like to discard this draft?`)}
|
||||||
onConfirm={onClose}
|
onConfirm={() => {
|
||||||
|
discardPromptControl.close(onClose)
|
||||||
|
}}
|
||||||
confirmButtonCta={_(msg`Discard`)}
|
confirmButtonCta={_(msg`Discard`)}
|
||||||
confirmButtonColor="negative"
|
confirmButtonColor="negative"
|
||||||
/>
|
/>
|
||||||
|
|
Loading…
Reference in New Issue