Authored by 于良

Merge branch 'local' into develop

@@ -81,11 +81,6 @@ export default class LikeMessage extends React.Component { @@ -81,11 +81,6 @@ export default class LikeMessage extends React.Component {
81 } 81 }
82 } 82 }
83 83
84 -  
85 -  
86 -let {width, height} = Dimensions.get('window');  
87 -let navbarHeight = (Platform.OS === 'android') ? 50 : 64;  
88 -  
89 let styles = StyleSheet.create({ 84 let styles = StyleSheet.create({
90 container: { 85 container: {
91 flex: 1, 86 flex: 1,
@@ -132,7 +132,7 @@ export default class MessageCenter extends React.Component { @@ -132,7 +132,7 @@ export default class MessageCenter extends React.Component {
132 132
133 render() { 133 render() {
134 134
135 - let {sysMsg, likeMsg, list, endReached, isRefreshing, isLoadingMore, isFetching,} = this.props; 135 + let {sysMsg, likeMsg, list, endReached, isRefreshing, isLoadingMore, isFetching, isListFetching} = this.props;
136 let dataSource = { 136 let dataSource = {
137 sysMsg: sysMsg.toArray(), 137 sysMsg: sysMsg.toArray(),
138 likeMsg: likeMsg.toArray(), 138 likeMsg: likeMsg.toArray(),
@@ -172,7 +172,7 @@ export default class MessageCenter extends React.Component { @@ -172,7 +172,7 @@ export default class MessageCenter extends React.Component {
172 } else { 172 } else {
173 return <LoadMoreIndicator 173 return <LoadMoreIndicator
174 isVisible={isLoadingMore} 174 isVisible={isLoadingMore}
175 - animating={isFetching} 175 + animating={isListFetching}
176 /> 176 />
177 } 177 }
178 }} 178 }}
@@ -184,16 +184,10 @@ export default class MessageCenter extends React.Component { @@ -184,16 +184,10 @@ export default class MessageCenter extends React.Component {
184 } 184 }
185 185
186 186
187 -let {width, height} = Dimensions.get('window');  
188 -let navbarHeight = (Platform.OS === 'android') ? 50 : 64;  
189 let styles = StyleSheet.create({ 187 let styles = StyleSheet.create({
190 container: { 188 container: {
191 flex: 1, 189 flex: 1,
192 - top: navbarHeight,  
193 - // height: height-navbarHeight,  
194 backgroundColor: 'white', 190 backgroundColor: 'white',
195 - marginBottom:navbarHeight,  
196 -  
197 }, 191 },
198 separator: { 192 separator: {
199 height: 0.5, 193 height: 0.5,
@@ -44,7 +44,6 @@ export default class MsgCenterNormalCell extends React.Component { @@ -44,7 +44,6 @@ export default class MsgCenterNormalCell extends React.Component {
44 44
45 render() { 45 render() {
46 let data = this.props.data.toJS(); 46 let data = this.props.data.toJS();
47 - console.log(data);  
48 let {user, title, timeago, post, subTitle, isRead} = data; 47 let {user, title, timeago, post, subTitle, isRead} = data;
49 let postId = post.id; 48 let postId = post.id;
50 return ( 49 return (
@@ -121,13 +121,9 @@ export default class SystemMessage extends React.Component { @@ -121,13 +121,9 @@ export default class SystemMessage extends React.Component {
121 } 121 }
122 122
123 123
124 -  
125 -let {width, height} = Dimensions.get('window');  
126 -let navbarHeight = (Platform.OS === 'android') ? 50 : 64;  
127 let styles = StyleSheet.create({ 124 let styles = StyleSheet.create({
128 container: { 125 container: {
129 - top: navbarHeight,  
130 - height: height-navbarHeight, 126 + flex: 1,
131 backgroundColor: 'white', 127 backgroundColor: 'white',
132 }, 128 },
133 129
@@ -420,9 +420,7 @@ export default class User extends React.Component { @@ -420,9 +420,7 @@ export default class User extends React.Component {
420 420
421 let styles = StyleSheet.create({ 421 let styles = StyleSheet.create({
422 container: { 422 container: {
423 - top: 0,  
424 flex: 1, 423 flex: 1,
425 - height: height,  
426 backgroundColor: 'transparent', 424 backgroundColor: 'transparent',
427 }, 425 },
428 426
@@ -105,9 +105,9 @@ class MessageCenterContainer extends React.Component { @@ -105,9 +105,9 @@ class MessageCenterContainer extends React.Component {
105 render() { 105 render() {
106 106
107 let {centerMsg} = this.props.message; 107 let {centerMsg} = this.props.message;
108 - let {ptr, isFetching, sysMsg, likeMsg, list, endReached} = centerMsg; 108 + let {ptr, isFetching, sysMsg, likeMsg, isListFetching, list, endReached} = centerMsg;
109 let isRefreshing = ptr; 109 let isRefreshing = ptr;
110 - let isLoadingMore = !ptr && isFetching; 110 + let isLoadingMore = !ptr && isListFetching;
111 111
112 return ( 112 return (
113 <View style={styles.container}> 113 <View style={styles.container}>
@@ -128,6 +128,7 @@ class MessageCenterContainer extends React.Component { @@ -128,6 +128,7 @@ class MessageCenterContainer extends React.Component {
128 onPressSystemCell={this._onPressSystemCell} 128 onPressSystemCell={this._onPressSystemCell}
129 onPressLikeCell={this._onPressLikeCell} 129 onPressLikeCell={this._onPressLikeCell}
130 onEndReached={this._onEndReached} 130 onEndReached={this._onEndReached}
  131 + isListFetching={isListFetching}
131 /> 132 />
132 </View> 133 </View>
133 ); 134 );
@@ -140,9 +141,9 @@ let navbarHeight = (Platform.OS === 'android') ? 50 : 64; @@ -140,9 +141,9 @@ let navbarHeight = (Platform.OS === 'android') ? 50 : 64;
140 141
141 let styles = StyleSheet.create({ 142 let styles = StyleSheet.create({
142 container: { 143 container: {
143 - // top: 0,  
144 - height: height,  
145 - backgroundColor: 'transparent' 144 + top: navbarHeight,
  145 + marginBottom: navbarHeight,
  146 + flex: 1,
146 }, 147 },
147 148
148 }); 149 });
@@ -119,9 +119,9 @@ let navbarHeight = (Platform.OS === 'android') ? 50 : 64; @@ -119,9 +119,9 @@ let navbarHeight = (Platform.OS === 'android') ? 50 : 64;
119 119
120 let styles = StyleSheet.create({ 120 let styles = StyleSheet.create({
121 container: { 121 container: {
122 - // top: 0,  
123 - height: height,  
124 - backgroundColor: 'transparent' 122 + top: navbarHeight,
  123 + marginBottom: navbarHeight,
  124 + flex: 1,
125 }, 125 },
126 126
127 }); 127 });
@@ -299,9 +299,9 @@ let navbarHeight = (Platform.OS === 'android') ? 50 : 64; @@ -299,9 +299,9 @@ let navbarHeight = (Platform.OS === 'android') ? 50 : 64;
299 299
300 let styles = StyleSheet.create({ 300 let styles = StyleSheet.create({
301 container: { 301 container: {
302 - // top: 0,  
303 - height: height,  
304 - backgroundColor: 'transparent' 302 + top: 0,
  303 + marginBottom: 0,
  304 + flex: 1,
305 }, 305 },
306 306
307 }); 307 });
@@ -184,7 +184,7 @@ export function replyMessage(ptr = false) { @@ -184,7 +184,7 @@ export function replyMessage(ptr = false) {
184 return (dispatch, getState) => { 184 return (dispatch, getState) => {
185 let {user, message} = getState(); 185 let {user, message} = getState();
186 if (!ptr) { 186 if (!ptr) {
187 - if (message.centerMsg.ptr || message.centerMsg.isFetching || message.centerMsg.endReached || message.centerMsg.error) { 187 + if (message.centerMsg.ptr || message.centerMsg.isListFetching || message.centerMsg.endReached || message.centerMsg.listError) {
188 return; 188 return;
189 } 189 }
190 } 190 }
@@ -271,30 +271,23 @@ export function goToSystemMessage() { @@ -271,30 +271,23 @@ export function goToSystemMessage() {
271 function parseMessageInfo(json) { 271 function parseMessageInfo(json) {
272 let {praiseMsg, systemMsg} = json; 272 let {praiseMsg, systemMsg} = json;
273 273
274 - let like={} , sys={};  
275 -  
276 - if (praiseMsg) {  
277 - like = {  
278 - tips: praiseMsg.title || '',  
279 - isRead: (praiseMsg.isRead === 'N')?false:true,  
280 - timeagoStr:timeago(praiseMsg.createTime),  
281 - };  
282 - } 274 + let likeMsg = {
  275 + tips: praiseMsg && praiseMsg.title || '',
  276 + isRead: praiseMsg && (praiseMsg.isRead === 'N') ? false : true,
  277 + timeagoStr: praiseMsg && timeago(praiseMsg.createTime) || '',
  278 + };
  279 + let sysMsg = {
  280 + tips: systemMsg && systemMsg.title || '',
  281 + isRead: systemMsg && (systemMsg.isRead === 'N') ? false : true,
  282 + timeagoStr: systemMsg && timeago(systemMsg.createTime) || '',
  283 + };
283 284
284 - if (systemMsg) {  
285 - sys = {  
286 - tips: systemMsg.title || '',  
287 - isRead: (systemMsg.isRead === 'N')?false:true,  
288 - timeagoStr:timeago(systemMsg.createTime),  
289 - };  
290 - }  
291 let result = { 285 let result = {
292 - likeMsg: like,  
293 - sysMsg: sys, 286 + likeMsg,
  287 + sysMsg,
294 }; 288 };
295 289
296 return result; 290 return result;
297 -  
298 } 291 }
299 292
300 function parseMessageList(json) { 293 function parseMessageList(json) {
@@ -11,8 +11,6 @@ let InitialState = Record({ @@ -11,8 +11,6 @@ let InitialState = Record({
11 isFetching: false, 11 isFetching: false,
12 ptr: true, 12 ptr: true,
13 error: null, 13 error: null,
14 - lastedTime: 0,  
15 - list: List(),  
16 sysMsg: new (Record({ 14 sysMsg: new (Record({
17 timeagoStr: null, 15 timeagoStr: null,
18 tips: null, 16 tips: null,
@@ -23,6 +21,10 @@ let InitialState = Record({ @@ -23,6 +21,10 @@ let InitialState = Record({
23 tips: null, 21 tips: null,
24 isRead: true, 22 isRead: true,
25 })), 23 })),
  24 + isListFetching: false,
  25 + listError: null,
  26 + lastedTime: 0,
  27 + list: List(),
26 endReached: false, 28 endReached: false,
27 })), 29 })),
28 30
@@ -106,8 +106,8 @@ export default function message(state = initialState, action) { @@ -106,8 +106,8 @@ export default function message(state = initialState, action) {
106 106
107 case MESSAGE_CENTER_REQUEST: 107 case MESSAGE_CENTER_REQUEST:
108 { 108 {
109 - let nextState = state.setIn(['centerMsg', 'isFetching'], true)  
110 - .setIn(['centerMsg', 'error'], null); 109 + let nextState = state.setIn(['centerMsg', 'isListFetching'], true)
  110 + .setIn(['centerMsg', 'listError'], null);
111 return nextState; 111 return nextState;
112 } 112 }
113 break; 113 break;
@@ -115,8 +115,8 @@ export default function message(state = initialState, action) { @@ -115,8 +115,8 @@ export default function message(state = initialState, action) {
115 case MESSAGE_CENTER_SUCCESS: 115 case MESSAGE_CENTER_SUCCESS:
116 { 116 {
117 let {lastedTime, list, endReached} = action.payload; 117 let {lastedTime, list, endReached} = action.payload;
118 - let nextState = state.setIn(['centerMsg', 'isFetching'], false)  
119 - .setIn(['centerMsg', 'error'], null) 118 + let nextState = state.setIn(['centerMsg', 'isListFetching'], false)
  119 + .setIn(['centerMsg', 'listError'], null)
120 .setIn(['centerMsg', 'lastedTime'], lastedTime) 120 .setIn(['centerMsg', 'lastedTime'], lastedTime)
121 .setIn(['centerMsg', 'endReached'], endReached) 121 .setIn(['centerMsg', 'endReached'], endReached)
122 .setIn(['centerMsg', 'list'], Immutable.fromJS(list)); 122 .setIn(['centerMsg', 'list'], Immutable.fromJS(list));
@@ -126,8 +126,8 @@ export default function message(state = initialState, action) { @@ -126,8 +126,8 @@ export default function message(state = initialState, action) {
126 126
127 case MESSAGE_CENTER_FAILURE: 127 case MESSAGE_CENTER_FAILURE:
128 { 128 {
129 - return state.setIn(['centerMsg', 'isFetching'], false)  
130 - .setIn(['centerMsg', 'error'], action.payload); 129 + return state.setIn(['centerMsg', 'isListFetching'], false)
  130 + .setIn(['centerMsg', 'listError'], action.payload);
131 } 131 }
132 break; 132 break;
133 133
@@ -9,7 +9,6 @@ export default class MessageService { @@ -9,7 +9,6 @@ export default class MessageService {
9 } 9 }
10 10
11 async messageInfo(uid) { 11 async messageInfo(uid) {
12 - console.log('获取消息中心数据 uid = ' + uid);  
13 return await this.api.get({ 12 return await this.api.get({
14 url: '', 13 url: '',
15 body: { 14 body: {
@@ -27,7 +26,6 @@ export default class MessageService { @@ -27,7 +26,6 @@ export default class MessageService {
27 } 26 }
28 27
29 async messageList(uid, type, lastedTime, limit) { 28 async messageList(uid, type, lastedTime, limit) {
30 - console.log('获取消息列表 type = ' + type);  
31 return await this.api.get({ 29 return await this.api.get({
32 url: '', 30 url: '',
33 body: { 31 body: {
@@ -16,7 +16,12 @@ export default function timeago(timestamp) { @@ -16,7 +16,12 @@ export default function timeago(timestamp) {
16 } 16 }
17 17
18 let isNDaysAgo = timeagoStr.indexOf('天'); 18 let isNDaysAgo = timeagoStr.indexOf('天');
19 - if (isNDaysAgo !== -1) { 19 + let isNWeeksAgo = timeagoStr.indexOf('周');
  20 + let isNMonthsAgo = timeagoStr.indexOf('月');
  21 + let isNYearsAgo = timeagoStr.indexOf('年');
  22 + let isFutrueTime = timeagoStr.indexOf('后');
  23 +
  24 + if (isNDaysAgo !== -1 || isNWeeksAgo !== -1 || isNMonthsAgo !== -1 || isNYearsAgo !== -1 || isFutrueTime !== -1) {
20 return moment(timestamp, 'x').format('MM.DD.YYYY'); 25 return moment(timestamp, 'x').format('MM.DD.YYYY');
21 } 26 }
22 27