feat: 分享的文案 + 点击头像看模卡 + 提现文案 + 协议弹窗 + 进群限制

This commit is contained in:
chashaobao
2025-06-17 00:03:58 +08:00
parent 828497fcd6
commit 0ec366cc2e
14 changed files with 140 additions and 100 deletions

View File

@ -7,13 +7,14 @@ import { useCallback, useEffect, useRef, useState } from 'react';
import AnchorCard from '@/components/anchor-card';
import ListPlaceholder from '@/components/list-placeholder';
import LoginDialog from '@/components/login-dialog';
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 { getAgreementSigned, isNeedLogin, setAgreementSigned } from '@/utils/user';
import { AgreementPopup } from '../agreement-popup';
@ -59,10 +60,11 @@ function AnchorList(props: IAnchorListProps) {
const requestProps = useRef<IRequestProps>({});
const prevRequestProps = useRef<IRequestProps>({});
const onListEmptyRef = useRef(onListEmpty);
const [open, setOpen] = useState(false);
const [openLogin, setLoginOpen] = useState(false);
const [openAssignment, setAssignmentOpen] = useState(false);
const successCallback = useRef<() => void>(() => {});
const userInfo = useUserInfo();
const needPhone = isNeedPhone(userInfo);
const needLogin = isNeedLogin(userInfo);
const handleRefresh = useCallback(async () => {
log('start pull refresh');
@ -129,23 +131,33 @@ function AnchorList(props: IAnchorListProps) {
);
const handleCancel = useCallback(() => {
setOpen(false);
setAssignmentOpen(false);
setAgreementSigned(false);
}, []);
const handleConfirm = useCallback(() => {
setOpen(false);
setAssignmentOpen(false);
setAgreementSigned(true);
//TODO 没手机号要授权一下; 必须要开弹窗才可以,与需求不符
successCallback.current();
}, []);
const handleLoginSuccess = useCallback(() => {
setLoginOpen(false);
successCallback.current();
}, []);
const handleLoginCancel = useCallback(() => {
setLoginOpen(false);
}, []);
const validator = (onSuccess: () => void) => {
if (getAgreementSigned()) {
onSuccess();
successCallback.current = onSuccess;
if (!getAgreementSigned()) {
setAssignmentOpen(true);
} else if (needLogin) {
setLoginOpen(true);
} else {
successCallback.current = onSuccess;
setOpen(true);
onSuccess();
}
};
@ -233,7 +245,13 @@ function AnchorList(props: IAnchorListProps) {
<ListPlaceholder hasMore={hasMore} loadingMore={loadingMore} loadMoreError={loadMoreError} />
</List>
</PullRefresh>
<AgreementPopup open={open} onCancel={handleCancel} onConfirm={handleConfirm} needPhone={needPhone} />
<AgreementPopup
open={openAssignment}
onCancel={handleCancel}
onConfirm={handleConfirm}
needBindPhone={needLogin}
/>
{openLogin && <LoginDialog onCancel={handleLoginCancel} onSuccess={handleLoginSuccess} />}
</>
);
}