home-page pulltorefresh
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
||||
useSetHeaderType,
|
||||
useSetFooterMode,
|
||||
useSetFooterCurrentPage,
|
||||
useSetIsPullToRefreshEnabled,
|
||||
} from '@/widgets/sub-layout/use-sub-layout';
|
||||
import { useStore } from '@/shared/model/store';
|
||||
import { useHomeBannerListMutation } from '@/entities/home/api/use-home-banner-list-mutation';
|
||||
@@ -30,6 +31,7 @@ export const HomePage = () => {
|
||||
const { openBiometricRegistrationPopup, checkAlarmLink } = useAppBridge();
|
||||
const { mutateAsync: homeBannerList } = useHomeBannerListMutation();
|
||||
|
||||
useSetIsPullToRefreshEnabled(true);
|
||||
useSetHeaderTitle('');
|
||||
useSetHeaderType(HeaderType.Home);
|
||||
useSetFooterMode(true);
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
import { Outlet } from 'react-router-dom';
|
||||
import { HeaderNavigation } from '@/widgets/navigation/header';
|
||||
import { FooterNavigation } from '@/widgets/navigation/footer';
|
||||
import { PullToRefresh } from '@/widgets/pull-to-refresh/pull-to-refresh';
|
||||
import {
|
||||
CodeListItem,
|
||||
CodesSelectParams,
|
||||
@@ -36,6 +37,7 @@ import { useCodesSelectMutation } from '@/entities/common/api/use-codes-select-m
|
||||
import { MenuItems } from '@/entities/common/model/constant';
|
||||
import { AlarmLinkOptions } from '@/entities/alarm/model/types';
|
||||
import { AlarmRoutes } from '@/entities/alarm/ui/alarm-routes';
|
||||
import { useNavigate } from '@/shared/lib/hooks';
|
||||
|
||||
export interface ContextType {
|
||||
setOnBack: (onBack: () => void) => void;
|
||||
@@ -65,6 +67,9 @@ export const SubLayout = () => {
|
||||
updateUserData
|
||||
} = useUserInfo();
|
||||
|
||||
const { reload } = useNavigate();
|
||||
|
||||
const [isPullToRefreshEnabled, setIsPullToRefreshEnabled] = useState(false);
|
||||
const [onBack, setOnBack] = useState(undefined);
|
||||
const [onRightClick, setOnRightClick] = useState(undefined);
|
||||
const [headerTitle, setHeaderTitle] = useState<string>('');
|
||||
@@ -405,47 +410,50 @@ export const SubLayout = () => {
|
||||
}, [mid]);
|
||||
|
||||
return (
|
||||
<div className={ wrapperClassName }>
|
||||
<div
|
||||
className="header-empty-block"
|
||||
style={{ width: '100%', height: '50px' }}
|
||||
></div>
|
||||
<Fragment>
|
||||
<HeaderNavigation
|
||||
onBack={ onBack }
|
||||
onRightClick={ onRightClick }
|
||||
headerTitle={ headerTitle }
|
||||
headerType={ headerType }
|
||||
key={ headerNavigationKey }
|
||||
loginSuccess={ loginSuccess }
|
||||
mid={ mid }
|
||||
setMid={ setMid }
|
||||
/>
|
||||
{ loginSuccess &&
|
||||
<Outlet
|
||||
context={{
|
||||
setOnBack,
|
||||
setOnRightClick,
|
||||
setHeaderTitle,
|
||||
setHeaderType,
|
||||
setFooterMode,
|
||||
setFooterCurrentPage,
|
||||
}}
|
||||
<PullToRefresh onRefresh={reload} isPullable={isPullToRefreshEnabled}>
|
||||
<div className={ wrapperClassName }>
|
||||
<div
|
||||
className="header-empty-block"
|
||||
style={{ width: '100%', height: '50px' }}
|
||||
></div>
|
||||
<Fragment>
|
||||
<HeaderNavigation
|
||||
onBack={ onBack }
|
||||
onRightClick={ onRightClick }
|
||||
headerTitle={ headerTitle }
|
||||
headerType={ headerType }
|
||||
key={ headerNavigationKey }
|
||||
loginSuccess={ loginSuccess }
|
||||
mid={ mid }
|
||||
setMid={ setMid }
|
||||
/>
|
||||
}
|
||||
{
|
||||
footerMode &&
|
||||
<FooterNavigation
|
||||
footerCurrentPage={ footerCurrentPage }
|
||||
></FooterNavigation>
|
||||
}
|
||||
{ alarmRoutesOn &&
|
||||
<AlarmRoutes
|
||||
options={ alarmOptions }
|
||||
></AlarmRoutes>
|
||||
}
|
||||
|
||||
</Fragment>
|
||||
</div>
|
||||
{ loginSuccess &&
|
||||
<Outlet
|
||||
context={{
|
||||
setOnBack,
|
||||
setOnRightClick,
|
||||
setHeaderTitle,
|
||||
setHeaderType,
|
||||
setFooterMode,
|
||||
setFooterCurrentPage,
|
||||
setIsPullToRefreshEnabled,
|
||||
}}
|
||||
/>
|
||||
}
|
||||
{
|
||||
footerMode &&
|
||||
<FooterNavigation
|
||||
footerCurrentPage={ footerCurrentPage }
|
||||
></FooterNavigation>
|
||||
}
|
||||
{ alarmRoutesOn &&
|
||||
<AlarmRoutes
|
||||
options={ alarmOptions }
|
||||
></AlarmRoutes>
|
||||
}
|
||||
|
||||
</Fragment>
|
||||
</div>
|
||||
</PullToRefresh>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -64,4 +64,13 @@ export const useSetFooterCurrentPage = (footerCurrentPage?: FooterItemActiveKey
|
||||
return () => setFooterCurrentPage(undefined);
|
||||
}, [footerCurrentPage, setFooterCurrentPage]);
|
||||
return { setFooterCurrentPage };
|
||||
};
|
||||
|
||||
export const useSetIsPullToRefreshEnabled = (enabled: boolean) => {
|
||||
const { setIsPullToRefreshEnabled } = useSubLayoutContext();
|
||||
useEffect(() => {
|
||||
setIsPullToRefreshEnabled(enabled);
|
||||
return () => setIsPullToRefreshEnabled(false);
|
||||
}, [setIsPullToRefreshEnabled, enabled]);
|
||||
return { setIsPullToRefreshEnabled };
|
||||
};
|
||||
Reference in New Issue
Block a user