[#32] changed how userinfo is filled

This commit is contained in:
Camille Moussu
2025-08-20 10:14:47 +02:00
committed by Benoit TELLIER
parent 290c7f301b
commit b9d2a16984
4 changed files with 23 additions and 13 deletions
@@ -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);
+2 -2
View File
@@ -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");
+1 -1
View File
@@ -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;
}
+17 -7
View File
@@ -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<string>(
"user/getOpenPaasUserId",
export const getOpenPaasUserDataAsync = createAsyncThunk<any>(
"user/getOpenPaasUserData",
async () => {
const user = (await getOpenPaasUserId()) as Record<string, string>;
const user = (await getOpenPaasUser()) as Record<string, string>;
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;
}
});
},
});