You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.3 KiB
60 lines
1.3 KiB
import { toast } from "react-toastify"; |
|
|
|
const initialState = { |
|
loading: false, |
|
error: null, |
|
list: [], |
|
info: null, |
|
hashtags: [ |
|
{ |
|
title: "فناوری اطلاعات", |
|
color: "#019BC3", |
|
}, |
|
{ |
|
title: "سخت افزار", |
|
color: "#7CC301", |
|
}, |
|
{ |
|
title: "آموزشی", |
|
color: "#C5B90C", |
|
}, |
|
{ |
|
title: "فرهنگی", |
|
color: "#C2684D", |
|
}, |
|
{ |
|
title: "معرفی کتاب", |
|
color: "#8B4DC2", |
|
}, |
|
{ |
|
title: "مهارت آموزی", |
|
color: "#780D6D", |
|
}, |
|
{ |
|
title: "پیشرفت شخصی", |
|
color: "#E63F15", |
|
}, |
|
], |
|
}; |
|
export default function blog(state = initialState, action) { |
|
let { type, data } = action; |
|
switch (type) { |
|
case "public/blogList": |
|
return { |
|
...state, |
|
loading: false, |
|
list: data, |
|
hashtags: [...new Set(data.map((object) => object.tag))], |
|
error: null, |
|
}; |
|
case "public/blogInfo": |
|
return { ...state, loading: false, error: null, blog: data }; |
|
case "blog/loading": |
|
return { ...state, loading: true }; |
|
case "blog/error": |
|
toast.error(data.message); |
|
return { ...state, loading: false, error: data.message }; |
|
default: |
|
return state; |
|
} |
|
}
|
|
|