aboutsummaryrefslogtreecommitdiff
path: root/src/store/reducers/userFriendsReducer.ts
blob: 92402db18bf05805eb61f5e030674dbf75d05fbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import {createSlice} from '@reduxjs/toolkit';
import {NO_FRIENDS_DATA} from '../initialStates';

const userFriendsSlice = createSlice({
  name: 'userFriends',
  initialState: NO_FRIENDS_DATA,
  reducers: {
    userFriendsFetched: (state, action) => {
      state.friends = action.payload.friends;
    },

    updateFriends: (state, action) => {
      const {isFriend, data} = action.payload;
      if (!isFriend) {
        const friendInList: boolean = state.friends.some(
          (friend) => friend.username === data.username,
        );
        if (!friendInList) {
          state.friends.push(data);
        }
      } else {
        state.friends = state.friends.filter(
          (friend) => friend.username !== data.username,
        );
      }
    },
  },
});

export const {userFriendsFetched, updateFriends} = userFriendsSlice.actions;
export const userFriendsReducer = userFriendsSlice.reducer;