mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-17 14:07:49 +00:00
Update Android build to support gif Use GIF format instead of animated webp Show GIFs in chat messages Display GIF over tile Add Giphy button in reactions menu Added Giphy dialog Fix isGifMessage to also allow upper case
67 lines
2.3 KiB
JavaScript
67 lines
2.3 KiB
JavaScript
import { GiphyContent, GiphyGridView, GiphyMediaType } from '@giphy/react-native-sdk';
|
|
import React, { useCallback, useState } from 'react';
|
|
import { Image, Keyboard, Text, View } from 'react-native';
|
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
import { useDispatch } from 'react-redux';
|
|
|
|
import { createGifSentEvent, sendAnalytics } from '../../../analytics';
|
|
import JitsiScreen from '../../../base/modal/components/JitsiScreen';
|
|
import { sendMessage } from '../../../chat/actions.any';
|
|
import { goBack } from '../../../mobile/navigation/components/conference/ConferenceNavigationContainerRef';
|
|
import ClearableInput from '../../../participants-pane/components/native/ClearableInput';
|
|
import { formatGifUrlMessage, getGifUrl } from '../../functions';
|
|
|
|
import styles from './styles';
|
|
|
|
const GifsMenu = () => {
|
|
const [ searchQuery, setSearchQuery ] = useState('');
|
|
const dispatch = useDispatch();
|
|
const insets = useSafeAreaInsets();
|
|
|
|
const content = searchQuery === ''
|
|
? GiphyContent.trending({ mediaType: GiphyMediaType.Gif })
|
|
: GiphyContent.search({
|
|
searchQuery,
|
|
mediaType: GiphyMediaType.Gif
|
|
});
|
|
|
|
const sendGif = useCallback(e => {
|
|
const url = getGifUrl(e.nativeEvent.media);
|
|
|
|
sendAnalytics(createGifSentEvent());
|
|
|
|
dispatch(sendMessage(formatGifUrlMessage(url), true));
|
|
goBack();
|
|
}, []);
|
|
|
|
const onScroll = useCallback(Keyboard.dismiss, []);
|
|
|
|
return (<JitsiScreen
|
|
style = { styles.container }>
|
|
<ClearableInput
|
|
autoFocus = { true }
|
|
customStyles = { styles.clearableInput }
|
|
onChange = { setSearchQuery }
|
|
placeholder = 'Search GIPHY'
|
|
value = { searchQuery } />
|
|
<GiphyGridView
|
|
cellPadding = { 5 }
|
|
content = { content }
|
|
onMediaSelect = { sendGif }
|
|
onScroll = { onScroll }
|
|
style = { styles.grid } />
|
|
<View
|
|
style = { [ styles.credit, {
|
|
bottom: insets.bottom,
|
|
left: insets.left,
|
|
right: insets.right
|
|
} ] }>
|
|
<Text
|
|
style = { styles.creditText }>Powered by</Text>
|
|
<Image source = { require('../../../../../images/GIPHY_logo.png') } />
|
|
</View>
|
|
</JitsiScreen>);
|
|
};
|
|
|
|
export default GifsMenu;
|