Skip to content

Commit 78a63ef

Browse files
authored
Revert "Adjust emoji offsets (#28635)" (#28637)
This reverts commit d9c0c49.
1 parent d9c0c49 commit 78a63ef

32 files changed

+749
-1602
lines changed

shared/chat/conversation/input-area/suggestors/emoji.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@ import * as C from '@/constants'
22
import * as Common from './common'
33
import * as Kb from '@/common-adapters'
44
import * as React from 'react'
5-
import {type EmojiData, RPCToEmojiData, emojiData} from '@/common-adapters/emoji'
5+
import {
6+
emojiSearch,
7+
emojiDataToRenderableEmoji,
8+
renderEmoji,
9+
type EmojiData,
10+
RPCToEmojiData,
11+
} from '@/util/emoji'
612

713
export const transformer = (
814
emoji: EmojiData,
@@ -27,7 +33,7 @@ const ItemRenderer = (p: Common.ItemRendererProps<EmojiData>) => {
2733
])}
2834
gap="small"
2935
>
30-
<Kb.Emoji emojiData={item} showTooltip={false} size={24} />
36+
{renderEmoji({emoji: emojiDataToRenderableEmoji(item), showTooltip: false, size: 24})}
3137
<Kb.Text type="BodySmallSemibold">{item.short_name}</Kb.Text>
3238
</Kb.Box2>
3339
)
@@ -55,17 +61,17 @@ const useDataSource = (filter: string) => {
5561
}
5662

5763
// prefill data with stock emoji
58-
let results: Array<EmojiData> = emojiData.emojiSearch(filter, 50)
64+
let emojiData: Array<EmojiData> = emojiSearch(filter, 50)
5965

6066
if (userEmojis) {
6167
const userEmoji = userEmojis
6268
.filter(emoji => emoji.alias.toLowerCase().includes(filter))
6369
.map(emoji => RPCToEmojiData(emoji, false))
64-
results = userEmoji.sort((a, b) => a.short_name.localeCompare(b.short_name)).concat(results)
70+
emojiData = userEmoji.sort((a, b) => a.short_name.localeCompare(b.short_name)).concat(emojiData)
6571
}
6672

6773
return {
68-
items: results,
74+
items: emojiData,
6975
loading: userEmojisLoading,
7076
}
7177
}

shared/chat/conversation/messages/emoji-row.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {useOrdinal} from './ids-context'
44
import * as Kb from '@/common-adapters'
55
import type * as T from '@/constants/types'
66
import {EmojiPickerDesktop} from '@/chat/emoji-picker/container'
7+
import {renderEmoji, RPCUserReacjiToRenderableEmoji} from '@/util/emoji'
78

89
type OwnProps = {
910
className?: string
@@ -120,14 +121,13 @@ const HoverEmoji = (props: {emoji: T.RPCGen.UserReacji; onClick: () => void}) =>
120121
hoverColor={Kb.Styles.globalColors.transparent}
121122
style={styles.emojiBox}
122123
>
123-
<Kb.Emoji
124-
userReacji={props.emoji}
125-
noAnim={!hovering}
126-
showTooltip={false}
127-
size={hovering ? 22 : 18}
128-
style={styles.hoverEmoji}
129-
virtualText={true}
130-
/>
124+
{renderEmoji({
125+
emoji: RPCUserReacjiToRenderableEmoji(props.emoji, !hovering),
126+
showTooltip: false,
127+
size: hovering ? 22 : 18,
128+
style: styles.hoverEmoji,
129+
virtualText: true,
130+
})}
131131
</Kb.ClickableBox>
132132
)
133133
}

shared/chat/conversation/messages/message-popup/reactionitem.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as C from '@/constants'
22
import * as Kb from '@/common-adapters'
3+
import {renderEmoji, RPCUserReacjiToRenderableEmoji} from '@/util/emoji'
34

