|
|
import { PublicAction } from "../actions-type"; |
|
|
import _ from 'lodash'; |
|
|
import location from '../../util/location'; |
|
|
|
|
|
const initialState = { |
|
|
theme : localStorage.getItem('theme') || 'light', |
|
|
homeData: [], |
|
|
newProducts: [], |
|
|
levels: [], |
|
|
loading: false, |
|
|
error: null, |
|
|
searchResult: [], |
|
|
arList: [], |
|
|
blogList: [], |
|
|
blog: null, |
|
|
province: null, |
|
|
city: null, |
|
|
departmans: [ |
|
|
{ |
|
|
id: 0, |
|
|
name: "محتوا", |
|
|
}, |
|
|
{ |
|
|
id: 0, |
|
|
name: "دیزاین", |
|
|
}, |
|
|
{ |
|
|
id: 0, |
|
|
name: "برنامه نویسی", |
|
|
}, |
|
|
], |
|
|
header: [], |
|
|
selectedMenu: null, |
|
|
contactData: null, |
|
|
selectedVideo: null, |
|
|
bookInfo: null, |
|
|
activeCategory: null, |
|
|
categories: null, |
|
|
bookSection: null, |
|
|
}; |
|
|
|
|
|
const grades = [ |
|
|
"پیش دبستان", |
|
|
"اول", |
|
|
"دوم", |
|
|
"سوم", |
|
|
"چهارم", |
|
|
"پنجم", |
|
|
"ششم", |
|
|
"هفتم", |
|
|
"هشتم", |
|
|
"نهم", |
|
|
"دهم", |
|
|
"یازدهم", |
|
|
"دوازدهم", |
|
|
]; |
|
|
export default function publicApi( state = initialState, action: PublicAction) { |
|
|
let { type, data } = action; |
|
|
switch (type) { |
|
|
case "public/setTheme": |
|
|
localStorage.setItem("theme", data); |
|
|
return { ...state, location: false, error : null, theme: data }; |
|
|
case "active/video": |
|
|
return { |
|
|
...state, |
|
|
loading: false, |
|
|
error: null, |
|
|
selectedVideo: data, |
|
|
}; |
|
|
case "active/category": |
|
|
return { |
|
|
...state, |
|
|
loading: false, |
|
|
activeCategory: state.activeCategory === data ? null : data, |
|
|
error: null, |
|
|
}; |
|
|
case "public/vod/bookSection": |
|
|
const videoId: any = location.getId(); |
|
|
return { |
|
|
...state, |
|
|
loading: false, |
|
|
bookSection: data, |
|
|
error: null, |
|
|
selectedVideo: data.vods?.filter((item: any) => item.id !== videoId)[0] |
|
|
}; |
|
|
|
|
|
case "public/vod/bookCourse": |
|
|
let allCats; |
|
|
allCats = Array.from( |
|
|
new Set( |
|
|
data.vods.map((item: any) => item.categoryId && item.categoryId) |
|
|
) |
|
|
); |
|
|
// allCats = _.sortedUniq(allCats); |
|
|
allCats.sort((a : any , b : any) => a - b); |
|
|
return { |
|
|
...state, |
|
|
loading: false, |
|
|
bookInfo: { |
|
|
...data, |
|
|
vods: data.vods.map((item: any) => { |
|
|
return { ...item, active: false }; |
|
|
}), |
|
|
}, |
|
|
error: null, |
|
|
categories: allCats.map((item: any) => |
|
|
data.vods.filter((item1: any) => item1.categoryId === item) |
|
|
), |
|
|
selectedVideo: data.vods.filter((item : any) => item.id !== location.getId())[0], |
|
|
}; |
|
|
case "public/homePage": |
|
|
let itemsLevel; |
|
|
if (window.innerWidth > 1000) { |
|
|
const jadidTarin = data.filter( |
|
|
(item: any) => item.title === "جدیدترین کتابهای دانوین" |
|
|
); |
|
|
itemsLevel = jadidTarin[0].data |
|
|
.map((item: any) => item.book.gradeId * 1) |
|
|
.sort((a: any, b: any) => a - b) |
|
|
.map((e: any) => grades[e]); |
|
|
itemsLevel.unshift("همه"); |
|
|
} |
|
|
|
|
|
return { |
|
|
...state, |
|
|
loading: false, |
|
|
levels: window.innerWidth > 1000 ? Array.from(new Set(itemsLevel)) : [], |
|
|
error: null, |
|
|
homeData: data, |
|
|
}; |
|
|
// case "public/filter": |
|
|
// const realList = |
|
|
// state.newProducts.length === 0 |
|
|
// ? state.homeData.filter( |
|
|
// (item) => item.title === "جدیدترین کتابهای دانوین" |
|
|
// )[0].data |
|
|
// : state.newProducts; |
|
|
// if (state.newProducts.length === 0) { |
|
|
// state = { |
|
|
// ...state, |
|
|
// newProducts: realList, |
|
|
// }; |
|
|
// console.log("here1"); |
|
|
// } |
|
|
// const level = data.levels; |
|
|
// const search = data.search; |
|
|
// if (level.length > 0 || search) { |
|
|
// localStorage.setItem("filter", "ON"); |
|
|
// } else { |
|
|
// return { |
|
|
// ...state, |
|
|
// loading: false, |
|
|
// error: null, |
|
|
// homeData: state.homeData.map((item) => |
|
|
// item.title === "جدیدترین کتابهای دانوین" |
|
|
// ? { ...item, data: state.newProducts } |
|
|
// : { ...item } |
|
|
// ), |
|
|
// newProducts: [], |
|
|
// }; |
|
|
// } |
|
|
// let byLevelFilter = []; |
|
|
// if (level.length > 0) { |
|
|
// level.map((item1) => { |
|
|
// for (let i = 0; i < realList.length; i++) { |
|
|
// if (grades[realList[i].book.gradeId] === item1) { |
|
|
// byLevelFilter.push(realList[i]); |
|
|
// } |
|
|
// } |
|
|
// }); |
|
|
// } else { |
|
|
// byLevelFilter = realList; |
|
|
// } |
|
|
|
|
|
// // let bySubjectFilter = []; |
|
|
// // if (subject.length > 0) { |
|
|
// // subject.map((item1) => { |
|
|
// // for (let i = 0; i < byLevelFilter.length; i++) { |
|
|
// // if (byLevelFilter[i].name === item1) { |
|
|
// // bySubjectFilter.push(byLevelFilter[i]); |
|
|
// // } |
|
|
// // } |
|
|
// // }); |
|
|
// // } else { |
|
|
// // bySubjectFilter = byLevelFilter; |
|
|
// // } |
|
|
|
|
|
// const bySearchFilter = search |
|
|
// ? byLevelFilter.filter((item1) => item1.name.indexOf(search) !== -1) |
|
|
// : byLevelFilter; |
|
|
// // if (sort === "گران ترین") { |
|
|
// // finalSort = bySearchFilter.sort((item1, item2) => { |
|
|
// // return item1.product[0].price - item2.product[0].price; |
|
|
// // }); |
|
|
// // } else { |
|
|
// // finalSort = bySearchFilter; |
|
|
// // } |
|
|
|
|
|
// return { |
|
|
// ...state, |
|
|
// loading: false, |
|
|
// error: null, |
|
|
// homeData: state.homeData.map((item) => |
|
|
// item.title === "جدیدترین کتابهای دانوین" |
|
|
// ? { ...item, data: bySearchFilter } |
|
|
// : { ...item } |
|
|
// ), |
|
|
// }; |
|
|
// case "faq/list": |
|
|
// return { ...state, loading: false, error: null, faqList: data }; |
|
|
// case "public/faq/search": |
|
|
// return { |
|
|
// ...state, |
|
|
// loading: false, |
|
|
// error: null, |
|
|
// searchResult: state.faqList.filter( |
|
|
// (item) => |
|
|
// item.title.indexOf(data) !== -1 || |
|
|
// item.description.indexOf(data) !== -1 |
|
|
// ), |
|
|
// }; |
|
|
case "public/contact": |
|
|
return { ...state, loading: false, error: null, contactData: data }; |
|
|
// case "public/ar": |
|
|
// return { ...state, loading: false, error: null, arList: data }; |
|
|
case "public/blogList": |
|
|
return { ...state, loading: false, error: null, blogList: data }; |
|
|
case "public/blogInfo": |
|
|
return { ...state, loading: false, error: null, blog: data }; |
|
|
case "public/setSubscribe": |
|
|
return { ...state, loading: false, error: null, selectedSubscribe: data }; |
|
|
case "public/province": |
|
|
return { ...state, loading: false, error: null, province: data }; |
|
|
case "public/city": |
|
|
return { ...state, loading: false, error: null, city: data }; |
|
|
case "public/selectMenu": |
|
|
return { ...state, loading: false, error: null, selectedMenu: data }; |
|
|
case "public/VOD/homePage": |
|
|
return { ...state, loading: false, error: null, header: data }; |
|
|
case "loading": |
|
|
return { ...state, loading: true }; |
|
|
case "error": |
|
|
return { ...state, loading: false, error: data.message }; |
|
|
default: |
|
|
return state; |
|
|
} |
|
|
}
|
|
|
|