Initial git
This commit is contained in:
52
app/reducers/authorizeReducer.jsx
Normal file
52
app/reducers/authorizeReducer.jsx
Normal file
@@ -0,0 +1,52 @@
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
|
||||
/**
|
||||
* Default state
|
||||
*/
|
||||
var defaultState = {
|
||||
uid: 0,
|
||||
authed: false,
|
||||
updatePassword: false,
|
||||
guest:false
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Authorize reducer
|
||||
* @param {object} state
|
||||
* @param {object} action
|
||||
*/
|
||||
export var authorizeReducer = (state = defaultState, action) =>{
|
||||
switch (action.type) {
|
||||
case types.LOGIN:
|
||||
return{
|
||||
uid: action.uid,
|
||||
authed: true,
|
||||
guest:false
|
||||
}
|
||||
case types.LOGOUT:
|
||||
return{
|
||||
...state,
|
||||
uid: 0,
|
||||
authed: false,
|
||||
guest:true
|
||||
}
|
||||
|
||||
case types.SIGNUP:
|
||||
return{
|
||||
...state,
|
||||
uid: action.uid
|
||||
}
|
||||
case types.UPDATE_PASSWORD:
|
||||
return{
|
||||
...state,
|
||||
updatePassword: action.updatePassword
|
||||
}
|
||||
default:
|
||||
return state
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
166
app/reducers/circleReducer.jsx
Normal file
166
app/reducers/circleReducer.jsx
Normal file
@@ -0,0 +1,166 @@
|
||||
// - Import react components
|
||||
var uuid = require('uuid');
|
||||
import moment from 'moment'
|
||||
import _ from 'lodash'
|
||||
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
/* ---------------- */
|
||||
|
||||
|
||||
/**
|
||||
* Default State
|
||||
*/
|
||||
var defaultState = {
|
||||
userCircles: {},
|
||||
loaded: false
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Circle reducer
|
||||
* @param {object} state
|
||||
* @param {object} action
|
||||
*/
|
||||
export var circleReducer = (state = defaultState, action) => {
|
||||
const { payload } = action
|
||||
switch (action.type) {
|
||||
case types.CLEAR_ALL_CIRCLES:
|
||||
return defaultState
|
||||
|
||||
case types.ADD_CIRCLE:
|
||||
return {
|
||||
...state,
|
||||
userCircles: {
|
||||
...state.userCircles,
|
||||
[payload.uid]: {
|
||||
...state.userCircles[payload.uid],
|
||||
[payload.circle.id]: { ...payload.circle }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case types.UPDATE_CIRCLE:
|
||||
return {
|
||||
...state,
|
||||
userCircles: {
|
||||
...state.userCircles,
|
||||
[payload.uid]: {
|
||||
...state.userCircles[payload.uid],
|
||||
[payload.circle.id]: {
|
||||
...state.userCircles[payload.uid][payload.circle.id],
|
||||
...payload.circle,
|
||||
openCircleSettings:false }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case types.DELETE_CIRCLE:
|
||||
let filteredCircles = {}
|
||||
Object.keys(state.userCircles[payload.uid]).map((key) => {
|
||||
if (key !== payload.id) {
|
||||
return _.merge(filteredCircles, { [key]: { ...state.userCircles[payload.uid][key] } })
|
||||
}
|
||||
})
|
||||
return {
|
||||
...state,
|
||||
userCircles: {
|
||||
...state.userCircles,
|
||||
[payload.uid]: {
|
||||
...filteredCircles
|
||||
}
|
||||
}
|
||||
}
|
||||
case types.ADD_LIST_CIRCLE:
|
||||
return {
|
||||
...state,
|
||||
userCircles: {
|
||||
...state.userCircles,
|
||||
[payload.uid]: {
|
||||
...state.userCircles[payload.uid],
|
||||
...payload.circles
|
||||
}
|
||||
},
|
||||
loaded:true
|
||||
|
||||
}
|
||||
|
||||
case types.ADD_FOLLOWING_USER:
|
||||
return {
|
||||
...state,
|
||||
userCircles: {
|
||||
...state.userCircles,
|
||||
[payload.uid]: {
|
||||
...state.userCircles[payload.uid],
|
||||
[payload.cid]: {
|
||||
...state.userCircles[payload.uid][payload.cid],
|
||||
users:{
|
||||
...state.userCircles[payload.uid][payload.cid].users,
|
||||
[payload.followingId]: {
|
||||
...payload.userCircle
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case types.DELETE_FOLLOWING_USER:
|
||||
let filteredUserCircle = {}
|
||||
Object.keys(state.userCircles[payload.uid][payload.cid].users).map((key) => {
|
||||
if (key !== payload.followingId) {
|
||||
return _.merge(filteredUserCircle, { [key]: { ...state.userCircles[payload.uid][payload.cid].users[key] } })
|
||||
}
|
||||
})
|
||||
return {
|
||||
...state,
|
||||
userCircles: {
|
||||
...state.userCircles,
|
||||
[payload.uid]: {
|
||||
...state.userCircles[payload.uid],
|
||||
[payload.cid]: {
|
||||
...state.userCircles[payload.uid][payload.cid],
|
||||
users:{
|
||||
...filteredUserCircle
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case types.CLOSE_CIRCLE_SETTINGS:
|
||||
return {
|
||||
...state,
|
||||
userCircles: {
|
||||
...state.userCircles,
|
||||
[payload.uid]: {
|
||||
...state.userCircles[payload.uid],
|
||||
[payload.id]: {
|
||||
...state.userCircles[payload.uid][payload.id],
|
||||
openCircleSettings: false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case types.OPEN_CIRCLE_SETTINGS:
|
||||
return {
|
||||
...state,
|
||||
userCircles: {
|
||||
...state.userCircles,
|
||||
[payload.uid]: {
|
||||
...state.userCircles[payload.uid],
|
||||
[payload.id]: {
|
||||
...state.userCircles[payload.uid][payload.id],
|
||||
openCircleSettings: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
return state;
|
||||
|
||||
}
|
||||
}
|
||||
127
app/reducers/commentReducer.jsx
Normal file
127
app/reducers/commentReducer.jsx
Normal file
@@ -0,0 +1,127 @@
|
||||
// - Import react components
|
||||
import moment from 'moment'
|
||||
import _ from 'lodash'
|
||||
|
||||
|
||||
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
|
||||
/**
|
||||
* Default state
|
||||
*/
|
||||
var defaultState = {
|
||||
postComments: {},
|
||||
loaded:false
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Comment actions
|
||||
* @param {object} state
|
||||
* @param {object} action
|
||||
*/
|
||||
export var commentReducer = (state = defaultState, action) => {
|
||||
var { payload } = action
|
||||
switch (action.type) {
|
||||
|
||||
/* _____________ CRUD _____________ */
|
||||
case types.ADD_COMMENT:
|
||||
return {
|
||||
...state,
|
||||
postComments: {
|
||||
...state.postComments,
|
||||
[payload.postId]: {
|
||||
...state.postComments[payload.postId],
|
||||
[payload.id]: {
|
||||
...payload.comment,
|
||||
editorStatus: false
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
case types.ADD_COMMENT_LIST:
|
||||
return {
|
||||
...state,
|
||||
postComments: {
|
||||
...payload
|
||||
},
|
||||
loaded:true
|
||||
}
|
||||
case types.UPDATE_COMMENT:
|
||||
return {
|
||||
...state,
|
||||
postComments: {
|
||||
...state.postComments,
|
||||
[payload.postId]: {
|
||||
...state.postComments[payload.postId],
|
||||
[payload.id]: {
|
||||
...state.postComments[payload.postId][payload.id],
|
||||
text: payload.text,
|
||||
editorStatus: payload.editorStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
case types.DELETE_COMMENT:
|
||||
var parsedComments = {}
|
||||
if (!state.postComments[payload.postId]) {
|
||||
return state
|
||||
}
|
||||
Object.keys(state.postComments[payload.postId]).map((id) => {
|
||||
if (id !== payload.id) {
|
||||
_.merge(parsedComments, { [id]: { ...state.postComments[payload.postId][id] } })
|
||||
}
|
||||
|
||||
})
|
||||
return {
|
||||
...state,
|
||||
postComments: {
|
||||
...state.postComments,
|
||||
[payload.postId]: {
|
||||
...parsedComments
|
||||
}
|
||||
}
|
||||
}
|
||||
case types.CLOSE_COMMENT_EDITOR:
|
||||
return {
|
||||
...state,
|
||||
postComments: {
|
||||
...state.postComments,
|
||||
[payload.postId]: {
|
||||
...state.postComments[payload.postId],
|
||||
[payload.id]: {
|
||||
...state.postComments[payload.postId][payload.id],
|
||||
editorStatus: false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
case types.OPEN_COMMENT_EDITOR:
|
||||
return {
|
||||
...state,
|
||||
postComments: {
|
||||
...state.postComments,
|
||||
[payload.postId]: {
|
||||
...state.postComments[payload.postId],
|
||||
[payload.id]: {
|
||||
...state.postComments[payload.postId][payload.id],
|
||||
editorStatus: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case types.CLEAR_ALL_DATA_COMMENT:
|
||||
return defaultState
|
||||
|
||||
|
||||
default:
|
||||
return state;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
47
app/reducers/fileReducer.jsx
Normal file
47
app/reducers/fileReducer.jsx
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
|
||||
/**
|
||||
* Default state
|
||||
*/
|
||||
var defaultState = {
|
||||
downloadFileName: '',
|
||||
uploadFileName:'',
|
||||
error: {},
|
||||
result: {}
|
||||
}
|
||||
|
||||
/**
|
||||
* File reducer
|
||||
* @param {object} state
|
||||
* @param {object} action
|
||||
*/
|
||||
export const fileReducer = (state = defaultState, action) => {
|
||||
switch (action.type) {
|
||||
case types.UPLOAD_FILE:
|
||||
return{
|
||||
...state,
|
||||
uploadFileName: action.fileName
|
||||
}
|
||||
case types.UPLOAD_FILE_ERROR:
|
||||
return{
|
||||
state,
|
||||
error: action.error
|
||||
}
|
||||
case types.UPLOAD_FILE_COMPLETE:
|
||||
return{
|
||||
...state,
|
||||
result: action.result
|
||||
}
|
||||
case types.DOWNLOAD_FILE:
|
||||
return{
|
||||
...state,
|
||||
downloadFileName: action.fileName
|
||||
}
|
||||
|
||||
default:
|
||||
return state
|
||||
}
|
||||
}
|
||||
127
app/reducers/globalReducer.jsx
Normal file
127
app/reducers/globalReducer.jsx
Normal file
@@ -0,0 +1,127 @@
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
|
||||
/**
|
||||
* Default state
|
||||
*/
|
||||
var defaultState = {
|
||||
progress: {
|
||||
percent: 0,
|
||||
visible: false
|
||||
},
|
||||
loadingStatus: true,
|
||||
defaultLoadDataStatus: false,
|
||||
messageOpen: false,
|
||||
message: '',
|
||||
sidebarMainStyle: {},
|
||||
sidebarStyle: { width: "210px" },
|
||||
sidebarClass: "",
|
||||
sidebarOpen: (window.innerWidth > 750) ? true : false,
|
||||
windowWidth: 0,
|
||||
windowHeight: 0,
|
||||
overSidebarStatus: false,
|
||||
onResizeOpenSidebar: false,
|
||||
sidebarAuto: false,
|
||||
headerTitle: '',
|
||||
editProfileOpen: false,
|
||||
showTopLoading: false,
|
||||
topLoadingQueue: 0,
|
||||
temp: {}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Global reducer
|
||||
* @param {object} state
|
||||
* @param {object} action
|
||||
*/
|
||||
export const globalReducer = (state = defaultState, action) => {
|
||||
const { payload } = action
|
||||
switch (action.type) {
|
||||
case types.PROGRESS_CHANGE:
|
||||
return {
|
||||
...state,
|
||||
progress: {
|
||||
...state.progress,
|
||||
percent: payload.percent,
|
||||
visible: payload.visible
|
||||
}
|
||||
}
|
||||
case types.DEFAULT_DATA_DISABLE:
|
||||
return {
|
||||
...state,
|
||||
defaultLoadDataStatus: false
|
||||
}
|
||||
case types.DEFAULT_DATA_ENABLE:
|
||||
return {
|
||||
...state,
|
||||
defaultLoadDataStatus: true
|
||||
}
|
||||
case types.SHOW_ERROR_MESSAGE_GLOBAL:
|
||||
return {
|
||||
...state,
|
||||
message: action.payload,
|
||||
messageOpen: true
|
||||
}
|
||||
case types.SHOW_NORMAL_MESSAGE_GLOBAL:
|
||||
return {
|
||||
...state,
|
||||
message: action.payload.message,
|
||||
messageOpen: true
|
||||
}
|
||||
case types.SHOW_SEND_REQUEST_MESSAGE_GLOBAL:
|
||||
return {
|
||||
...state,
|
||||
message: "Request has been sent",
|
||||
messageOpen: true
|
||||
}
|
||||
case types.SHOW_REQUEST_SUCCESS_MESSAGE_GLOBAL:
|
||||
return {
|
||||
...state,
|
||||
message: "Your request has processed successfuly",
|
||||
messageOpen: true
|
||||
}
|
||||
case types.HIDE_MESSAGE_GLOBAL:
|
||||
return {
|
||||
...state,
|
||||
message: '',
|
||||
messageOpen: false,
|
||||
messageColor: ''
|
||||
}
|
||||
case types.SET_HEADER_TITLE:
|
||||
return {
|
||||
...state,
|
||||
headerTitle: action.payload
|
||||
}
|
||||
case types.HIDE_TOP_LOADING:
|
||||
const queue = state.topLoadingQueue > 0 ? (state.topLoadingQueue - 1) : 0
|
||||
return {
|
||||
...state,
|
||||
topLoadingQueue: queue,
|
||||
showTopLoading: (queue > 0 ? true : false)
|
||||
|
||||
}
|
||||
case types.SHOW_TOP_LOADING:
|
||||
return {
|
||||
...state,
|
||||
topLoadingQueue: (state.topLoadingQueue + 1),
|
||||
showTopLoading: true
|
||||
}
|
||||
case types.TEMP:
|
||||
return {
|
||||
...state,
|
||||
temp: {
|
||||
...state.temp,
|
||||
...payload
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
return state
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
95
app/reducers/imageGalleryReducer.jsx
Normal file
95
app/reducers/imageGalleryReducer.jsx
Normal file
@@ -0,0 +1,95 @@
|
||||
// - Import react components
|
||||
import _ from 'lodash'
|
||||
|
||||
|
||||
// - Import image gallery action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
/**
|
||||
* Default state for reducer
|
||||
*/
|
||||
var defaultState = {
|
||||
status: false,
|
||||
images: [],
|
||||
selectImage: '',
|
||||
selectURL: '',
|
||||
loaded: false,
|
||||
imageURLList: {},
|
||||
imageRequests: []
|
||||
}
|
||||
|
||||
/**
|
||||
* Image gallery reducer
|
||||
*/
|
||||
export var imageGalleryReducer = (state = defaultState, action) => {
|
||||
const { payload } = action
|
||||
|
||||
switch (action.type) {
|
||||
case types.OPEN_IMAGE_GALLERY:
|
||||
return {
|
||||
...state,
|
||||
status: action.status
|
||||
}
|
||||
/* ----------------- CRUD ----------------- */
|
||||
case types.ADD_IMAGE_GALLERY:
|
||||
return {
|
||||
...state,
|
||||
images: [...state.images, action.image]
|
||||
}
|
||||
case types.ADD_IMAGE_LIST_GALLERY:
|
||||
{
|
||||
return {
|
||||
...state,
|
||||
images: [...action.images],
|
||||
loaded: true
|
||||
}
|
||||
}
|
||||
case types.DELETE_IMAGE:
|
||||
return {
|
||||
...state,
|
||||
images: [
|
||||
...state.images.filter((item) => {
|
||||
return item.id !== action.id
|
||||
})
|
||||
]
|
||||
}
|
||||
|
||||
case types.IMAGE_SELECT_GALLERY:
|
||||
return {
|
||||
...state,
|
||||
selectImage: action.image,
|
||||
selectURL: action.URL
|
||||
}
|
||||
case types.CLEARS_SELECT_IMAGE_GALLERY:
|
||||
return {
|
||||
...state,
|
||||
selectImage: '',
|
||||
selectURL: ''
|
||||
}
|
||||
case types.SET_IMAGE_URL:
|
||||
return {
|
||||
...state,
|
||||
imageURLList: {
|
||||
...state.imageURLList,
|
||||
[payload.name]: payload.url
|
||||
}
|
||||
}
|
||||
|
||||
case types.SEND_IMAGE_REQUEST:
|
||||
return {
|
||||
...state,
|
||||
imageRequests: [
|
||||
...state.imageRequests,
|
||||
payload
|
||||
]
|
||||
}
|
||||
|
||||
case types.CLEAT_ALL_DATA_IMAGE_GALLERY:
|
||||
return defaultState
|
||||
|
||||
|
||||
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
||||
44
app/reducers/imageUploaderReducer.jsx
Normal file
44
app/reducers/imageUploaderReducer.jsx
Normal file
@@ -0,0 +1,44 @@
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
|
||||
/**
|
||||
* Default state for reducer
|
||||
*/
|
||||
var defaultState = {
|
||||
status: false,
|
||||
editStatus:false
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Image uploader reducer
|
||||
* @param {object} state
|
||||
* @param {object} action
|
||||
*/
|
||||
export var imageUploaderReducer = (state = defaultState, action) => {
|
||||
switch (action.type) {
|
||||
case types.OPEN_IMAGE_UPLOADER:
|
||||
if(action.status)
|
||||
{
|
||||
return{
|
||||
...state,
|
||||
status: true
|
||||
}
|
||||
}
|
||||
else{
|
||||
return{
|
||||
...state,
|
||||
status: false,
|
||||
editStatus: false
|
||||
}
|
||||
}
|
||||
case types.OPEN_IMAGE_EDITOR:
|
||||
return{
|
||||
...state,
|
||||
editStatus: action.editStatus
|
||||
}
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
||||
81
app/reducers/notifyReducer.jsx
Normal file
81
app/reducers/notifyReducer.jsx
Normal file
@@ -0,0 +1,81 @@
|
||||
// - Import react components
|
||||
import moment from 'moment'
|
||||
import _ from 'lodash'
|
||||
|
||||
|
||||
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
|
||||
/**
|
||||
* Default state
|
||||
*/
|
||||
var defaultState = {
|
||||
userNotifies: {},
|
||||
loaded:false
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Notify actions
|
||||
* @param {object} state
|
||||
* @param {object} action
|
||||
*/
|
||||
export var notifyReducer = (state = defaultState, action) => {
|
||||
var { payload } = action
|
||||
switch (action.type) {
|
||||
|
||||
/* _____________ CRUD _____________ */
|
||||
case types.ADD_NOTIFY:
|
||||
return state
|
||||
|
||||
case types.ADD_NOTIFY_LIST:
|
||||
return {
|
||||
...state,
|
||||
userNotifies: {
|
||||
...payload
|
||||
},
|
||||
loaded:true
|
||||
}
|
||||
|
||||
case types.SEEN_NOTIFY:
|
||||
return {
|
||||
...state,
|
||||
userNotifies: {
|
||||
...state.userNotifies,
|
||||
[payload]:{
|
||||
...state.userNotifies[payload],
|
||||
isSeen:true
|
||||
}
|
||||
},
|
||||
loaded:true
|
||||
}
|
||||
|
||||
case types.DELETE_NOTIFY:
|
||||
var parsedNotifies = {}
|
||||
Object.keys(state.userNotifies).map((id) => {
|
||||
if (id !== payload) {
|
||||
_.merge(parsedNotifies, { [id]: { ...state.userNotifies[id] } })
|
||||
}
|
||||
|
||||
})
|
||||
return {
|
||||
...state,
|
||||
userNotifies: {
|
||||
...parsedNotifies
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
case types.CLEAR_ALL_DATA_NOTIFY:
|
||||
return defaultState
|
||||
|
||||
|
||||
default:
|
||||
return state;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
105
app/reducers/postReducer.jsx
Normal file
105
app/reducers/postReducer.jsx
Normal file
@@ -0,0 +1,105 @@
|
||||
// - Import react components
|
||||
var uuid = require('uuid');
|
||||
import moment from 'moment'
|
||||
import _ from 'lodash'
|
||||
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
/* ---------------- */
|
||||
|
||||
|
||||
/**
|
||||
* Default State
|
||||
*/
|
||||
var defaultState = {
|
||||
userPosts: {},
|
||||
loaded: false
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Post reducer
|
||||
* @param {object} state
|
||||
* @param {object} action
|
||||
*/
|
||||
export var postReducer = (state = defaultState, action) => {
|
||||
const { payload } = action
|
||||
switch (action.type) {
|
||||
case types.CLEAR_ALL_DATA_POST:
|
||||
return defaultState
|
||||
|
||||
case types.ADD_IMAGE_POST:
|
||||
return {
|
||||
...state,
|
||||
userPosts: {
|
||||
...state.userPosts,
|
||||
[payload.uid]: {
|
||||
...state.userPosts[payload.uid],
|
||||
[payload.post.id]: { ...payload.post }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case types.ADD_POST:
|
||||
return {
|
||||
...state,
|
||||
userPosts: {
|
||||
...state.userPosts,
|
||||
[payload.uid]: {
|
||||
...state.userPosts[payload.uid],
|
||||
[payload.post.id]: { ...payload.post }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case types.UPDATE_POST:
|
||||
return {
|
||||
...state,
|
||||
userPosts: {
|
||||
...state.userPosts,
|
||||
[payload.uid]: {
|
||||
...state.userPosts[payload.uid],
|
||||
[payload.post.id]: {
|
||||
...state.userPosts[payload.uid][payload.post.id],
|
||||
...payload.post
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case types.DELETE_POST:
|
||||
let filteredPosts = {}
|
||||
Object.keys(state.userPosts[payload.uid]).map((key) => {
|
||||
if (key !== payload.id) {
|
||||
return _.merge(filteredPosts, { [key]: { ...state.userPosts[payload.uid][key] } })
|
||||
}
|
||||
})
|
||||
return {
|
||||
...state,
|
||||
userPosts: {
|
||||
...state.userPosts,
|
||||
[payload.uid]: {
|
||||
...filteredPosts
|
||||
}
|
||||
}
|
||||
}
|
||||
case types.ADD_LIST_POST:
|
||||
return {
|
||||
...state,
|
||||
userPosts: {
|
||||
...state.userPosts,
|
||||
[payload.uid]: {
|
||||
...state.userPosts[payload.uid],
|
||||
...payload.posts
|
||||
}
|
||||
},
|
||||
loaded:true
|
||||
|
||||
}
|
||||
|
||||
default:
|
||||
return state;
|
||||
|
||||
}
|
||||
}
|
||||
81
app/reducers/userReducer.jsx
Normal file
81
app/reducers/userReducer.jsx
Normal file
@@ -0,0 +1,81 @@
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
/**
|
||||
* Default state for reducer
|
||||
*/
|
||||
var defaultState = {
|
||||
info: {},
|
||||
loaded: false,
|
||||
openEditProfile: false
|
||||
}
|
||||
|
||||
/**
|
||||
* User reducer
|
||||
*/
|
||||
export var userReducer = (state = defaultState, action) => {
|
||||
const { payload } = action
|
||||
switch (action.type) {
|
||||
case types.USER_INFO:
|
||||
return {
|
||||
...state,
|
||||
info: {
|
||||
...state.info,
|
||||
[payload.uid]: {
|
||||
...payload.info
|
||||
}
|
||||
}
|
||||
}
|
||||
case types.ADD_USER_INFO:
|
||||
return {
|
||||
...state,
|
||||
info: {
|
||||
...state.info,
|
||||
[payload.uid]: {
|
||||
...payload.info
|
||||
}
|
||||
},
|
||||
loaded: true
|
||||
}
|
||||
case types.ADD_PEOPLE_INFO:
|
||||
return {
|
||||
...state,
|
||||
info: {
|
||||
...state.info,
|
||||
...payload
|
||||
}
|
||||
}
|
||||
|
||||
case types.UPDATE_USER_INFO:
|
||||
return {
|
||||
...state,
|
||||
info: {
|
||||
...state.info,
|
||||
[payload.uid]: {
|
||||
...state.info[payload.uid],
|
||||
...payload.info
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
case types.CLEAR_ALL_DATA_USER:
|
||||
return defaultState
|
||||
|
||||
case types.CLOSE_EDIT_PROFILE:
|
||||
return {
|
||||
...state,
|
||||
openEditProfile: false
|
||||
}
|
||||
|
||||
case types.OPEN_EDIT_PROFILE:
|
||||
return {
|
||||
...state,
|
||||
openEditProfile: true
|
||||
}
|
||||
|
||||
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
||||
83
app/reducers/voteReducer.jsx
Normal file
83
app/reducers/voteReducer.jsx
Normal file
@@ -0,0 +1,83 @@
|
||||
// - Import react components
|
||||
import moment from 'moment'
|
||||
import _ from 'lodash'
|
||||
|
||||
|
||||
|
||||
// - Import action types
|
||||
import * as types from 'actionTypes'
|
||||
|
||||
|
||||
/**
|
||||
* Default state
|
||||
*/
|
||||
var defaultState = {
|
||||
postVotes: {},
|
||||
loaded:false
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Vote actions
|
||||
* @param {object} state
|
||||
* @param {object} action
|
||||
*/
|
||||
export var voteReducer = (state = defaultState, action) => {
|
||||
var { payload } = action
|
||||
switch (action.type) {
|
||||
|
||||
/* _____________ CRUD _____________ */
|
||||
case types.ADD_VOTE:
|
||||
return {
|
||||
...state,
|
||||
postVotes: {
|
||||
...state.postVotes,
|
||||
[payload.postId]: {
|
||||
...state.postVotes[payload.postId],
|
||||
[payload.id]: {
|
||||
...payload.vote
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
case types.ADD_VOTE_LIST:
|
||||
return {
|
||||
...state,
|
||||
postVotes: {
|
||||
...payload
|
||||
},
|
||||
loaded:true
|
||||
}
|
||||
|
||||
case types.DELETE_VOTE:
|
||||
var parsedVotes = {}
|
||||
if (state.postVotes[payload.postId])
|
||||
Object.keys(state.postVotes[payload.postId]).map((id) => {
|
||||
if (id !== payload.id) {
|
||||
_.merge(parsedVotes, { [id]: { ...state.postVotes[payload.postId][id] } })
|
||||
}
|
||||
|
||||
})
|
||||
return {
|
||||
...state,
|
||||
postVotes: {
|
||||
...state.postVotes,
|
||||
[payload.postId]: {
|
||||
...parsedVotes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
case types.CLEAR_ALL_DATA_VOTE:
|
||||
return defaultState
|
||||
|
||||
|
||||
default:
|
||||
return state;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user