'use client';
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import { getUserProfile } from './service';
import type { UserProfileState } from './interface';

const initialState: UserProfileState = {
  user: null,
  status: 'loading',
  error: null,
};

export const fetchUserProfile = createAsyncThunk('group/fetchUserProfile', async(id: number) => {
  const user = await getUserProfile(id);
  return user;
});

const userProfileSlice = createSlice({
  name: 'userProfile',
  initialState,
  reducers: {},
  extraReducers: (builder) => {
    builder
      .addCase(fetchUserProfile.pending, (state) => {
        state.status = 'loading';
      })
      .addCase(fetchUserProfile.fulfilled, (state, action) => {
        state.status = 'succeeded';
        state.user = action.payload.data.data;
      })
      .addCase(fetchUserProfile.rejected, (state, action) => {
        state.status = 'failed';
        state.error = action.error.message || null;
      });
  },
});

export default userProfileSlice.reducer;
