Oauth &引用;“无限微调器添加到购物车对话框”;会话超时后+&引用;“空车”;重新登录后(进程计数:-1)
正如在会话超时后Spartacus存储库的开放问题中所述,“添加到购物车对话框”在微调器处于活动状态时保持打开状态 此外,当您再次登录时(会话超时将您重定向到/login页面后),购物车不会按其应有的方式显示(显示一个空购物车)。 我假设这是因为操作Oauth &引用;“无限微调器添加到购物车对话框”;会话超时后+&引用;“空车”;重新登录后(进程计数:-1),oauth,ngrx-effects,spartacus-storefront,Oauth,Ngrx Effects,Spartacus Storefront,正如在会话超时后Spartacus存储库的开放问题中所述,“添加到购物车对话框”在微调器处于活动状态时保持打开状态 此外,当您再次登录时(会话超时将您重定向到/login页面后),购物车不会按其应有的方式显示(显示一个空购物车)。 我假设这是因为操作CART\u ADD\u ENTRY\u FAIL将进程计数减至-1,然后LOAD\u CART操作失败 为了解决这个bug,我制作了一个自定义效果,它可以监听以下操作: CART\u添加\u条目\u失败 CART\u更新\u条目\u失败 CART
CART\u ADD\u ENTRY\u FAIL
将进程计数减至-1,然后LOAD\u CART
操作失败
为了解决这个bug,我制作了一个自定义效果,它可以监听以下操作:
CART\u添加\u条目\u失败
CART\u更新\u条目\u失败
CART\u删除\u条目\u失败
CART\u ADD\u ENTRY\u FAIL
时,我使用方法modalService.closeActiveModal()
关闭“活动模式”。最后,效果返回RESET\u CART\u DETAILS
操作,将值“0”分配给processesCount
该效果还会侦听CART\u UPDATE\u ENTRY\u FAIL
和CART\u REMOVE\u ENTRY\u FAIL
操作,因为它们还扩展了EntityProcessesDecrementAction
,使进程计数在会话超时后为-1
❓: 这是个好办法吗?我应该删除购物车而不是重置购物车详细信息吗
欢迎提出任何建议
自定义效果代码:
import { Actions, Effect, ofType } from '@ngrx/effects';
import { CartActions } from '@spartacus/core';
import { ModalService } from '@spartacus/storefront';
import { map } from 'rxjs/operators';
@Injectable()
export class CustomCartEntryEffects {
@Effect()
resetCartDetailsWhenEntryActionFail$ = this.actions$.pipe(
ofType(
CartActions.CART_ADD_ENTRY_FAIL,
CartActions.CART_UPDATE_ENTRY_FAIL,
CartActions.CART_REMOVE_ENTRY_FAIL
),
map((action: any) => {
if (action.type === CartActions.CART_ADD_ENTRY_FAIL) {
this.modalService.closeActiveModal();
}
return new CartActions.ResetCartDetails();
})
);
constructor(private actions$: Actions, private modalService: ModalService) {}
}