diff --git a/package.json b/package.json index bed17e9dc2..b80456b792 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "prepare": "is-ci || husky install", - "postinstall": "patch-package", + "postinstall": "patch-package && yarn intl:compile", "prebuild": "expo prebuild --clean", "android": "expo run:android", "ios": "expo run:ios", diff --git a/src/state/queries/actor-autocomplete.ts b/src/state/queries/actor-autocomplete.ts index fe207371d0..709a15b407 100644 --- a/src/state/queries/actor-autocomplete.ts +++ b/src/state/queries/actor-autocomplete.ts @@ -11,6 +11,7 @@ import { getModerationOpts, useModerationOpts, } from './preferences' +import {isInvalidHandle} from '#/lib/strings/handles' const DEFAULT_MOD_OPTS = getModerationOpts({ userDid: '', @@ -119,7 +120,7 @@ function prefixMatch( prefix: string, info: AppBskyActorDefs.ProfileViewBasic, ): boolean { - if (info.handle.includes(prefix)) { + if (!isInvalidHandle(info.handle) && info.handle.includes(prefix)) { return true } if (info.displayName?.toLocaleLowerCase().includes(prefix)) { diff --git a/src/view/com/auth/create/state.ts b/src/view/com/auth/create/state.ts index 4df82f8fcb..a77d2a44fe 100644 --- a/src/view/com/auth/create/state.ts +++ b/src/view/com/auth/create/state.ts @@ -144,7 +144,7 @@ export async function submit({ } export function is13(state: CreateAccountState) { - return getAge(state.birthDate) >= 18 + return getAge(state.birthDate) >= 13 } export function is18(state: CreateAccountState) { diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx index c4453e0c3e..64427b837e 100644 --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -452,7 +452,7 @@ export const ComposePost = observer(function ComposePost({ ) : null} - {isDesktop ? : null} + {!isMobile ? : null} diff --git a/src/view/com/composer/text-input/web/Autocomplete.tsx b/src/view/com/composer/text-input/web/Autocomplete.tsx index 1f74125617..51197b8e4d 100644 --- a/src/view/com/composer/text-input/web/Autocomplete.tsx +++ b/src/view/com/composer/text-input/web/Autocomplete.tsx @@ -134,7 +134,7 @@ const MentionList = forwardRef( return true } - if (event.key === 'Enter') { + if (event.key === 'Enter' || event.key === 'Tab') { enterHandler() return true } diff --git a/src/view/com/composer/text-input/web/EmojiPicker.web.tsx b/src/view/com/composer/text-input/web/EmojiPicker.web.tsx index 59a3a13928..575b5dd22d 100644 --- a/src/view/com/composer/text-input/web/EmojiPicker.web.tsx +++ b/src/view/com/composer/text-input/web/EmojiPicker.web.tsx @@ -76,7 +76,7 @@ export function EmojiPicker({close}: {close: () => void}) { return (await import('./EmojiPickerData.json')).default }} onEmojiSelect={onInsert} - autoFocus={false} + autoFocus={true} /> diff --git a/src/view/com/modals/AltImage.tsx b/src/view/com/modals/AltImage.tsx index 80130f43ad..a2e9183179 100644 --- a/src/view/com/modals/AltImage.tsx +++ b/src/view/com/modals/AltImage.tsx @@ -80,6 +80,7 @@ export function Component({image}: Props) { source={{ uri: image.cropped?.path ?? image.path, }} + contentFit="contain" accessible={true} accessibilityIgnoresInvertColors /> diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index 3929537096..1d16df3945 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -88,6 +88,7 @@ function ListImpl( {...props} contentOffset={contentOffset} refreshControl={refreshControl} + scrollIndicatorInsets={{right: 1}} onScroll={scrollHandler} scrollEventThrottle={1} style={style} diff --git a/src/view/screens/Feeds.tsx b/src/view/screens/Feeds.tsx index 9ce745c126..20cdf815ae 100644 --- a/src/view/screens/Feeds.tsx +++ b/src/view/screens/Feeds.tsx @@ -493,6 +493,7 @@ export function FeedsScreen(_props: Props) { onEndReached={onEndReached} // @ts-ignore our .web version only -prf desktopFixedHeight + scrollIndicatorInsets={{right: 1}} /> {hasSession && ( diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx index 12c3a098b2..ee83744dd2 100644 --- a/src/view/screens/Profile.tsx +++ b/src/view/screens/Profile.tsx @@ -39,6 +39,7 @@ import {truncateAndInvalidate} from '#/state/queries/util' import {Text} from '#/view/com/util/text/Text' import {usePalette} from 'lib/hooks/usePalette' import {isNative} from '#/platform/detection' +import {isInvalidHandle} from '#/lib/strings/handles' interface SectionRef { scrollToTop: () => void @@ -231,7 +232,7 @@ function ProfileScreenLoaded({ track('ProfileScreen:PressCompose') const mention = profile.handle === currentAccount?.handle || - profile.handle === 'handle.invalid' + isInvalidHandle(profile.handle) ? undefined : profile.handle openComposer({mention}) diff --git a/src/view/shell/desktop/LeftNav.tsx b/src/view/shell/desktop/LeftNav.tsx index 9c89eac6ff..f4ee178e7d 100644 --- a/src/view/shell/desktop/LeftNav.tsx +++ b/src/view/shell/desktop/LeftNav.tsx @@ -46,6 +46,7 @@ import {useComposerControls} from '#/state/shell/composer' import {useFetchHandle} from '#/state/queries/handle' import {emitSoftReset} from '#/state/events' import {NavSignupCard} from '#/view/shell/NavSignupCard' +import {isInvalidHandle} from '#/lib/strings/handles' function ProfileCard() { const {currentAccount} = useSession() @@ -221,7 +222,7 @@ function ComposeBtn() { if ( !handle || handle === currentAccount?.handle || - handle === 'handle.invalid' + isInvalidHandle(handle) ) return undefined