From fad3167f42d585e3144547db4c6dd7d00ea7b18a Mon Sep 17 00:00:00 2001 From: sai-neetha Date: Fri, 7 Jul 2023 18:11:09 +0200 Subject: Update ODLUX node version yarn version update Issue-ID: CCSDK-3923 Signed-off-by: sai-neetha Change-Id: Ibd3d6a6f45a14be4f1d175cf6fc5c8738aa11dea --- .../odlux/framework/src/actions/authentication.ts | 78 ++++++++++++---------- .../odlux/framework/src/actions/settingsAction.ts | 8 +-- 2 files changed, 48 insertions(+), 38 deletions(-) (limited to 'sdnr/wt/odlux/framework/src/actions') diff --git a/sdnr/wt/odlux/framework/src/actions/authentication.ts b/sdnr/wt/odlux/framework/src/actions/authentication.ts index f1d11de37..141249530 100644 --- a/sdnr/wt/odlux/framework/src/actions/authentication.ts +++ b/sdnr/wt/odlux/framework/src/actions/authentication.ts @@ -18,80 +18,90 @@ import { Dispatch } from '../flux/store'; import { Action } from '../flux/action'; import { AuthPolicy, User } from '../models/authentication'; -import { GeneralSettings, Settings } from '../models/settings'; -import { saveInitialSettings, SetGeneralSettingsAction, setGeneralSettingsAction } from './settingsAction'; +import { Settings } from '../models/settings'; +import { saveInitialSettings, SetGeneralSettingsAction } from './settingsAction'; import { endWebsocketSession } from '../services/notificationService'; import { endUserSession, startUserSession } from '../services/userSessionService'; import { IApplicationStoreState } from '../store/applicationStore'; export class UpdateUser extends Action { - constructor (public user?: User) { + constructor(public user?: User) { super(); } } export class UpdatePolicies extends Action { - constructor (public authPolicies?: AuthPolicy[]) { + constructor(public authPolicies?: AuthPolicy[]) { super(); } } - -export const loginUserAction = (user?: User) => (dispatcher: Dispatch) =>{ - - dispatcher(new UpdateUser(user)); - if(user){ - startUserSession(user); - loadUserSettings(user, dispatcher); - localStorage.setItem("userToken", user.toString()); - } -} - export const logoutUser = () => (dispatcher: Dispatch, getState: () => IApplicationStoreState) =>{ - const {framework:{applicationState:{ authentication }, authenticationState: {user}}} = getState(); + const { framework:{ applicationState:{ authentication }, authenticationState: { user } } } = getState(); dispatcher(new UpdateUser(undefined)); dispatcher(new SetGeneralSettingsAction(null)); endWebsocketSession(); endUserSession(); - localStorage.removeItem("userToken"); + localStorage.removeItem('userToken'); //only call if a user is currently logged in - if (authentication === "oauth" && user) { + if (authentication === 'oauth' && user) { const url = window.location.origin; - window.location.href=`${url}/oauth/logout`; + window.location.href = `${url}/oauth/logout`; } -} - -const loadUserSettings = (user: User | undefined, dispatcher: Dispatch) =>{ +}; +/** + * Loads the user settings for the given user and dispatches a `saveInitialSettings` action with the result. + * @param user The user for which to load the settings. + * @param dispatcher The dispatcher function to use for dispatching the `saveInitialSettings` action. + */ +const loadUserSettings = (user: User | undefined, dispatcher: Dispatch) => { - //fetch used, because state change for user login is not done when frameworks restRequest call is started (and is accordingly undefined -> /userdata call yields 401, unauthorized) and triggering an action from inside the handler / login event is impossible - //no timeout used, because it's bad practise to add a timeout to hopefully avoid a race condition - //hence, fetch used to simply use supplied user data for getting settings + // fetch used, because state change for user login is not done when frameworks restRequest call is started (and is accordingly undefined -> /userdata call yields 401, unauthorized) and triggering an action from inside the handler / login event is impossible + // no timeout used, because it's bad practice to add a timeout to hopefully avoid a race condition + // hence, fetch used to simply use supplied user data for getting settings - if(user && user.isValid){ + if (user && user.isValid) { - fetch("/userdata", { + fetch('/userdata', { method: 'GET', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', - 'Authorization': `${user.tokenType} ${user.token}` - } + 'Authorization': `${user.tokenType} ${user.token}`, + }, }).then((res: Response)=>{ - if(res.status==200){ + if (res.status == 200) { return res.json(); - }else{ + } else { return null; } }).then((result:Settings)=>{ - dispatcher(saveInitialSettings(result)); - }) + dispatcher(saveInitialSettings(result)); + }); } -} \ No newline at end of file +}; + +/** + * Dispatches an `UpdateUser` action with the given user and starts a user session if the user is defined. + * Also loads the user settings for the given user and dispatches a `saveInitialSettings` action with the result. + * Finally, saves the user token to local storage. + * @param user The user to be logged in. + * @param dispatcher The dispatcher function to use for dispatching the actions. + */ +export const loginUserAction = (user?: User) => (dispatcher: Dispatch) =>{ + + dispatcher(new UpdateUser(user)); + if (user) { + startUserSession(user); + loadUserSettings(user, dispatcher); + localStorage.setItem('userToken', user.toString()); + } +}; \ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/actions/settingsAction.ts b/sdnr/wt/odlux/framework/src/actions/settingsAction.ts index 092b31814..fa45f239c 100644 --- a/sdnr/wt/odlux/framework/src/actions/settingsAction.ts +++ b/sdnr/wt/odlux/framework/src/actions/settingsAction.ts @@ -19,7 +19,7 @@ import { Dispatch } from "../flux/store"; import { Action } from "../flux/action"; import { GeneralSettings, Settings, TableSettings, TableSettingsColumn } from "../models/settings"; -import { getUserdata, saveUserdata } from "../services/userdataService"; +import { getUserData, saveUserData } from "../services/userdataService"; import { startWebsocketSession, suspendWebsocketSession } from "../services/notificationService"; import { IApplicationStoreState } from "../store/applicationStore"; @@ -67,7 +67,7 @@ export const setGeneralSettingsAction = (value: boolean) => (dispatcher: Dispatc export const updateGeneralSettingsAction = (activateNotifications: boolean) => async (dispatcher: Dispatch) => { const value: GeneralSettings = { general: { areNotificationsEnabled: activateNotifications } }; - const result = await saveUserdata("/general", JSON.stringify(value.general)); + const result = await saveUserData("/general", JSON.stringify(value.general)); dispatcher(setGeneralSettingsAction(activateNotifications)); } @@ -86,14 +86,14 @@ export const updateTableSettings = (tableName: string, columns: TableSettingsCol // would only save latest entry //const json = JSON.stringify({ [tableName]: { columns: columns } }); - const result = await saveUserdata("/tables", json); + const result = await saveUserData("/tables", json); dispatcher(new SetTableSettings(tableName, columns)); } export const getGeneralSettingsAction = () => async (dispatcher: Dispatch) => { - const result = await getUserdata(); + const result = await getUserData(); if (result && result.general) { dispatcher(new SetGeneralSettingsAction(result.general.areNotificationsEnabled!)) -- cgit 1.2.3-korg