An ATproto social media client -- with an independent Appview.
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix android back after closing composer (#3330)

authored by

Hailey and committed by
GitHub
772d5281 6f2dfcb5

+46 -43
+46 -43
src/view/com/composer/Composer.tsx
··· 1 1 import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react' 2 - import {observer} from 'mobx-react-lite' 3 2 import { 4 3 ActivityIndicator, 5 4 BackHandler, ··· 12 11 TouchableOpacity, 13 12 View, 14 13 } from 'react-native' 15 - import {useSafeAreaInsets} from 'react-native-safe-area-context' 16 14 import LinearGradient from 'react-native-linear-gradient' 17 - import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' 15 + import {useSafeAreaInsets} from 'react-native-safe-area-context' 18 16 import {RichText} from '@atproto/api' 19 - import {useAnalytics} from 'lib/analytics/analytics' 20 - import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible' 21 - import {ExternalEmbed} from './ExternalEmbed' 22 - import {Text} from '../util/text/Text' 23 - import * as Toast from '../util/Toast' 24 - // TODO: Prevent naming components that coincide with RN primitives 25 - // due to linting false positives 26 - import {TextInput, TextInputRef} from './text-input/TextInput' 27 - import {CharProgress} from './char-progress/CharProgress' 28 - import {UserAvatar} from '../util/UserAvatar' 29 - import * as apilib from 'lib/api/index' 30 - import {ComposerOpts} from 'state/shell/composer' 31 - import {s, colors, gradients} from 'lib/styles' 32 - import {cleanError} from 'lib/strings/errors' 33 - import {shortenLinks} from 'lib/strings/rich-text-manip' 34 - import {toShortUrl} from 'lib/strings/url-helpers' 35 - import {SelectPhotoBtn} from './photos/SelectPhotoBtn' 36 - import {OpenCameraBtn} from './photos/OpenCameraBtn' 37 - import {ThreadgateBtn} from './threadgate/ThreadgateBtn' 38 - import {usePalette} from 'lib/hooks/usePalette' 39 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 40 - import {useExternalLinkFetch} from './useExternalLinkFetch' 41 - import {isWeb, isNative, isAndroid, isIOS} from 'platform/detection' 42 - import {QuoteEmbed} from '../util/post-embeds/QuoteEmbed' 43 - import {GalleryModel} from 'state/models/media/gallery' 44 - import {Gallery} from './photos/Gallery' 45 - import {MAX_GRAPHEME_LENGTH} from 'lib/constants' 46 - import {LabelsBtn} from './labels/LabelsBtn' 47 - import {SelectLangBtn} from './select-language/SelectLangBtn' 48 - import {SuggestedLanguage} from './select-language/SuggestedLanguage' 49 - import {insertMentionAt} from 'lib/strings/mention-manip' 50 - import {Trans, msg} from '@lingui/macro' 17 + import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' 18 + import {msg, Trans} from '@lingui/macro' 51 19 import {useLingui} from '@lingui/react' 20 + import {observer} from 'mobx-react-lite' 21 + 22 + import {logEvent} from '#/lib/statsig/statsig' 23 + import {logger} from '#/logger' 24 + import {emitPostCreated} from '#/state/events' 52 25 import {useModals} from '#/state/modals' 53 26 import {useRequireAltTextEnabled} from '#/state/preferences' 54 27 import { 28 + toPostLanguages, 55 29 useLanguagePrefs, 56 30 useLanguagePrefsApi, 57 - toPostLanguages, 58 31 } from '#/state/preferences/languages' 59 - import {useSession, getAgent} from '#/state/session' 60 32 import {useProfileQuery} from '#/state/queries/profile' 33 + import {ThreadgateSetting} from '#/state/queries/threadgate' 34 + import {getAgent, useSession} from '#/state/session' 61 35 import {useComposerControls} from '#/state/shell/composer' 62 - import {emitPostCreated} from '#/state/events' 63 - import {ThreadgateSetting} from '#/state/queries/threadgate' 64 - import {logger} from '#/logger' 36 + import {useAnalytics} from 'lib/analytics/analytics' 37 + import * as apilib from 'lib/api/index' 38 + import {MAX_GRAPHEME_LENGTH} from 'lib/constants' 39 + import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible' 40 + import {usePalette} from 'lib/hooks/usePalette' 41 + import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 42 + import {cleanError} from 'lib/strings/errors' 43 + import {insertMentionAt} from 'lib/strings/mention-manip' 44 + import {shortenLinks} from 'lib/strings/rich-text-manip' 45 + import {toShortUrl} from 'lib/strings/url-helpers' 46 + import {colors, gradients, s} from 'lib/styles' 47 + import {isAndroid, isIOS, isNative, isWeb} from 'platform/detection' 48 + import {useDialogStateControlContext} from 'state/dialogs' 49 + import {GalleryModel} from 'state/models/media/gallery' 50 + import {ComposerOpts} from 'state/shell/composer' 65 51 import {ComposerReplyTo} from 'view/com/composer/ComposerReplyTo' 66 52 import * as Prompt from '#/components/Prompt' 67 - import {useDialogStateControlContext} from 'state/dialogs' 68 - import {logEvent} from '#/lib/statsig/statsig' 53 + import {QuoteEmbed} from '../util/post-embeds/QuoteEmbed' 54 + import {Text} from '../util/text/Text' 55 + import * as Toast from '../util/Toast' 56 + import {UserAvatar} from '../util/UserAvatar' 57 + import {CharProgress} from './char-progress/CharProgress' 58 + import {ExternalEmbed} from './ExternalEmbed' 59 + import {LabelsBtn} from './labels/LabelsBtn' 60 + import {Gallery} from './photos/Gallery' 61 + import {OpenCameraBtn} from './photos/OpenCameraBtn' 62 + import {SelectPhotoBtn} from './photos/SelectPhotoBtn' 63 + import {SelectLangBtn} from './select-language/SelectLangBtn' 64 + import {SuggestedLanguage} from './select-language/SuggestedLanguage' 65 + // TODO: Prevent naming components that coincide with RN primitives 66 + // due to linting false positives 67 + import {TextInput, TextInputRef} from './text-input/TextInput' 68 + import {ThreadgateBtn} from './threadgate/ThreadgateBtn' 69 + import {useExternalLinkFetch} from './useExternalLinkFetch' 69 70 70 71 type Props = ComposerOpts 71 72 export const ComposePost = observer(function ComposePost({ ··· 506 507 control={discardPromptControl} 507 508 title={_(msg`Discard draft?`)} 508 509 description={_(msg`Are you sure you'd like to discard this draft?`)} 509 - onConfirm={onClose} 510 + onConfirm={() => { 511 + discardPromptControl.close(onClose) 512 + }} 510 513 confirmButtonCta={_(msg`Discard`)} 511 514 confirmButtonColor="negative" 512 515 />