45
type Props = {
56
onHidden: () => void
@@ -25,7 +26,7 @@ const ReactionItem = (props: Props) => {
2526
<Kb.Box2 direction="horizontal" fullWidth={true} style={styles.container}>
2627
{topReacjis.map((r, idx) => (
2728
<Kb.ClickableBox key={r.name || idx} onClick={() => onReact(r.name)} style={styles.clickableBox}>
28-
<Kb.Emoji userReacji={r} noAnim={true} showTooltip={false} size={28} />
29+
{renderEmoji({emoji: RPCUserReacjiToRenderableEmoji(r, true), showTooltip: false, size: 28})}
2930
</Kb.ClickableBox>
3031
))}
3132
<Kb.ClickableBox onClick={showPicker} style={styles.clickableBox}>

shared/chat/conversation/messages/react-button.tsx

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,10 @@ const ReactButtonContainer = React.memo(function ReactButtonContainer(p: OwnProp
105105

106106
const markdownOverride: StyleOverride = Kb.Styles.isMobile
107107
? {
108-
customEmoji: {
109-
height: 24,
110-
transform: [{translateY: C.isAndroid ? 0 : 3.5}],
111-
width: 24,
112-
},
113-
emoji: {
114-
lineHeight: C.isAndroid ? 26 : 28.5,
115-
},
116-
emojiSize: {size: 24},
108+
customEmoji: {height: 24, width: 24},
109+
emoji: {height: 21, lineHeight: 24},
110+
emojiSize: {size: 22},
111+
paragraph: {},
117112
}
118113
: {
119114
customEmoji: {height: 18, width: 18},

shared/chat/conversation/messages/special-top-message.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ const SpecialTopMessage = React.memo(function SpecialTopMessage() {
206206
{allowDigging && loadMoreType === 'moreToLoad' && pendingState === 'done' && (
207207
<Kb.Box style={styles.more}>
208208
<Kb.Text type="BodyBig">
209-
<Kb.NativeEmoji size={16} emojiName=":moyai:" />
209+
<Kb.Emoji size={16} emojiName=":moyai:" />
210210
</Kb.Text>
211211
<Kb.Text type="BodySmallSemibold">Digging ancient messages...</Kb.Text>
212212
</Kb.Box>

shared/chat/emoji-picker/container.tsx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ import * as C from '@/constants'
22
import * as React from 'react'
33
import * as Kb from '@/common-adapters'
44
import * as T from '@/constants/types'
5+
import * as Data from '@/util/emoji'
56
import type {LayoutEvent} from '@/common-adapters/box'
67
import startCase from 'lodash/startCase'
78
import SkinTonePicker from './skin-tone-picker'
89
import EmojiPicker, {getSkinToneModifierStrIfAvailable} from '.'
9-
import {type EmojiData, type RenderableEmoji, emojiData} from '@/common-adapters/emoji'
10+
import {emojiDataToRenderableEmoji, renderEmoji, type EmojiData, type RenderableEmoji} from '@/util/emoji'
1011
import {usePickerState, type PickKey} from './use-picker'
1112
import {Keyboard} from 'react-native'
1213

@@ -179,7 +180,7 @@ export const EmojiPickerDesktop = (props: Props) => {
179180
const {onDidPick} = props
180181
const {filter, onChoose, setFilter: _setFilter, topReacjis} = useReacji(props)
181182
const {currentSkinTone, setSkinTone} = useSkinTone()
182-
const [hoveredEmoji, setHoveredEmoji] = React.useState<EmojiData>(emojiData.defaultHoverEmoji)
183+
const [hoveredEmoji, setHoveredEmoji] = React.useState<EmojiData>(Data.defaultHoverEmoji)
183184
const {waiting, customEmojiGroups} = useCustomReacji(props.onlyTeamCustomEmoji, props.disableCustomEmoji)
184185
const canManageEmoji = useCanManageEmoji()
185186
const navigateAppend = C.Chat.useChatNavigateAppend()
@@ -239,13 +240,15 @@ export const EmojiPickerDesktop = (props: Props) => {
239240
style={styles.footerContainer}
240241
gap="small"
241242
>
242-
<Kb.Emoji
243-
emojiData={hoveredEmoji}
244-
skinToneModifier={getSkinToneModifierStrIfAvailable(hoveredEmoji, currentSkinTone)}
245-
skinToneKey={currentSkinTone}
246-
showTooltip={false}
247-
size={36}
248-
/>
243+
{renderEmoji({
244+
emoji: emojiDataToRenderableEmoji(
245+
hoveredEmoji,
246+
getSkinToneModifierStrIfAvailable(hoveredEmoji, currentSkinTone),
247+
currentSkinTone
248+
),
249+
showTooltip: false,
250+
size: 36,
251+
})}
249252
{hoveredEmoji.teamname ? (
250253
<Kb.Box2 direction="vertical" style={Kb.Styles.globalStyles.flexOne}>
251254
<Kb.Text type="BodyBig" lineClamp={1}>

shared/chat/emoji-picker/index.tsx

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
import * as React from 'react'
22
import type * as T from '@/constants/types'
33
import * as C from '@/constants'
4+
import * as Data from '@/util/emoji'
45
import * as Kb from '@/common-adapters'
56
import chunk from 'lodash/chunk'
67
import {
8+
emojiDataToRenderableEmoji,
79
getEmojiStr,
10+
renderEmoji,
811
type EmojiData,
912
type RenderableEmoji,
1013
RPCToEmojiData,
11-
emojiDataToRenderableEmoji,
12-
emojiData,
13-
} from '@/common-adapters/emoji'
14+
} from './../../util/emoji'
15+
16+
// defer loading this until we need to, very expensive
17+
const _getData = () => {
18+
const utilEmoji = require('@/util/emoji') as {
19+
categories: typeof Data.categories
20+
emojiSearch: typeof Data.emojiSearch
21+
emojiNameMap: typeof Data.emojiNameMap
22+
skinTones: typeof Data.skinTones
23+
}
24+
const {categories, emojiSearch, emojiNameMap, skinTones: emojiSkinTones} = utilEmoji
25+
return {categories, emojiNameMap, emojiSearch, emojiSkinTones}
26+
}
1427

1528
const chunkEmojis = (emojis: Array<EmojiData>, emojisPerLine: number): Array<Row> =>
1629
chunk(emojis, emojisPerLine).map((c, idx) => ({
@@ -24,7 +37,7 @@ const chunkEmojis = (emojis: Array<EmojiData>, emojisPerLine: number): Array<Row
2437
const removeObsolete = (emojis: Array<EmojiData>) => emojis.filter(e => !e.obsoleted_by)
2538

2639
const getEmojiSections = (emojisPerLine: number): Array<Section> =>
27-
emojiData.categories.map(
40+
_getData().categories.map(
2841
c =>
2942
({
3043
data: chunkEmojis(removeObsolete(c.emojis), emojisPerLine),
@@ -38,10 +51,11 @@ const getFrequentSection = (
3851
customEmojiGroups: ReadonlyArray<T.RPCChat.EmojiGroup>,
3952
emojisPerLine: number
4053
): Section => {
54+
const {emojiNameMap} = _getData()
4155
const customEmojiIndex = getCustomEmojiIndex(customEmojiGroups)
4256
const emojis = topReacjis.reduce<Array<EmojiData>>((arr, top) => {
4357
const shortNameNoColons = top.name.replace(/:/g, '')
44-
const emoji = emojiData.emojiNameMap[shortNameNoColons] || customEmojiIndex.get(shortNameNoColons)
58+
const emoji = emojiNameMap[shortNameNoColons] || customEmojiIndex.get(shortNameNoColons)
4559
if (emoji) {
4660
arr.push(emoji)
4761
}
@@ -133,12 +147,10 @@ const getCustomEmojiIndex = (emojiGroups: ReadonlyArray<T.RPCChat.EmojiGroup>) =
133147
const emptyCustomEmojiIndex = {filter: () => [], get: () => undefined}
134148

135149
const getResultFilter = (emojiGroups?: ReadonlyArray<T.RPCChat.EmojiGroup>) => {
150+
const {emojiSearch} = _getData()
136151
const customEmojiIndex = emojiGroups ? getCustomEmojiIndex(emojiGroups) : emptyCustomEmojiIndex
137152
return (filter: string): Array<EmojiData> => {
138-
return [
139-
...customEmojiIndex.filter(filter),
140-
...removeObsolete(emojiData.emojiSearch(filter, maxEmojiSearchResults)),
141-
]
153+
return [...customEmojiIndex.filter(filter), ...removeObsolete(emojiSearch(filter, maxEmojiSearchResults))]
142154
}
143155
}
144156

@@ -169,7 +181,8 @@ const getSectionsAndBookmarks = (
169181
}
170182

171183
getEmojiSections(emojisPerLine).forEach(section => {
172-
const categoryIcon = emojiData.categoryIcons[section.title] as Kb.IconType | undefined
184+
const cat = Data.categoryIcons as {[key: string]: Kb.IconType}
185+
const categoryIcon = cat[section.title]
173186
categoryIcon &&
174187
bookmarks.push({
175188
coveredSectionKeys: new Set([section.key]),
@@ -221,26 +234,16 @@ const EmojiPicker = React.memo(function EmojiPicker(props: Props) {
221234
const [activeSectionKey, setActiveSectionKey] = React.useState('')
222235
const getEmojiSingle = (emoji: EmojiData, skinTone?: T.Chat.EmojiSkinTone) => {
223236
const skinToneModifier = getSkinToneModifierStrIfAvailable(emoji, skinTone)
237+
const renderable = emojiDataToRenderableEmoji(emoji, skinToneModifier, skinTone)
224238
return (
225239
<Kb.ClickableBox2
226240
className="emoji-picker-emoji-box"
227-
onClick={() => {
228-
props.onChoose(
229-
getEmojiStr(emoji, skinToneModifier),
230-
emojiDataToRenderableEmoji(emoji, skinToneModifier, skinTone)
231-
)
232-
}}
241+
onClick={() => props.onChoose(getEmojiStr(emoji, skinToneModifier), renderable)}
233242
onMouseOver={props.onHover && (() => props.onHover?.(emoji))}
234243
style={styles.emoji}
235244
key={emoji.short_name}
236245
>
237-
<Kb.Emoji
238-
emojiData={emoji}
239-
skinToneModifier={skinToneModifier}
240-
skinToneKey={skinTone}
241-
showTooltip={false}
242-
size={singleEmojiWidth}
243-
/>
246+
{renderEmoji({emoji: renderable, showTooltip: false, size: singleEmojiWidth})}
244247
</Kb.ClickableBox2>
245248
)
246249
}
@@ -406,7 +409,8 @@ const EmojiPicker = React.memo(function EmojiPicker(props: Props) {
406409

407410
export const getSkinToneModifierStrIfAvailable = (emoji: EmojiData, skinTone?: T.Chat.EmojiSkinTone) => {
408411
if (skinTone && emoji.skin_variations?.[skinTone]) {
409-
const idx = emojiData.skinTones.indexOf(skinTone)
412+
const {emojiSkinTones} = _getData()
413+
const idx = emojiSkinTones.indexOf(skinTone)
410414
return `:skin-tone-${idx + 1}:`
411415
}
412416
return undefined

shared/chat/emoji-picker/skin-tone-picker.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as React from 'react'
2-
import * as Kb from '@/common-adapters'
3-
import * as T from '@/constants/types'
4-
import {emojiData} from '@/common-adapters/emoji'
2+
import * as Kb from './../../common-adapters'
3+
import * as T from './../../constants/types'
4+
import {skinTones} from './../../util/emoji'
55

66
const circle = (skinTone: undefined | T.Chat.EmojiSkinTone, isExpanded: boolean, outerCircle: boolean) => {
77
return (
@@ -25,10 +25,10 @@ type Props = {
2525
}
2626

2727
const reorderedSkinTones = (currentSkinTone: Props['currentSkinTone']) => {
28-
if (Kb.Styles.isMobile || !currentSkinTone) return emojiData.skinTones
29-
const idx = emojiData.skinTones.indexOf(currentSkinTone)
30-
if (idx === -1) return emojiData.skinTones
31-
const rest = [...emojiData.skinTones]
28+
if (Kb.Styles.isMobile || !currentSkinTone) return skinTones
29+
const idx = skinTones.indexOf(currentSkinTone)
30+
if (idx === -1) return skinTones
31+
const rest = [...skinTones]
3232
rest.splice(idx, 1)
3333
return [currentSkinTone, ...rest]
3434
}

shared/chat/emoji-picker/use-picker.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as Z from '@/util/zustand'
22
import type * as T from '@/constants/types'
3-
import type {RenderableEmoji} from '@/common-adapters/emoji'
3+
import type {RenderableEmoji} from '@/util/emoji'
44

55
export type PickKey = 'addAlias' | 'chatInput' | 'reaction'
66
type PickerValue = {
File renamed without changes.

0 commit comments

Comments
 (0)