aboutsummaryrefslogtreecommitdiff
path: root/src/components/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/common')
-rw-r--r--src/components/common/post/Post.tsx12
-rw-r--r--src/components/common/post/PostHeader.tsx68
2 files changed, 71 insertions, 9 deletions
diff --git a/src/components/common/post/Post.tsx b/src/components/common/post/Post.tsx
index d6c5a7d6..e5f68917 100644
--- a/src/components/common/post/Post.tsx
+++ b/src/components/common/post/Post.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import {StyleSheet, View} from 'react-native';
+import {StyleSheet, View, Image} from 'react-native';
import {PostType} from '../../../types';
import PostHeader from './PostHeader';
import {SCREEN_WIDTH} from '../../../utils';
@@ -7,11 +7,15 @@ import {SCREEN_WIDTH} from '../../../utils';
interface PostProps {
post: PostType;
}
-const Post: React.FC<PostProps> = ({post: {owner}}) => {
+const Post: React.FC<PostProps> = ({post: {owner, instagram, social}}) => {
return (
<>
- <PostHeader owner={owner} />
- <View style={styles.image} />
+ <PostHeader post={instagram} owner={owner} social={social} />
+ <View style={styles.image}>
+ {instagram && (
+ <Image style={styles.image} source={{uri: instagram.media_url}} />
+ )}
+ </View>
</>
);
};
diff --git a/src/components/common/post/PostHeader.tsx b/src/components/common/post/PostHeader.tsx
index 8558d21d..a07efd10 100644
--- a/src/components/common/post/PostHeader.tsx
+++ b/src/components/common/post/PostHeader.tsx
@@ -1,17 +1,57 @@
import React from 'react';
-import {UserType} from '../../../types';
+import {UserType, InstagramPostType} from '../../../types';
import {View, StyleSheet, Image, Text} from 'react-native';
import {AuthContext} from '../../../routes/authentication';
+import moment from 'moment';
const AVATAR_DIM = 35;
interface PostHeaderProps {
owner: UserType;
+ post: InstagramPostType | undefined;
+ social: string;
}
-const PostHeader: React.FC<PostHeaderProps> = ({owner: {username}}) => {
+const PostHeader: React.FC<PostHeaderProps> = ({
+ owner: {username},
+ post,
+ social,
+}) => {
const {avatar} = React.useContext(AuthContext);
+ switch (social) {
+ case 'Instagram':
+ var icon = require('../../../assets/images/instagram-icon.png');
+ break;
+ case 'Facebook':
+ var icon = require('../../../assets/images/facebook-icon.png');
+ break;
+ case 'Twitter':
+ var icon = require('../../../assets/images/twitter-icon.png');
+ break;
+ case 'Twitch':
+ var icon = require('../../../assets/images/twitch-icon.png');
+ break;
+ case 'Pinterest':
+ var icon = require('../../../assets/images/pinterest-icon.png');
+ break;
+ case 'Whatsapp':
+ var icon = require('../../../assets/images/whatsapp-icon.png');
+ break;
+ case 'Linkedin':
+ var icon = require('../../../assets/images/linkedin-icon.png');
+ break;
+ case 'Snapchat':
+ var icon = require('../../../assets/images/snapchat-icon.png');
+ break;
+ case 'Youtube':
+ var icon = require('../../../assets/images/youtube-icon.png');
+ break;
+ default:
+ var icon = require('../../../assets/images/logo.png');
+ break;
+ }
+
return (
<View style={styles.container}>
- <View style={styles.leftElem}>
+ <View style={styles.topRow}>
<Image
style={styles.avatar}
source={
@@ -21,19 +61,26 @@ const PostHeader: React.FC<PostHeaderProps> = ({owner: {username}}) => {
}
/>
<Text style={styles.username}>{username}</Text>
+ {post && <Image style={styles.icon} source={icon} />}
</View>
+ {post && (
+ <Text style={styles.timestamp}>
+ {moment(post.timestamp).format('LL')} at{' '}
+ {moment(post.timestamp).format('LT')}
+ </Text>
+ )}
</View>
);
};
const styles = StyleSheet.create({
container: {
- flexDirection: 'row',
+ flexDirection: 'column',
justifyContent: 'space-between',
padding: 10,
backgroundColor: 'white',
},
- leftElem: {
+ topRow: {
flexDirection: 'row',
alignItems: 'center',
},
@@ -43,9 +90,20 @@ const styles = StyleSheet.create({
borderRadius: AVATAR_DIM / 2,
marginRight: 10,
},
+ icon: {
+ width: AVATAR_DIM,
+ height: AVATAR_DIM,
+ borderRadius: AVATAR_DIM / 2,
+ marginLeft: '55%',
+ },
username: {
fontSize: 18,
},
+ timestamp: {
+ color: '#6A757D',
+ fontSize: 11,
+ marginLeft: AVATAR_DIM + 10,
+ },
});
export default PostHeader;