import { isObj } from 'exotic'
import { ProductProps } from './typings'
import { oneStorage } from '@skava/persistence'
let reOrderedProducts: Array<string> = []
const isValidProduct = (item: ProductProps) => {
reOrderedProducts.push(item.id)
return isObj(item) && item.id
}
const reArrangeProducts = (
collisionProductId: string,
currentDragId: string,
products: Array<ProductProps>
) => {
const temporaryProducts: Array<ProductProps> = []
const findDrag = (item: ProductProps) => item.id === currentDragId
if (collisionProductId !== currentDragId && collisionProductId !== 'none') {
products.forEach(
(item: ProductProps, index: number, array: Array<ProductProps>) => {
if (collisionProductId === item.id) {
const draggedItem: ProductProps = array.find(findDrag) || {}
const dragItemIndex: number = array.findIndex(findDrag)
if (index < dragItemIndex) {
temporaryProducts.push(draggedItem)
temporaryProducts.push(item)
} else {
temporaryProducts.push(item)
temporaryProducts.push(draggedItem)
}
} else if (currentDragId !== item.id) {
temporaryProducts.push(item)
}
}
)
reOrderedProducts = []
const reArrangedProducts = temporaryProducts.filter(isValidProduct)
oneStorage.set('productPosition', reOrderedProducts)
return reArrangedProducts
}
return products
}
export { reArrangeProducts }