import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import type { UserLoginInfo } from '../../model/user';
import type { FriendRequest } from '../../model/friend';

interface UserState {
  info: UserLoginInfo | null;
  friends: string[]; // 好友的id列表
  friendRequests: FriendRequest[];
}

const initialState: UserState = { info: null, friends: [], friendRequests: [] };

const userSlice = createSlice({
  name: 'user',
  initialState,
  reducers: {
    setUserInfo(state, action: PayloadAction<UserLoginInfo>) {
      state.info = action.payload;
    },
    setFriendList(state, action: PayloadAction<string[]>) {
      state.friends = action.payload;
    },
    setFriendRequests(state, action: PayloadAction<FriendRequest[]>) {
      state.friendRequests = action.payload;
    },
    appendFriend(state, action: PayloadAction<string>) {
      if (state.friends.some((id) => id === action.payload)) {
        return;
      }

      state.friends.push(action.payload);
    },
  },
});

export const userActions = userSlice.actions;
export const userReducer = userSlice.reducer;