2021-05-05 13:03:24 -03:00

69 lines
1.2 KiB
TypeScript

import { LineItem } from '../types'
const api = {
get: (): LineItem[] => {
if (!process.browser) {
return []
}
const raw = localStorage.getItem('cart')
if (!raw) {
return []
}
return JSON.parse(raw) as LineItem[]
},
set: (items: LineItem[]) => {
localStorage.setItem('cart', JSON.stringify(items))
},
add: (item: LineItem) => {
const items = api.get()
const itemIndex = items.findIndex(
(_item) => _item.productId === item.productId
)
if (itemIndex >= 0) {
items[itemIndex].quantity = (items[itemIndex].quantity || 0) + 1
} else {
items.push(item)
}
api.set(items)
return items
},
remove: (item: LineItem) => {
const items = api.get()
const itemIndex = items.findIndex(
(_item) => _item.productId === item.productId
)
if (itemIndex >= 0) {
items.splice(itemIndex, 1)
}
api.set(items)
return items
},
update: (item: LineItem) => {
const items = api.get()
const itemIndex = items.findIndex(
(_item) => _item.productId === item.productId
)
if (itemIndex >= 0) {
items[itemIndex] = item
} else {
items.push(item)
}
api.set(items)
return items
},
}
export default api