Skip to content

Commit

Permalink
Improvements to auto-mentioning users from their profiles (#1556)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
estrattonbailey and mozzius authored Sep 27, 2023
1 parent 42723df commit 6325eff
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
5 changes: 4 additions & 1 deletion src/view/screens/Profile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
23 changes: 18 additions & 5 deletions src/view/shell/desktop/LeftNav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 6325eff

Please sign in to comment.