Emit if we successfully suggested a language to a poster
This commit is contained in:
@@ -115,6 +115,9 @@ export type LogEvents = {
|
|||||||
|
|
||||||
'composer:gif:open': {}
|
'composer:gif:open': {}
|
||||||
'composer:gif:select': {}
|
'composer:gif:select': {}
|
||||||
|
'composer:language:suggest': {
|
||||||
|
lang: string
|
||||||
|
}
|
||||||
|
|
||||||
// Data events
|
// Data events
|
||||||
'account:create:begin': {}
|
'account:create:begin': {}
|
||||||
|
|||||||
@@ -1,22 +1,24 @@
|
|||||||
import React, {useEffect, useState} from 'react'
|
import React, {useEffect, useState} from 'react'
|
||||||
import {StyleSheet, View} from 'react-native'
|
import {StyleSheet, View} from 'react-native'
|
||||||
import lande from 'lande'
|
import {
|
||||||
import {Trans, msg} from '@lingui/macro'
|
FontAwesomeIcon,
|
||||||
|
FontAwesomeIconStyle,
|
||||||
|
} from '@fortawesome/react-native-fontawesome'
|
||||||
|
import {msg, Trans} from '@lingui/macro'
|
||||||
import {useLingui} from '@lingui/react'
|
import {useLingui} from '@lingui/react'
|
||||||
import {Text} from '../../util/text/Text'
|
import lande from 'lande'
|
||||||
import {Button} from '../../util/forms/Button'
|
|
||||||
|
import {usePalette} from '#/lib/hooks/usePalette'
|
||||||
|
import {logEvent} from '#/lib/statsig/statsig'
|
||||||
|
import {s} from '#/lib/styles'
|
||||||
import {code3ToCode2Strict, codeToLanguageName} from '#/locale/helpers'
|
import {code3ToCode2Strict, codeToLanguageName} from '#/locale/helpers'
|
||||||
import {
|
import {
|
||||||
toPostLanguages,
|
toPostLanguages,
|
||||||
useLanguagePrefs,
|
useLanguagePrefs,
|
||||||
useLanguagePrefsApi,
|
useLanguagePrefsApi,
|
||||||
} from '#/state/preferences/languages'
|
} from '#/state/preferences/languages'
|
||||||
import {usePalette} from '#/lib/hooks/usePalette'
|
import {Button} from '../../util/forms/Button'
|
||||||
import {s} from '#/lib/styles'
|
import {Text} from '../../util/text/Text'
|
||||||
import {
|
|
||||||
FontAwesomeIcon,
|
|
||||||
FontAwesomeIconStyle,
|
|
||||||
} from '@fortawesome/react-native-fontawesome'
|
|
||||||
|
|
||||||
// fallbacks for safari
|
// fallbacks for safari
|
||||||
const onIdle = globalThis.requestIdleCallback || (cb => setTimeout(cb, 1))
|
const onIdle = globalThis.requestIdleCallback || (cb => setTimeout(cb, 1))
|
||||||
@@ -30,6 +32,9 @@ export function SuggestedLanguage({text}: {text: string}) {
|
|||||||
const setLangPrefs = useLanguagePrefsApi()
|
const setLangPrefs = useLanguagePrefsApi()
|
||||||
const pal = usePalette('default')
|
const pal = usePalette('default')
|
||||||
const {_} = useLingui()
|
const {_} = useLingui()
|
||||||
|
const shouldSuggestLanguage =
|
||||||
|
suggestedLanguage &&
|
||||||
|
!toPostLanguages(langPrefs.postLanguage).includes(suggestedLanguage)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const textTrimmed = text.trim()
|
const textTrimmed = text.trim()
|
||||||
@@ -48,8 +53,17 @@ export function SuggestedLanguage({text}: {text: string}) {
|
|||||||
return () => cancelIdle(idle)
|
return () => cancelIdle(idle)
|
||||||
}, [text])
|
}, [text])
|
||||||
|
|
||||||
return suggestedLanguage &&
|
const trackedSuggestedLanguage = React.useRef<string | undefined>()
|
||||||
!toPostLanguages(langPrefs.postLanguage).includes(suggestedLanguage) ? (
|
useEffect(() => {
|
||||||
|
if (!trackedSuggestedLanguage.current && shouldSuggestLanguage) {
|
||||||
|
trackedSuggestedLanguage.current = suggestedLanguage
|
||||||
|
logEvent('composer:language:suggest', {
|
||||||
|
lang: suggestedLanguage,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}, [suggestedLanguage, shouldSuggestLanguage])
|
||||||
|
|
||||||
|
return shouldSuggestLanguage ? (
|
||||||
<View style={[pal.border, styles.infoBar]}>
|
<View style={[pal.border, styles.infoBar]}>
|
||||||
<FontAwesomeIcon
|
<FontAwesomeIcon
|
||||||
icon="language"
|
icon="language"
|
||||||
|
|||||||
Reference in New Issue
Block a user