47 lines
1.2 KiB
JavaScript
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
|