summaryrefslogtreecommitdiff
path: root/frontend/app/screens/articles/blogposts.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/app/screens/articles/blogposts.js')
-rw-r--r--frontend/app/screens/articles/blogposts.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/frontend/app/screens/articles/blogposts.js b/frontend/app/screens/articles/blogposts.js
new file mode 100644
index 0000000..3ce4565
--- /dev/null
+++ b/frontend/app/screens/articles/blogposts.js
@@ -0,0 +1,88 @@
+import React from 'react';
+import {
+ FlatList,
+ View,
+ Image,
+ TouchableOpacity,
+} from 'react-native';
+import {
+ RkCard, RkStyleSheet,
+ RkText,
+} from 'react-native-ui-kitten';
+import { Avatar } from '../../components';
+import { data } from '../../data';
+import NavigationType from '../../config/navigation/propTypes';
+
+const moment = require('moment');
+
+export class Blogposts extends React.Component {
+ static propTypes = {
+ navigation: NavigationType.isRequired,
+ };
+ static navigationOptions = {
+ title: 'Blogposts'.toUpperCase(),
+ };
+
+ state = {
+ data: data.getArticles('post'),
+ };
+
+ extractItemKey = (item) => `${item.id}`;
+
+ onItemPressed = (item) => {
+ this.props.navigation.navigate('Article', { id: item.id });
+ };
+
+ renderItem = ({ item }) => (
+ <TouchableOpacity
+ delayPressIn={70}
+ activeOpacity={0.8}
+ onPress={() => this.onItemPressed(item)}>
+ <RkCard rkType='blog' style={styles.card}>
+ <Image rkCardImg source={item.photo} />
+ <View rkCardHeader style={styles.content}>
+ <RkText style={styles.section} rkType='header4'>{item.title}</RkText>
+ </View>
+ <View rkCardContent>
+ <View>
+ <RkText rkType='primary3 mediumLine' numberOfLines={2}>{item.text}</RkText>
+ </View>
+ </View>
+ <View rkCardFooter>
+ <View style={styles.userInfo}>
+ <Avatar style={styles.avatar} rkType='circle small' img={item.user.photo} />
+ <RkText rkType='header6'>{`${item.user.firstName} ${item.user.lastName}`}</RkText>
+ </View>
+ <RkText rkType='secondary2 hintColor'>{moment().add(item.time, 'seconds').fromNow()}</RkText>
+ </View>
+ </RkCard>
+ </TouchableOpacity>
+ );
+
+ render = () => (
+ <FlatList
+ data={this.state.data}
+ renderItem={this.renderItem}
+ keyExtractor={this.extractItemKey}
+ style={styles.container}
+ />
+ );
+}
+
+const styles = RkStyleSheet.create(theme => ({
+ container: {
+ backgroundColor: theme.colors.screen.scroll,
+ paddingVertical: 8,
+ paddingHorizontal: 14,
+ },
+ card: {
+ marginVertical: 8,
+ },
+ userInfo: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ avatar: {
+ marginRight: 17,
+ },
+}));