diff --git a/npm/ng-packs/packages/core/src/lib/states/config.state.ts b/npm/ng-packs/packages/core/src/lib/states/config.state.ts index 713eb336e1..1134c85bce 100644 --- a/npm/ng-packs/packages/core/src/lib/states/config.state.ts +++ b/npm/ng-packs/packages/core/src/lib/states/config.state.ts @@ -10,6 +10,9 @@ import { SetLanguage } from '../actions/session.actions'; import { ApplicationConfiguration } from '../models/application-configuration'; import { Config } from '../models/config'; import { SessionState } from './session.state'; +import compare from 'just-compare'; +import clone from 'just-clone'; +import { OAuthService } from 'angular-oauth2-oidc'; @State({ name: 'ConfigState', @@ -29,7 +32,7 @@ export class ConfigState { static getOne(key: string) { const selector = createSelector([ConfigState], (state: Config.State) => { - return state[key]; + return clone(state[key]); }); return selector; @@ -194,7 +197,7 @@ export class ConfigState { return selector; } - constructor(private http: HttpClient, private store: Store) {} + constructor(private http: HttpClient, private store: Store, private oAuthService: OAuthService) {} @Action(GetAppConfiguration) addData({ patchState, dispatch }: StateContext) { @@ -232,7 +235,16 @@ export class ConfigState { } @Action(SetEnvironment) - setEnvironment({ patchState }: StateContext, { environment }: SetEnvironment) { + setEnvironment( + { getState, patchState }: StateContext, + { environment }: SetEnvironment, + ) { + const { oAuthConfig } = getState().environment; + + if (!compare(oAuthConfig, environment.oAuthConfig)) { + this.oAuthService.configure(environment.oAuthConfig); + } + return patchState({ environment, });