aboutsummaryrefslogtreecommitdiff
path: root/src/components/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/common')
-rw-r--r--src/components/common/PostCarousel.tsx49
-rw-r--r--src/components/common/index.ts1
2 files changed, 50 insertions, 0 deletions
diff --git a/src/components/common/PostCarousel.tsx b/src/components/common/PostCarousel.tsx
new file mode 100644
index 00000000..cda9d8db
--- /dev/null
+++ b/src/components/common/PostCarousel.tsx
@@ -0,0 +1,49 @@
+import React, {Fragment, useRef, useState} from 'react';
+import {Image} from 'react-native';
+import Carousel, {Pagination} from 'react-native-snap-carousel';
+import {SCREEN_WIDTH} from '../../utils';
+
+interface PostCarouselProps {
+ data: string[];
+ imageStyles: Object;
+ marginBottom: number;
+}
+
+const PostCarousel: React.FC<PostCarouselProps> = ({
+ data,
+ imageStyles,
+ marginBottom,
+}) => {
+ const carouselRef = useRef(null);
+ const [currentPage, setCurrentPage] = useState(0);
+
+ const renderItem: (item: any) => Object = ({item}) => {
+ if (item === null) {
+ return <Fragment />;
+ } else {
+ return <Image style={imageStyles} source={{uri: item}} />;
+ }
+ };
+
+ return (
+ <>
+ <Carousel
+ ref={carouselRef}
+ data={data}
+ renderItem={renderItem}
+ sliderWidth={SCREEN_WIDTH}
+ itemWidth={SCREEN_WIDTH}
+ onSnapToItem={setCurrentPage}
+ />
+ <Pagination
+ activeDotIndex={currentPage}
+ dotsLength={data.length}
+ containerStyle={{marginBottom: marginBottom}}
+ dotColor={'#6ee7e7'}
+ inactiveDotColor={'#e0e0e0'}
+ />
+ </>
+ );
+};
+
+export default PostCarousel;
diff --git a/src/components/common/index.ts b/src/components/common/index.ts
index 87ebe810..c7ed13cd 100644
--- a/src/components/common/index.ts
+++ b/src/components/common/index.ts
@@ -11,5 +11,6 @@ export {default as LoadingIndicator} from './LoadingIndicator';
export {default as DateLabel} from './DateLabel';
export {default as SocialLinkModal} from './SocialLinkModal';
export {default as ComingSoon} from './ComingSoon';
+export {default as PostCarousel} from './PostCarousel';
export {default as TaggDatePicker} from './TaggDatePicker';
export * from './post';