diff --git a/src/components/Lists.tsx b/src/components/Lists.tsx
index 721e877be6..8cbe2810e8 100644
--- a/src/components/Lists.tsx
+++ b/src/components/Lists.tsx
@@ -136,6 +136,7 @@ let ListMaybePlaceholder = ({
onGoBack,
hideBackButton,
sideBorders,
+ topBorder = true,
}: {
isLoading: boolean
noEmpty?: boolean
@@ -149,6 +150,7 @@ let ListMaybePlaceholder = ({
onGoBack?: () => void
hideBackButton?: boolean
sideBorders?: boolean
+ topBorder?: boolean
}): React.ReactNode => {
const t = useTheme()
const {_} = useLingui()
@@ -165,7 +167,7 @@ let ListMaybePlaceholder = ({
{paddingTop: 175, paddingBottom: 110},
]}
sideBorders={sideBorders ?? gtMobile}
- topBorder={!gtTablet}>
+ topBorder={topBorder && !gtTablet}>
diff --git a/src/components/dialogs/GifSelect.tsx b/src/components/dialogs/GifSelect.tsx
index 57389ba2b7..4a3ce42aa9 100644
--- a/src/components/dialogs/GifSelect.tsx
+++ b/src/components/dialogs/GifSelect.tsx
@@ -197,6 +197,7 @@ function GifList({
onGoBack={onGoBack}
emptyType="results"
sideBorders={false}
+ topBorder={false}
errorTitle={_(msg`Failed to load GIFs`)}
errorMessage={_(msg`There was an issue connecting to Tenor.`)}
emptyMessage={
diff --git a/src/components/dms/NewChat.tsx b/src/components/dms/NewChat.tsx
index 5dde8628c1..3975c0c5d5 100644
--- a/src/components/dms/NewChat.tsx
+++ b/src/components/dms/NewChat.tsx
@@ -10,6 +10,7 @@ import {sanitizeHandle} from '#/lib/strings/handles'
import {isWeb} from '#/platform/detection'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useGetConvoForMembers} from '#/state/queries/messages/get-convo-for-members'
+import {useSession} from '#/state/session'
import {useActorAutocompleteQuery} from 'state/queries/actor-autocomplete'
import {FAB} from '#/view/com/util/fab/FAB'
import * as Toast from '#/view/com/util/Toast'
@@ -23,6 +24,7 @@ import {Button} from '../Button'
import {Envelope_Stroke2_Corner0_Rounded as Envelope} from '../icons/Envelope'
import {ListMaybePlaceholder} from '../Lists'
import {Text} from '../Typography'
+import {canBeMessaged} from './util'
export function NewChat({
control,
@@ -82,6 +84,7 @@ function SearchablePeopleList({
const moderationOpts = useModerationOpts()
const control = Dialog.useDialogContext()
const listRef = useRef(null)
+ const {currentAccount} = useSession()
const [searchText, setSearchText] = useState('')
@@ -95,12 +98,17 @@ function SearchablePeopleList({
const renderItem = useCallback(
({item: profile}: {item: AppBskyActorDefs.ProfileView}) => {
if (!moderationOpts) return null
+
const moderation = moderateProfile(profile, moderationOpts)
+
+ const disabled = !canBeMessaged(profile)
+ const handle = sanitizeHandle(profile.handle, '@')
+
return (