feat: login
This commit is contained in:
@ -9,9 +9,13 @@ import AnchorCard from '@/components/anchor-card';
|
||||
import ListPlaceholder from '@/components/list-placeholder';
|
||||
import { EventName } from '@/constants/app';
|
||||
import { AnchorSortType } from '@/constants/material';
|
||||
import useUserInfo from '@/hooks/use-user-info';
|
||||
import { AnchorInfo, GetAnchorListRequest, IAnchorFilters } from '@/types/material';
|
||||
import { logWithPrefix } from '@/utils/common';
|
||||
import { requestAnchorList as requestData } from '@/utils/material';
|
||||
import { getAgreementSigned, isNeedPhone, setAgreementSigned } from '@/utils/user';
|
||||
|
||||
import { AgreementPopup } from '../agreement-popup';
|
||||
|
||||
import './index.less';
|
||||
|
||||
@ -55,6 +59,10 @@ function AnchorList(props: IAnchorListProps) {
|
||||
const requestProps = useRef<IRequestProps>({});
|
||||
const prevRequestProps = useRef<IRequestProps>({});
|
||||
const onListEmptyRef = useRef(onListEmpty);
|
||||
const [open, setOpen] = useState(false);
|
||||
const successCallback = useRef<() => void>(() => {});
|
||||
const userInfo = useUserInfo();
|
||||
const needPhone = isNeedPhone(userInfo);
|
||||
|
||||
const handleRefresh = useCallback(async () => {
|
||||
log('start pull refresh');
|
||||
@ -120,6 +128,27 @@ function AnchorList(props: IAnchorListProps) {
|
||||
[dataList]
|
||||
);
|
||||
|
||||
const handleCancel = useCallback(() => {
|
||||
setOpen(false);
|
||||
setAgreementSigned(false);
|
||||
}, []);
|
||||
|
||||
const handleConfirm = useCallback(() => {
|
||||
setOpen(false);
|
||||
setAgreementSigned(true);
|
||||
//TODO 没手机号要授权一下; 必须要开弹窗才可以,与需求不符
|
||||
successCallback.current();
|
||||
}, []);
|
||||
|
||||
const validator = (onSuccess: () => void) => {
|
||||
if (getAgreementSigned()) {
|
||||
onSuccess();
|
||||
} else {
|
||||
successCallback.current = onSuccess;
|
||||
setOpen(true);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
onListEmptyRef.current = onListEmpty;
|
||||
}, [onListEmpty]);
|
||||
@ -183,26 +212,29 @@ function AnchorList(props: IAnchorListProps) {
|
||||
}, [jobId, ready, filters, cityCode, sortType]);
|
||||
|
||||
return (
|
||||
<PullRefresh
|
||||
className={classNames(`${PREFIX}__pull-refresh`, className)}
|
||||
loading={refreshing}
|
||||
onRefresh={handleRefresh}
|
||||
disabled={refreshDisabled || !ready}
|
||||
>
|
||||
<List
|
||||
hasMore={hasMore}
|
||||
onLoad={handleLoadMore}
|
||||
loading={loadingMore || refreshing}
|
||||
disabled={loadMoreError || !ready}
|
||||
fixedHeight={typeof listHeight !== 'undefined'}
|
||||
style={listHeight ? { height: `${listHeight}px` } : undefined}
|
||||
<>
|
||||
<PullRefresh
|
||||
className={classNames(`${PREFIX}__pull-refresh`, className)}
|
||||
loading={refreshing}
|
||||
onRefresh={handleRefresh}
|
||||
disabled={refreshDisabled || !ready}
|
||||
>
|
||||
{dataList.map(item => (
|
||||
<AnchorCard data={item} jobId={jobId} key={item.id} />
|
||||
))}
|
||||
<ListPlaceholder hasMore={hasMore} loadingMore={loadingMore} loadMoreError={loadMoreError} />
|
||||
</List>
|
||||
</PullRefresh>
|
||||
<List
|
||||
hasMore={hasMore}
|
||||
onLoad={handleLoadMore}
|
||||
loading={loadingMore || refreshing}
|
||||
disabled={loadMoreError || !ready}
|
||||
fixedHeight={typeof listHeight !== 'undefined'}
|
||||
style={listHeight ? { height: `${listHeight}px` } : undefined}
|
||||
>
|
||||
{dataList.map(item => (
|
||||
<AnchorCard data={item} jobId={jobId} key={item.id} validator={validator} />
|
||||
))}
|
||||
<ListPlaceholder hasMore={hasMore} loadingMore={loadingMore} loadMoreError={loadMoreError} />
|
||||
</List>
|
||||
</PullRefresh>
|
||||
<AgreementPopup open={open} onCancel={handleCancel} onConfirm={handleConfirm} needPhone={needPhone} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user