Undefined token, or token is null at api.js, none of the console.logs are triggered. so unsure how to troubleshoot at this point. chatGPT no help.
api.js
import { fetchBaseQuery, createApi } from "@reduxjs/toolkit/query/react";
export const api = createApi({
reducerPath: "api",
baseQuery: fetchBaseQuery({
// baseUrl: "https://capstonebackend-0wah.onrender.com/",
baseUrl: "http://localhost:3000",
tagTypes: ["User"],
prepareHeaders: (headers, { getState }) => {
const token = getState().register.token || getState().login.token;
const sessionToken = window.sessionStorage.getItem("Token", token);
if (token || sessionToken) {
headers.set("authorization", `Bearer ${token || sessionToken}`);
}
},
}),
endpoints: () => ({}),
});
registerSlice.js
import { createSlice } from "@reduxjs/toolkit";
import { api } from "../../app/api";
const registerApi = api.injectEndpoints({
endpoints: (builder) => ({
register: builder.mutation({
query: (credentials) => ({
url: "/register",
method: "POST",
body: credentials,
responseHandler: (response) => response.text(),
}),
invalidateTags: ["User"],
}),
}),
});
const registerSlice = createSlice({
name: "register",
initialState: {
user: {},
token: null,
},
reducers: {
setUser: (state, action) => {
console.log("Setting user in login:", action.payload);
state.user = action.payload;
},
},
extraReducers: (builder) => {
builder.addMatcher(
registerApi.endpoints.register.matchFulfilled,
(state, { payload }) => {
console.log(payload);
const temp = JSON.parse(payload);
console.log(temp);
state.token = temp.token;
// state.user = temp;
// state.id = temp.id;
// window.sessionStorage.setItem("Token", temp.token);
// window.sessionStorage.setItem("User", temp.id);
}
);
},
});
export default registerSlice.reducer;
export const { useRegisterMutation } = registerApi;
export const { setUser } = registerSlice.actions;
Whenever I submit a registerUser request through the frontend it is getting token undefined. I put breakpoints in and found it is undefined in the api.js. It doesn’t seem like it is even triggering the registerSlice. Tested the backend in Postman and it can register a user and get a token just fine. How can I fix this to get the token to be passed correctly?