redhare-demo/store/slices/user.slice.js

47 lines
1.2 KiB
JavaScript

import { createSlice } from '@reduxjs/toolkit'
import Cookies from 'js-cookie'
const getLastSeen = () => {
if (typeof window !== 'undefined') {
const lastSeenJSON = localStorage.getItem('lastSeen')
if (lastSeenJSON) return JSON.parse(lastSeenJSON)
}
return []
}
const token = Cookies.get('token') || ''
const initialState = { token, lastSeen: getLastSeen() }
const userSlice = createSlice({
name: 'user',
initialState,
reducers: {
userLogout: state => {
Cookies.remove('token')
state.token = ''
},
userLogin: (state, action) => {
Cookies.set('token', action.payload, { expires: 10 })
state.token = action.payload
},
addToLastSeen: (state, action) => {
let isItemExist = state.lastSeen.find(item => item.productID === action.payload.productID)
if (!isItemExist) {
if (state.lastSeen.length === 15) {
state.lastSeen.splice(14, 1)
}
state.lastSeen.unshift(action.payload)
localStorage.setItem('lastSeen', JSON.stringify(state.lastSeen))
}
},
},
})
export const { userLogout, userLogin, addToLastSeen } = userSlice.actions
export default userSlice.reducer