fix(会员报价): 平台资料面板报价请求增加序号守卫
- usePlatformProfileCenterController.ts:requestMembershipQuote 增加 membershipQuoteRequestRef 令牌,过期响应不再覆盖新报价或提前结束 loading Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
@@ -443,6 +443,7 @@ export function usePlatformProfileCenterController({
|
||||
const confirmingWechatRechargeOrderRef =
|
||||
useRef<WechatRechargeOrderLifecycle | null>(null);
|
||||
const rechargeSubmissionRef = useRef<symbol | null>(null);
|
||||
const membershipQuoteRequestRef = useRef<symbol | null>(null);
|
||||
const accountWriteAbortControllerRef = useRef(new AbortController());
|
||||
const rechargeCenterReadRevisionRef = useRef(0);
|
||||
const accountLifecycleRevisionRef = useRef(0);
|
||||
@@ -1356,6 +1357,11 @@ export function usePlatformProfileCenterController({
|
||||
) {
|
||||
return;
|
||||
}
|
||||
const requestToken = Symbol('profile-membership-quote');
|
||||
membershipQuoteRequestRef.current = requestToken;
|
||||
const isLatestQuoteRequest = () =>
|
||||
isAccountLifecycleCurrent(account) &&
|
||||
membershipQuoteRequestRef.current === requestToken;
|
||||
setMembershipQuote(null);
|
||||
setMembershipQuoteError(null);
|
||||
setIsLoadingMembershipQuote(true);
|
||||
@@ -1363,13 +1369,13 @@ export function usePlatformProfileCenterController({
|
||||
signal: requestSignal,
|
||||
})
|
||||
.then((quote) => {
|
||||
if (!isAccountLifecycleCurrent(account)) {
|
||||
if (!isLatestQuoteRequest()) {
|
||||
return;
|
||||
}
|
||||
setMembershipQuote(quote);
|
||||
})
|
||||
.catch((error: unknown) => {
|
||||
if (!isAccountLifecycleCurrent(account)) {
|
||||
if (!isLatestQuoteRequest()) {
|
||||
return;
|
||||
}
|
||||
setMembershipQuoteError(
|
||||
@@ -1377,7 +1383,7 @@ export function usePlatformProfileCenterController({
|
||||
);
|
||||
})
|
||||
.finally(() => {
|
||||
if (isAccountLifecycleCurrent(account)) {
|
||||
if (isLatestQuoteRequest()) {
|
||||
setIsLoadingMembershipQuote(false);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user