Sha256: d526ff6cdb088e42ad4adcfe4c2c7075c39d184326a912ed3cf4140033ab6491

Contents?: true

Size: 1014 Bytes

Versions: 6

Compression:

Stored size: 1014 Bytes

Contents

import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'
import { usersService } from '@/services/users-service'
import { toast } from 'react-toastify'

const validateCurrentUser = createAsyncThunk(
  'user/current-user',
  async (_, { rejectWithValue }) => {
    try {
      const response = await usersService.currentUser()
      return response
    } catch ({ response }) {
      throw rejectWithValue(response.data)
    }
  }
)

const initialState = {
  isLogged: false
}

export const userSlice = createSlice({
  name: 'user',
  initialState,
  reducers: {},
  extraReducers: (builder) => {
    builder.addCase(validateCurrentUser.fulfilled, (state, action) => {
      state.isLogged = true
    })

    builder.addCase(validateCurrentUser.rejected, (state, action) => {
      state.isLogged = false
      toast.error(action.payload.error)
    })
  }
})

// export const { increment, decrement, incrementByAmount } = userSlice.actions

export {
  validateCurrentUser
}
export default userSlice.reducer

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
flamerb-0.3.0 templates/frontend/store/slices/userSlice.js
flamerb-0.2.3 templates/frontend/store/slices/userSlice.js
flamerb-0.2.0 templates/frontend/store/slices/userSlice.js
flamerb-0.1.3 templates/frontend/store/slices/userSlice.js
flamerb-0.1.2 templates/frontend/store/slices/userSlice.js
flamerb-0.1.1 templates/frontend/store/slices/userSlice.js