diff --git a/native/chat/settings/thread-settings-media-gallery.react.js b/native/chat/settings/thread-settings-media-gallery.react.js new file mode 100644 --- /dev/null +++ b/native/chat/settings/thread-settings-media-gallery.react.js @@ -0,0 +1,79 @@ +// @flow + +import * as React from 'react'; +import { + View, + TouchableOpacity, + Image, + FlatList, + useWindowDimensions, +} from 'react-native'; + +import { useStyles } from '../../themes/colors'; + +function ThreadSettingsMediaGallery(): React.Node { + const styles = useStyles(unboundStyles); + const galleryItemGap = 8; + const { width } = useWindowDimensions(); + + const galleryItemWidth = (width - galleryItemGap * 3) / 3; + const mediaInfos = []; + + const memoizedStyles = React.useMemo(() => { + return { + mediaContainer: { + marginTop: galleryItemGap, + marginLeft: galleryItemGap, + width: galleryItemWidth, + }, + media: { + width: galleryItemWidth, + }, + }; + }, [galleryItemGap, galleryItemWidth]); + + const renderItem = React.useCallback( + ({ item }) => { + return ( + + + + + + ); + }, + [ + memoizedStyles.media, + memoizedStyles.mediaContainer, + styles.media, + styles.mediaContainer, + ], + ); + + return ; +} + +const unboundStyles = { + container: { + flexDirection: 'row', + flexWrap: 'wrap', + justifyContent: 'flex-start', + marginBottom: 20, + }, + mediaContainer: { + height: 180, + justifyContent: 'center', + alignItems: 'center', + }, + media: { + height: 180, + }, +}; + +export default ThreadSettingsMediaGallery;