Spartacus storefront 登录后强制刷新语言,如果初始语言不在新列表中,则重置活动语言

Spartacus storefront 登录后强制刷新语言,如果初始语言不在新列表中,则重置活动语言,spartacus-storefront,Spartacus Storefront,我们有一个自定义的后端语言功能,在用户登录后,后端根据某些权限返回一个较小的语言列表 目前,在Spartacuslanguage.reducer中,如果成功,语言实体将被扩展,因此我无法覆盖语言实体,使其更少 最好的方法是什么?在哪里调度LoadLanguages操作(请求新的语言列表)并保存列表,以及从用户语言列表中设置活动语言?(初始活动语言可能不在新列表中,因此也应更改) 我尝试在登录/注销时调度SiteContextActions.LoadLanguages,但是CmsActions.L

我们有一个自定义的后端语言功能,在用户登录后,后端根据某些权限返回一个较小的语言列表

目前,在Spartacus
language.reducer
中,如果成功,语言实体将被扩展,因此我无法覆盖语言实体,使其更少

最好的方法是什么?在哪里调度
LoadLanguages
操作(请求新的语言列表)并保存列表,以及从用户语言列表中设置活动语言?(初始活动语言可能不在新列表中,因此也应更改)

我尝试在登录/注销时调度
SiteContextActions.LoadLanguages
,但是
CmsActions.LoadCmsPageData
此时已在Spartacus
页面中调度。效果
,请求已处于活动状态

  refreshLanguages$ = createEffect(() =>
    this.actions$.pipe(
      ofType(AuthActions.LOGIN, AuthActions.LOGOUT),
      switchMap(() =>
        this.routingService.getRouterState().pipe(
          filter(
            routerState =>
              routerState &&
              routerState.state &&
              routerState.state.cmsRequired &&
              !routerState.nextState
          ),
          take(1),
          map(routerState => routerState.state.context),
          mergeMap(context => of(
            new SiteContextActions.LoadLanguages(),
          ))
        )
      )
    )
  );