diff --git a/__test__/features/user/LoginCallback.test.tsx b/__test__/features/user/LoginCallback.test.tsx index dc03452..7ab4c79 100644 --- a/__test__/features/user/LoginCallback.test.tsx +++ b/__test__/features/user/LoginCallback.test.tsx @@ -8,7 +8,7 @@ import { push } from "redux-first-history"; import { setTokens, setUserData, - getOpenPaasUserIdAsync, + getOpenPaasUserDataAsync, } from "../../../src/features/User/userSlice"; import { getCalendarsListAsync } from "../../../src/features/Calendars/CalendarSlice"; import { renderWithProviders } from "../../utils/Renderwithproviders"; @@ -26,7 +26,7 @@ jest.mock("../../../src/features/User/oidcAuth", () => ({ jest.mock("../../../src/features/User/userSlice", () => ({ setUserData: jest.fn((data) => ({ type: "SET_USER", payload: data })), setTokens: jest.fn((tokens) => ({ type: "SET_TOKENS", payload: tokens })), - getOpenPaasUserIdAsync: jest.fn(() => ({ type: "GET_USER_ID" })), + getOpenPaasUserDataAsync: jest.fn(() => ({ type: "GET_USER_ID" })), })); jest.mock("../../../src/features/Calendars/CalendarSlice", () => ({ @@ -63,7 +63,7 @@ describe("CallbackResume", () => { expect(oidcAuth.Callback).toHaveBeenCalledWith("verifier123", "state456"); expect(dispatch).toHaveBeenCalledWith(setUserData(mockUserInfo)); expect(dispatch).toHaveBeenCalledWith(setTokens(mockTokenSet)); - expect(dispatch).toHaveBeenCalledWith(getOpenPaasUserIdAsync()); + expect(dispatch).toHaveBeenCalledWith(getOpenPaasUserDataAsync()); expect(dispatch).toHaveBeenCalledWith(getCalendarsListAsync()); expect(dispatch).toHaveBeenCalledWith(push("/")); expect(sessionStorage.getItem("redirectState")).toBe(null); diff --git a/src/features/User/LoginCallback.tsx b/src/features/User/LoginCallback.tsx index 84b8bbf..1eb6392 100644 --- a/src/features/User/LoginCallback.tsx +++ b/src/features/User/LoginCallback.tsx @@ -2,7 +2,7 @@ import { useEffect, useRef } from "react"; import { Callback } from "./oidcAuth"; import { useAppDispatch, useAppSelector } from "../../app/hooks"; import { push } from "redux-first-history"; -import { getOpenPaasUserIdAsync, setTokens, setUserData } from "./userSlice"; +import { getOpenPaasUserDataAsync, setTokens, setUserData } from "./userSlice"; import { Loading } from "../../components/Loading/Loading"; import { getCalendarsListAsync } from "../Calendars/CalendarSlice"; @@ -22,7 +22,7 @@ export function CallbackResume() { const data = await Callback(saved?.code_verifier, saved?.state); dispatch(setUserData(data?.userinfo)); dispatch(setTokens(data?.tokenSet)); - dispatch(getOpenPaasUserIdAsync()); + dispatch(getOpenPaasUserDataAsync()); dispatch(getCalendarsListAsync()); sessionStorage.removeItem("redirectState"); diff --git a/src/features/User/userAPI.ts b/src/features/User/userAPI.ts index 7eb3440..a56a0b3 100644 --- a/src/features/User/userAPI.ts +++ b/src/features/User/userAPI.ts @@ -1,6 +1,6 @@ import { api } from "../../utils/apiUtils"; -export default async function getOpenPaasUserId() { +export default async function getOpenPaasUser() { const user = await api.get(`api/user`).json(); return user; } diff --git a/src/features/User/userSlice.ts b/src/features/User/userSlice.ts index f72f82a..4f186bb 100644 --- a/src/features/User/userSlice.ts +++ b/src/features/User/userSlice.ts @@ -1,13 +1,13 @@ import { createAsyncThunk, createSlice } from "@reduxjs/toolkit"; import { userData, userOrganiser } from "./userDataTypes"; -import getOpenPaasUserId from "./userAPI"; +import getOpenPaasUser from "./userAPI"; -export const getOpenPaasUserIdAsync = createAsyncThunk( - "user/getOpenPaasUserId", +export const getOpenPaasUserDataAsync = createAsyncThunk( + "user/getOpenPaasUserData", async () => { - const user = (await getOpenPaasUserId()) as Record; + const user = (await getOpenPaasUser()) as Record; - return user.id; + return user; } ); @@ -32,8 +32,18 @@ export const userSlice = createSlice({ }, }, extraReducers: (builder) => { - builder.addCase(getOpenPaasUserIdAsync.fulfilled, (state, action) => { - state.userData.openpaasId = action.payload; + builder.addCase(getOpenPaasUserDataAsync.fulfilled, (state, action) => { + state.userData.name = action.payload.firstname; + state.userData.family_name = action.payload.lastname; + state.userData.openpaasId = action.payload.id; + if (!state.organiserData) { + state.organiserData = {} as userOrganiser; + } + state.organiserData.cn = `${action.payload.firstname} ${action.payload.lastname}`; + if (action.payload.preferredEmail) { + state.organiserData.cal_address = `mailto:${action.payload.preferredEmail}`; + state.userData.email = action.payload.preferredEmail; + } }); }, });