Improvements to auto-mentioning users from their profiles (#1556)

* Don't automatically mention users with invalid handles

* don't mention when using did urls

* resolve profile from cache

* a little clearer

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
zio/stable
Eric Bailey 2023-09-27 11:06:33 -05:00 committed by GitHub
parent 42723dfaf6
commit 6325eff938
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 6 deletions

View File

@ -91,7 +91,10 @@ export const ProfileScreen = withAuthRequired(
const onPressCompose = React.useCallback(() => {
track('ProfileScreen:PressCompose')
const mention =
uiState.profile.handle === store.me.handle ? '' : uiState.profile.handle
uiState.profile.handle === store.me.handle ||
uiState.profile.handle === 'handle.invalid'
? undefined
: uiState.profile.handle
store.shell.openComposer({mention})
}, [store, track, uiState])
const onSelectView = React.useCallback(

View File

@ -185,20 +185,33 @@ function ComposeBtn() {
const {getState} = useNavigation()
const {isTablet} = useWebMediaQueries()
const getProfileHandle = () => {
const getProfileHandle = async () => {
const {routes} = getState()
const currentRoute = routes[routes.length - 1]
if (currentRoute.name === 'Profile') {
const {name: handle} =
let handle: string | undefined = (
currentRoute.params as CommonNavigatorParams['Profile']
if (handle === store.me.handle) return undefined
).name
if (handle.startsWith('did:')) {
const cached = await store.profiles.cache.get(handle)
const profile = cached ? cached.data : undefined
// if we can't resolve handle, set to undefined
handle = profile?.handle || undefined
}
if (!handle || handle === store.me.handle || handle === 'handle.invalid')
return undefined
return handle
}
return undefined
}
const onPressCompose = () =>
store.shell.openComposer({mention: getProfileHandle()})
const onPressCompose = async () =>
store.shell.openComposer({mention: await getProfileHandle()})
if (isTablet) {
return null