tooot/src/screens/Shared/Compose/Root/Suggestion.tsx

52 lines
1.5 KiB
TypeScript
Raw Normal View History

2021-01-16 00:00:31 +01:00
import ComponentAccount from '@components/Account'
2021-01-24 02:25:43 +01:00
import analytics from '@components/analytics'
2021-01-07 19:13:09 +01:00
import haptics from '@components/haptics'
2021-01-19 01:13:45 +01:00
import ComponentHashtag from '@components/Hashtag'
2021-01-16 00:00:31 +01:00
import React, { Dispatch, useCallback } from 'react'
2021-01-07 19:13:09 +01:00
import updateText from '../updateText'
import { ComposeAction, ComposeState } from '../utils/types'
const ComposeRootSuggestion = React.memo(
({
item,
composeState,
composeDispatch
}: {
item: Mastodon.Account & Mastodon.Tag
composeState: ComposeState
composeDispatch: Dispatch<ComposeAction>
}) => {
const onPress = useCallback(() => {
2021-01-24 02:25:43 +01:00
analytics('compose_suggestion_press', {
type: item.acct ? 'account' : 'hashtag'
})
2021-01-07 19:13:09 +01:00
const focusedInput = composeState.textInputFocus.current
updateText({
composeState: {
...composeState,
[focusedInput]: {
...composeState[focusedInput],
selection: {
start: composeState.tag!.offset,
end: composeState.tag!.offset + composeState.tag!.text.length + 1
}
}
},
composeDispatch,
newText: item.acct ? `@${item.acct}` : `#${item.name}`,
type: 'suggestion'
})
haptics('Light')
}, [])
2021-01-16 00:00:31 +01:00
return item.acct ? (
2021-01-24 02:25:43 +01:00
<ComponentAccount account={item} onPress={onPress} origin='suggestion' />
2021-01-16 00:00:31 +01:00
) : (
2021-01-24 02:25:43 +01:00
<ComponentHashtag hashtag={item} onPress={onPress} origin='suggestion' />
2021-01-07 19:13:09 +01:00
)
},
() => true
)
export default ComposeRootSuggestion