import React, {Component} from 'react'; import {StyleSheet, Text, View, TouchableOpacity} from 'react-native'; import Ionicons from 'react-native-vector-icons/Ionicons'; import moment from 'moment'; import Touchable from '../touchable'; import Color from '../../style/color'; import UserIcon from '../userIcon'; import Photo from '../photo'; import DiaryIconComment from './diaryIconComment'; import DiaryIconOkB from './diaryIconOkB'; import DiaryAction from './diaryAction'; export default class DiaryBrief extends Component { constructor(props) { super(props); this.state = { diary: props.diary, isMine: props.isMine || false, expired: props.expired || false } this.showField = ['userIcon', 'userName', 'subject', 'createdTime']; if(props.showField && props.showField.length > 0) { this.showField = props.showField } } show(field) { return this.showField.indexOf(field) >= 0; } onDiaryAction() { DiaryAction.action(this.props.componentId, this.state.diary); } refreshDiary(diary) { if(diary && this.props.refreshBack) { this.props.refreshBack(diary); } } render() { let diary = this.state.diary; if(!diary) { return null; } let isMine = this.state.isMine; let expired = this.state.expired; let user = diary.user; return ( this.props.onDiaryPress ? this.props.onDiaryPress(this.state.diary) : null}> {(user && user.iconUrl && this.show('userIcon')) ? : null} {(user && user.name && this.show('userName')) ? ( {user.name} ) : null} {(diary.notebook_subject && this.show('subject')) ? ( 《{diary.notebook_subject}》 ) : null} {(diary.created && this.show('createdTime')) ? ( {moment(diary.created).format('H:mm')} ) : null} {diary.content} { isMine && !expired ? : null } ); } } const localStyle = StyleSheet.create({ box: { flexDirection: "row", overflow: "hidden", paddingHorizontal: 15, paddingTop: 15 }, body: { flexDirection: "column", flexGrow: 1, flexShrink: 1, paddingTop: 2, paddingBottom: 5 }, title: { flexDirection: "row", alignItems: "flex-end", paddingBottom: 5, paddingRight: 9 }, titleName: { fontWeight: 'bold', color: Color.text, fontSize: 14 }, titleText: { fontSize: 12, color: Color.inactiveText }, content: { flexGrow: 1, lineHeight: 24, color: Color.text, fontSize: 15, textAlignVertical: 'bottom' }, actionBar: { flexDirection: 'row', alignItems: "center", width: '100%', height: 30, marginTop: 10, justifyContent: 'space-between' }, icons: { flexDirection: 'row' }, moreIcon: { marginLeft: 7, marginRight: 13 } });