From ba1c4834ab23726c065aff31ef09e3578210ff01 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Fri, 19 Apr 2024 03:42:26 +0100 Subject: Add GIF select to composer (#3600) * create dialog with flatlist in it * use alf for composer photos/camera/gif buttons * add gif icons * focus textinput on gif dialog close * add giphy API + gif grid * web support * add consent confirmation * track gif select * desktop web consent styles * use InlineLinkText instead of Link * add error/loading state * hide sideborders on web * disable composer buttons where necessary * skip cardyb and set thumbnail directly * switch legacy analytics to statsig * remove autoplay prop * disable photo/gif buttons if external media is present * memoize listmaybeplaceholder * fix pagination * don't set `value` of TextInput, clear via ref * remove console.log * close modal if press escape * pass alt text in the description * Fix typo * Rm dialog --------- Co-authored-by: Dan Abramov --- src/components/Dialog/index.tsx | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'src/components/Dialog/index.tsx') diff --git a/src/components/Dialog/index.tsx b/src/components/Dialog/index.tsx index 55798db7f..859e4965c 100644 --- a/src/components/Dialog/index.tsx +++ b/src/components/Dialog/index.tsx @@ -4,6 +4,8 @@ import Animated, {useAnimatedStyle} from 'react-native-reanimated' import {useSafeAreaInsets} from 'react-native-safe-area-context' import BottomSheet, { BottomSheetBackdropProps, + BottomSheetFlatList, + BottomSheetFlatListMethods, BottomSheetScrollView, BottomSheetScrollViewMethods, BottomSheetTextInput, @@ -11,10 +13,10 @@ import BottomSheet, { useBottomSheet, WINDOW_HEIGHT, } from '@discord/bottom-sheet/src' +import {BottomSheetFlatListProps} from '@discord/bottom-sheet/src/components/bottomSheetScrollable/types' import {logger} from '#/logger' import {useDialogStateControlContext} from '#/state/dialogs' -import {isNative} from 'platform/detection' import {atoms as a, flatten, useTheme} from '#/alf' import {Context} from '#/components/Dialog/context' import { @@ -238,7 +240,7 @@ export const ScrollableInner = React.forwardRef< }, flatten(style), ]} - contentContainerStyle={isNative ? a.pb_4xl : undefined} + contentContainerStyle={a.pb_4xl} ref={ref}> {children} @@ -246,6 +248,34 @@ export const ScrollableInner = React.forwardRef< ) }) +export const InnerFlatList = React.forwardRef< + BottomSheetFlatListMethods, + BottomSheetFlatListProps +>(function InnerFlatList({style, contentContainerStyle, ...props}, ref) { + const insets = useSafeAreaInsets() + return ( + + } + ref={ref} + {...props} + style={[ + a.flex_1, + a.p_xl, + a.pt_0, + a.h_full, + { + marginTop: 40, + }, + flatten(style), + ]} + /> + ) +}) + export function Handle() { const t = useTheme() -- cgit 1.4.1