From 8580e4a00e8875ae5910f2444f295d0353109e6e Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Wed, 11 Feb 2026 15:22:13 +0000 Subject: [PATCH] absolutely position header, set a headerheight (#9858) --- src/screens/ProfileList/index.tsx | 33 ++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/screens/ProfileList/index.tsx b/src/screens/ProfileList/index.tsx index ef40706cd3..bc802335be 100644 --- a/src/screens/ProfileList/index.tsx +++ b/src/screens/ProfileList/index.tsx @@ -1,4 +1,4 @@ -import {useCallback, useMemo, useRef} from 'react' +import {useCallback, useMemo, useRef, useState} from 'react' import {View} from 'react-native' import {useAnimatedRef} from 'react-native-reanimated' import { @@ -35,12 +35,13 @@ import {PagerWithHeader} from '#/view/com/pager/PagerWithHeader' import {FAB} from '#/view/com/util/fab/FAB' import {type ListRef} from '#/view/com/util/List' import {ListHiddenScreen} from '#/screens/List/ListHiddenScreen' -import {atoms as a, platform} from '#/alf' +import {atoms as a, native, platform, useTheme} from '#/alf' import {useDialogControl} from '#/components/Dialog' import {ListAddRemoveUsersDialog} from '#/components/dialogs/lists/ListAddRemoveUsersDialog' import * as Layout from '#/components/Layout' import {Loader} from '#/components/Loader' import * as Hider from '#/components/moderation/Hider' +import {IS_WEB} from '#/env' import {AboutSection} from './AboutSection' import {ErrorScreen} from './components/ErrorScreen' import {Header} from './components/Header' @@ -149,6 +150,7 @@ function ProfileListScreenLoaded({ moderationOpts: ModerationOpts preferences: UsePreferencesQueryResponse }) { + const t = useTheme() const {_} = useLingui() const queryClient = useQueryClient() const {openComposer} = useOpenComposer() @@ -164,6 +166,8 @@ function ProfileListScreenLoaded({ const scrollElRef = useAnimatedRef() const addUserDialogControl = useDialogControl() const sectionTitlesCurate = [_(msg`Posts`), _(msg`People`)] + // modlist only + const [headerHeight, setHeaderHeight] = useState(null) const moderation = useMemo(() => { return moderateUserList(list, moderationOpts) @@ -263,13 +267,24 @@ function ProfileListScreenLoaded({ - {renderHeader()} - + setHeaderHeight(evt.nativeEvent.layout.height)} + style={[ + native([a.absolute, a.z_10, t.atoms.bg]), + + a.border_b, + t.atoms.border_contrast_low, + ]}> + {renderHeader()} + + {headerHeight !== null && ( + + )} openComposer({logContext: 'Fab'})}