forked from GetStream/stream-react-example
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStats.js
More file actions
79 lines (73 loc) · 1.93 KB
/
Copy pathStats.js
File metadata and controls
79 lines (73 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import { Stats as StatsActions } from 'actions';
/**
* iniitalState
* @type {{profileViews: {count: number, increment: number, color: string}, itemViews: {count: number, increment: number, color: string}, following: {count: number, increment: string, color: string}, followers: {count: number, increment: string, color: string}, mostViewed: Array, geoViews: Array}}
*/
const initialState = {
profileViews: {
count: 0,
increment: 24,
color: 'green',
},
itemViews: {
count: 0,
increment: 24,
color: 'green',
},
following: {
count: 0,
increment: '',
color: '',
},
followers: {
count: 0,
increment: '',
color: '',
},
mostViewed: [],
geoViews: [],
};
/**
* Stats
* Redux Reducer for Stats action
* Reference: http://redux.js.org/docs/basics/Reducers.html
* @param state
* @param action
* @returns {*}
* @constructor
*/
function Stats(state = initialState, action) {
switch (action.type) {
case StatsActions.LOAD:
if (action.response) {
if (action.response.itemViews >= 0) {
let newState = Object.assign({}, state, {
itemViews: { count: action.response.itemViews },
});
} else if (action.response.profileViews >= 0) {
let newState = Object.assign({}, state, {
profileViews: { count: action.response.profileViews },
});
} else if (action.response.mostViewed) {
let newState = Object.assign({}, state, {
mostViewed: action.response.mostViewed,
});
} else if (action.response.geoViews) {
let newState = Object.assign({}, state, {
geoViews: action.response.geoViews,
});
} else if (action.response.newFollowers) {
let newState = Object.assign({}, state);
let increment = action.response.newFollowers.result;
newState['followers']['increment'] = increment;
newState['followers']['color'] = increment
? 'green'
: 'red';
}
return newState;
}
return initialState;
}
return state;
}
export default Stats;