@plusscommunities/pluss-core-app 1.8.2-beta.0 → 1.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
3
  import React, { Component } from 'react';
4
- import { View, Animated, StyleSheet } from 'react-native';
4
+ import { View, Image, Animated, StyleSheet } from 'react-native';
5
5
  import { connect } from 'react-redux';
6
6
  import moment from 'moment';
7
7
  import { findLandmarkRange, getScaledOffset, get300, detectFaces } from '../helper';
@@ -12,20 +12,32 @@ class AutoOffsetImage extends Component {
12
12
  super(props);
13
13
 
14
14
  _defineProperty(this, "onLoad", event => {
15
- if (event.nativeEvent.source.uri === this.props.uri && !this.state.imageLoaded) {
16
- //unblur
15
+ if (event.nativeEvent.source.uri !== this.props.uri) {
17
16
  this.setState({
18
- imageLoaded: true
17
+ imageSource: this.props.uri
19
18
  });
20
- Animated.sequence([Animated.delay(200), Animated.timing(this.state.blurRadius, {
21
- toValue: 0,
22
- duration: 500,
23
- useNativeDriver: false
24
- })]).start();
25
- }
19
+ } // if (event.nativeEvent.source.uri === this.props.uri && !this.state.imageLoaded) {
20
+ // //unblur
21
+ // this.setState({
22
+ // imageLoaded: true,
23
+ // });
24
+ // Animated.sequence([
25
+ // Animated.delay(200),
26
+ // Animated.timing(this.state.blurRadius, {
27
+ // toValue: 0,
28
+ // duration: 500,
29
+ // useNativeDriver: false,
30
+ // }),
31
+ // ]).start();
32
+ // }
33
+
26
34
  });
27
35
 
28
36
  _defineProperty(this, "positionImage", async () => {
37
+ if (this.state.disabled) {
38
+ return;
39
+ }
40
+
29
41
  try {
30
42
  const startTime = moment().valueOf();
31
43
  let cachedValues; // check local cache
@@ -116,7 +128,8 @@ class AutoOffsetImage extends Component {
116
128
  height: this.props.height
117
129
  },
118
130
  blurRadius: new Animated.Value(100),
119
- imageSource: get300(this.props.uri)
131
+ imageSource: get300(this.props.uri),
132
+ disabled: true
120
133
  };
121
134
  }
122
135
 
@@ -131,6 +144,19 @@ class AutoOffsetImage extends Component {
131
144
  }
132
145
 
133
146
  render() {
147
+ if (this.state.disabled) {
148
+ return /*#__PURE__*/React.createElement(Image, {
149
+ source: {
150
+ uri: this.state.imageSource
151
+ },
152
+ style: [styles.container, styles.staticImage, {
153
+ width: this.props.width,
154
+ height: this.props.height
155
+ }, this.props.style],
156
+ onLoad: this.onLoad
157
+ });
158
+ }
159
+
134
160
  return /*#__PURE__*/React.createElement(View, {
135
161
  style: [styles.container, {
136
162
  width: this.props.width,
@@ -157,6 +183,9 @@ const styles = StyleSheet.create({
157
183
  top: 0,
158
184
  left: 0,
159
185
  resizeMode: 'cover'
186
+ },
187
+ staticImage: {
188
+ resizeMode: 'cover'
160
189
  }
161
190
  });
162
191
 
@@ -1 +1 @@
1
- {"version":3,"sources":["AutoOffsetImage.js"],"names":["React","Component","View","Animated","StyleSheet","connect","moment","findLandmarkRange","getScaledOffset","get300","detectFaces","saveImagePosition","AutoOffsetImage","constructor","props","event","nativeEvent","source","uri","state","imageLoaded","setState","sequence","delay","timing","blurRadius","toValue","duration","useNativeDriver","start","startTime","valueOf","cachedValues","imagePositions","response","stringActions","getString","encodeURIComponent","data","e","console","log","faces","image","_","isEmpty","add","timestamp","targetWidth","width","targetHeight","height","scaledOffset","landmarkStart","end","landmarkEnd","bounds","imageBounds","offset","y","Math","max","paddingFactor","x","imageStyle","top","left","imageSource","endTime","Value","componentDidMount","positionImage","componentDidUpdate","prevProps","render","styles","container","style","onLoad","children","create","overflow","position","resizeMode","mapStateToProps","media","positions","autoOffsetImage"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Animated, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\nimport { findLandmarkRange, getScaledOffset, get300, detectFaces } from '../helper';\nimport { saveImagePosition } from '../actions';\n\nclass AutoOffsetImage extends Component {\n constructor(props) {\n super(props);\n\n this.paddingFactor = this.props.paddingFactor || 0.1;\n\n this.state = {\n imageStyle: {\n width: this.props.width,\n height: this.props.height,\n },\n blurRadius: new Animated.Value(100),\n imageSource: get300(this.props.uri),\n };\n }\n\n componentDidMount() {\n this.positionImage();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.uri !== this.props.uri || prevProps.height !== this.props.height || prevProps.width !== this.props.width) {\n this.positionImage();\n }\n }\n\n onLoad = event => {\n if (event.nativeEvent.source.uri === this.props.uri && !this.state.imageLoaded) {\n //unblur\n this.setState({\n imageLoaded: true,\n });\n Animated.sequence([\n Animated.delay(200),\n Animated.timing(this.state.blurRadius, {\n toValue: 0,\n duration: 500,\n useNativeDriver: false,\n }),\n ]).start();\n }\n };\n\n positionImage = async () => {\n try {\n const startTime = moment().valueOf();\n\n let cachedValues;\n // check local cache\n if (this.props.imagePositions && this.props.imagePositions[this.props.uri]) {\n cachedValues = this.props.imagePositions[this.props.uri];\n }\n // check remote cache\n if (!cachedValues) {\n try {\n const response = await stringActions.getString('plussSpace', `imagefaces_${encodeURIComponent(this.props.uri)}`);\n cachedValues = response.data;\n } catch (e) {\n console.log('errored from cache');\n }\n // run face detection locally\n if (\n !cachedValues ||\n !cachedValues.faces ||\n !cachedValues.image ||\n (_.isEmpty(cachedValues.faces) &&\n moment()\n .add(-1, 'w')\n .valueOf() > moment(cachedValues.timestamp).valueOf())\n ) {\n cachedValues = await detectFaces(this.props.uri);\n }\n this.props.saveImagePosition(this.props.uri, cachedValues);\n }\n\n const image = await findLandmarkRange(this.props.uri, {\n targetWidth: this.props.width,\n targetHeight: this.props.height,\n cachedValues,\n });\n const scaledOffset = getScaledOffset(image.width, image.height, this.props.width, this.props.height);\n\n const { start: landmarkStart, end: landmarkEnd } = image;\n const { bounds: imageBounds, offset, width, height } = scaledOffset;\n\n if (landmarkStart.y < imageBounds.start.y) {\n // move up\n offset.y = -Math.max(landmarkStart.y - this.props.height * this.paddingFactor, 0); // move top to 5% above start of landmark\n } else if (landmarkEnd.y > imageBounds.end.y) {\n // move down\n offset.y = -Math.max(landmarkEnd.y + this.props.height * this.paddingFactor - this.props.height, 0); // move bottom to 5% below end of landmark\n }\n\n if (landmarkStart.x < imageBounds.start.x) {\n // move right\n offset.x = -Math.max(landmarkStart.x - this.props.width * this.paddingFactor, 0); // move left edge to 5% left of start of landmark\n } else if (landmarkEnd.x > imageBounds.end.x) {\n // move left\n offset.x = -Math.max(landmarkEnd.x + this.props.width * this.paddingFactor - this.props.width, 0); // move right edge to 5% left of end of landmark\n }\n\n this.setState({\n imageStyle: {\n width,\n height,\n top: offset.y,\n left: offset.x,\n },\n imageSource: this.props.uri,\n });\n\n const endTime = moment().valueOf();\n if (endTime - startTime < 500) {\n Animated.timing(this.state.blurRadius, {\n toValue: 0,\n duration: 0,\n useNativeDriver: false,\n }).start();\n }\n } catch (e) {\n this.setState({\n imageSource: this.props.uri,\n });\n }\n };\n\n render() {\n return (\n <View\n style={[\n styles.container,\n {\n width: this.props.width,\n height: this.props.height,\n },\n this.props.style,\n ]}\n >\n <Animated.Image\n blurRadius={this.state.blurRadius}\n source={{ uri: this.state.imageSource }}\n style={[styles.image, this.state.imageStyle]}\n onLoad={this.onLoad}\n />\n {this.props.children}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n image: {\n position: 'absolute',\n top: 0,\n left: 0,\n resizeMode: 'cover',\n },\n});\n\nconst mapStateToProps = state => {\n return {\n imagePositions: state.media.positions,\n };\n};\n\nconst autoOffsetImage = connect(mapStateToProps, { saveImagePosition })(AutoOffsetImage);\nexport { autoOffsetImage as AutoOffsetImage };\n"]}
1
+ {"version":3,"sources":["AutoOffsetImage.js"],"names":["React","Component","View","Image","Animated","StyleSheet","connect","moment","findLandmarkRange","getScaledOffset","get300","detectFaces","saveImagePosition","AutoOffsetImage","constructor","props","event","nativeEvent","source","uri","setState","imageSource","state","disabled","startTime","valueOf","cachedValues","imagePositions","response","stringActions","getString","encodeURIComponent","data","e","console","log","faces","image","_","isEmpty","add","timestamp","targetWidth","width","targetHeight","height","scaledOffset","start","landmarkStart","end","landmarkEnd","bounds","imageBounds","offset","y","Math","max","paddingFactor","x","imageStyle","top","left","endTime","timing","blurRadius","toValue","duration","useNativeDriver","Value","componentDidMount","positionImage","componentDidUpdate","prevProps","render","styles","container","staticImage","style","onLoad","children","create","overflow","position","resizeMode","mapStateToProps","media","positions","autoOffsetImage"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Image, Animated, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\nimport { findLandmarkRange, getScaledOffset, get300, detectFaces } from '../helper';\nimport { saveImagePosition } from '../actions';\n\nclass AutoOffsetImage extends Component {\n constructor(props) {\n super(props);\n\n this.paddingFactor = this.props.paddingFactor || 0.1;\n\n this.state = {\n imageStyle: {\n width: this.props.width,\n height: this.props.height,\n },\n blurRadius: new Animated.Value(100),\n imageSource: get300(this.props.uri),\n disabled: true,\n };\n }\n\n componentDidMount() {\n this.positionImage();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.uri !== this.props.uri || prevProps.height !== this.props.height || prevProps.width !== this.props.width) {\n this.positionImage();\n }\n }\n\n onLoad = event => {\n if (event.nativeEvent.source.uri !== this.props.uri) {\n this.setState({\n imageSource: this.props.uri,\n });\n }\n // if (event.nativeEvent.source.uri === this.props.uri && !this.state.imageLoaded) {\n // //unblur\n // this.setState({\n // imageLoaded: true,\n // });\n // Animated.sequence([\n // Animated.delay(200),\n // Animated.timing(this.state.blurRadius, {\n // toValue: 0,\n // duration: 500,\n // useNativeDriver: false,\n // }),\n // ]).start();\n // }\n };\n\n positionImage = async () => {\n if (this.state.disabled) {\n return;\n }\n try {\n const startTime = moment().valueOf();\n\n let cachedValues;\n // check local cache\n if (this.props.imagePositions && this.props.imagePositions[this.props.uri]) {\n cachedValues = this.props.imagePositions[this.props.uri];\n }\n // check remote cache\n if (!cachedValues) {\n try {\n const response = await stringActions.getString('plussSpace', `imagefaces_${encodeURIComponent(this.props.uri)}`);\n cachedValues = response.data;\n } catch (e) {\n console.log('errored from cache');\n }\n // run face detection locally\n if (\n !cachedValues ||\n !cachedValues.faces ||\n !cachedValues.image ||\n (_.isEmpty(cachedValues.faces) &&\n moment()\n .add(-1, 'w')\n .valueOf() > moment(cachedValues.timestamp).valueOf())\n ) {\n cachedValues = await detectFaces(this.props.uri);\n }\n this.props.saveImagePosition(this.props.uri, cachedValues);\n }\n\n const image = await findLandmarkRange(this.props.uri, {\n targetWidth: this.props.width,\n targetHeight: this.props.height,\n cachedValues,\n });\n const scaledOffset = getScaledOffset(image.width, image.height, this.props.width, this.props.height);\n\n const { start: landmarkStart, end: landmarkEnd } = image;\n const { bounds: imageBounds, offset, width, height } = scaledOffset;\n\n if (landmarkStart.y < imageBounds.start.y) {\n // move up\n offset.y = -Math.max(landmarkStart.y - this.props.height * this.paddingFactor, 0); // move top to 5% above start of landmark\n } else if (landmarkEnd.y > imageBounds.end.y) {\n // move down\n offset.y = -Math.max(landmarkEnd.y + this.props.height * this.paddingFactor - this.props.height, 0); // move bottom to 5% below end of landmark\n }\n\n if (landmarkStart.x < imageBounds.start.x) {\n // move right\n offset.x = -Math.max(landmarkStart.x - this.props.width * this.paddingFactor, 0); // move left edge to 5% left of start of landmark\n } else if (landmarkEnd.x > imageBounds.end.x) {\n // move left\n offset.x = -Math.max(landmarkEnd.x + this.props.width * this.paddingFactor - this.props.width, 0); // move right edge to 5% left of end of landmark\n }\n\n this.setState({\n imageStyle: {\n width,\n height,\n top: offset.y,\n left: offset.x,\n },\n imageSource: this.props.uri,\n });\n\n const endTime = moment().valueOf();\n if (endTime - startTime < 500) {\n Animated.timing(this.state.blurRadius, {\n toValue: 0,\n duration: 0,\n useNativeDriver: false,\n }).start();\n }\n } catch (e) {\n this.setState({\n imageSource: this.props.uri,\n });\n }\n };\n\n render() {\n if (this.state.disabled) {\n return (\n <Image\n source={{ uri: this.state.imageSource }}\n style={[\n styles.container,\n styles.staticImage,\n {\n width: this.props.width,\n height: this.props.height,\n },\n this.props.style,\n ]}\n onLoad={this.onLoad}\n />\n );\n }\n return (\n <View\n style={[\n styles.container,\n {\n width: this.props.width,\n height: this.props.height,\n },\n this.props.style,\n ]}\n >\n <Animated.Image\n blurRadius={this.state.blurRadius}\n source={{ uri: this.state.imageSource }}\n style={[styles.image, this.state.imageStyle]}\n onLoad={this.onLoad}\n />\n {this.props.children}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n image: {\n position: 'absolute',\n top: 0,\n left: 0,\n resizeMode: 'cover',\n },\n staticImage: {\n resizeMode: 'cover',\n },\n});\n\nconst mapStateToProps = state => {\n return {\n imagePositions: state.media.positions,\n };\n};\n\nconst autoOffsetImage = connect(mapStateToProps, { saveImagePosition })(AutoOffsetImage);\nexport { autoOffsetImage as AutoOffsetImage };\n"]}
@@ -59,6 +59,8 @@ class ImagePopup extends Component {
59
59
  });
60
60
 
61
61
  _defineProperty(this, "renderImage", props => {
62
+ var _media$user, _media$user2;
63
+
62
64
  const media = this.state.images.find(image => image.url === props.source.uri);
63
65
  const isVideo = !_.isNil(media) && media.isVideo;
64
66
  let dateText, timeText;
@@ -81,12 +83,12 @@ class ImagePopup extends Component {
81
83
  style: styles.imageInfoContainer
82
84
  }, /*#__PURE__*/React.createElement(ProfilePic, {
83
85
  Diameter: 42,
84
- ProfilePic: media.user.profilePic
86
+ ProfilePic: media === null || media === void 0 ? void 0 : (_media$user = media.user) === null || _media$user === void 0 ? void 0 : _media$user.profilePic
85
87
  }), /*#__PURE__*/React.createElement(View, {
86
88
  style: styles.imageTextContainer
87
89
  }, /*#__PURE__*/React.createElement(Text, {
88
90
  style: styles.imageTextName
89
- }, media.user.displayName), /*#__PURE__*/React.createElement(Text, {
91
+ }, media === null || media === void 0 ? void 0 : (_media$user2 = media.user) === null || _media$user2 === void 0 ? void 0 : _media$user2.displayName), /*#__PURE__*/React.createElement(Text, {
90
92
  numberOfLines: 2,
91
93
  style: styles.iamgeTextDate
92
94
  }, `Uploaded ${dateText} • ${timeText}`))));
@@ -1 +1 @@
1
- {"version":3,"sources":["ImagePopup.js"],"names":["React","Component","_","moment","Dimensions","Modal","TouchableOpacity","StyleSheet","View","ImageBackground","Text","ImageViewer","Icon","TEXT_DARK","StatusBarHeight","isVideo","get1400","Pl60Icon","SharingTools","VideoPopup","ProfilePic","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","ImagePopup","constructor","props","images","map","image","url","original","uri","date","user","setState","index","state","showFullscreenVideo","length","currentVideoUrl","media","find","source","isNil","dateText","timeText","imageDate","format","styles","videoOverlay","toggleFullscreenVideo","bind","videoPlayIcon","imageInfoContainer","profilePic","imageTextContainer","imageTextName","displayName","iamgeTextDate","componentDidMount","setupUrls","componentDidUpdate","prevProps","visible","scrollTo","renderClose","menuIconContainer","onClose","menuIcon","renderVideoPlayerPopup","render","isEmpty","modal","scrollable","onChange","renderImage","create","backgroundColor","position","top","right","zIndex","fontSize","padding","textAlign","color","left","bottom","alignItems","justifyContent","textShadowColor","textShadowOffset","flexDirection","paddingHorizontal","marginLeft","flex","fontFamily"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { Dimensions, Modal, TouchableOpacity, StyleSheet, View, ImageBackground, Text } from 'react-native';\nimport ImageViewer from 'react-native-image-zoom-viewer';\nimport { Icon } from 'react-native-elements';\nimport { TEXT_DARK } from '../colours';\nimport { StatusBarHeight, isVideo, get1400 } from '../helper';\nimport { Pl60Icon } from '../fonts';\nimport { SharingTools } from './SharingTools';\nimport { VideoPopup } from './VideoPopup';\nimport { ProfilePic } from './ProfilePic';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\n\nclass ImagePopup extends Component {\n constructor(props) {\n super(props);\n this.state = {\n index: 0,\n images: [],\n showFullscreenVideo: false,\n currentVideoUrl: '',\n };\n }\n\n componentDidMount() {\n this.setupUrls();\n }\n\n componentDidUpdate(prevProps) {\n const { visible, index } = this.props;\n if (!prevProps.visible && visible) this.setupUrls();\n if (prevProps.index !== index) this.setState({ index });\n }\n\n setupUrls = () => {\n if (!this.props.images) return;\n\n const images = this.props.images.map(image => {\n if (typeof image === 'string') {\n return { url: get1400(image), original: image, isVideo: isVideo(image) };\n }\n return { url: get1400(image?.uri), original: image?.uri, isVideo: isVideo(image?.uri), date: image?.date, user: image?.user };\n });\n\n this.setState({ images, index: this.state.index || this.props.index || 0 });\n };\n\n onChange = index => {\n this.setState({ index });\n };\n\n scrollTo(index) {\n this.setState({\n index,\n });\n }\n\n toggleFullscreenVideo = url => {\n if (typeof url !== 'string') url = '';\n this.setState({ showFullscreenVideo: url.length > 0, currentVideoUrl: url });\n };\n\n renderClose() {\n return (\n <TouchableOpacity style={styles.menuIconContainer} onPress={this.props.onClose} activeOpacity={0.6}>\n <Pl60Icon name=\"close\" style={[styles.menuIcon]} />\n </TouchableOpacity>\n );\n }\n\n renderImage = props => {\n const media = this.state.images.find(image => image.url === props.source.uri);\n const isVideo = !_.isNil(media) && media.isVideo;\n\n let dateText, timeText;\n if (!_.isNil(media.date)) {\n const imageDate = moment(media.date);\n dateText = imageDate.format('MMMM D, YYYY');\n timeText = imageDate.format('hh:mm A');\n }\n\n return (\n <View>\n <ImageBackground {...props}>\n {isVideo && (\n <View style={styles.videoOverlay}>\n <TouchableOpacity onPress={this.toggleFullscreenVideo.bind(this, media.original)}>\n <Icon name=\"play\" type=\"font-awesome\" iconStyle={styles.videoPlayIcon} />\n </TouchableOpacity>\n </View>\n )}\n </ImageBackground>\n {(!_.isNil(media.user) || !_.isNil(media.date)) && (\n <View style={styles.imageInfoContainer}>\n <ProfilePic Diameter={42} ProfilePic={media.user.profilePic} />\n <View style={styles.imageTextContainer}>\n <Text style={styles.imageTextName}>{media.user.displayName}</Text>\n <Text numberOfLines={2} style={styles.iamgeTextDate}>{`Uploaded ${dateText} • ${timeText}`}</Text>\n </View>\n </View>\n )}\n </View>\n );\n };\n\n renderVideoPlayerPopup() {\n const { showFullscreenVideo, currentVideoUrl } = this.state;\n if (!currentVideoUrl) return;\n\n return <VideoPopup uri={currentVideoUrl} visible={showFullscreenVideo} onClose={this.toggleFullscreenVideo} />;\n }\n\n render() {\n const { visible, onClose } = this.props;\n const { index, images } = this.state;\n\n if (_.isEmpty(images)) {\n return null;\n }\n return (\n <Modal visible={visible} animationType=\"slide\" onRequestClose={onClose} style={styles.modal}>\n <ImageViewer\n style={styles.scrollable}\n index={index}\n onChange={this.onChange}\n onSwipeDown={onClose}\n enableSwipeDown\n imageUrls={images}\n saveToLocalByLongPress={false}\n renderImage={this.renderImage}\n />\n {this.renderClose()}\n <SharingTools uri={images[index].original} />\n {this.renderVideoPlayerPopup()}\n </Modal>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n modal: {\n backgroundColor: '#000',\n },\n scrollable: {\n width: SCREEN_WIDTH,\n height: SCREEN_HEIGHT,\n backgroundColor: '#000',\n },\n image: {\n width: SCREEN_WIDTH,\n height: SCREEN_HEIGHT,\n backgroundColor: '#000',\n },\n menuIconContainer: {\n position: 'absolute',\n top: StatusBarHeight(0),\n right: 0,\n width: 55,\n height: 55,\n zIndex: 3,\n },\n menuIcon: {\n fontSize: 25,\n padding: 15,\n width: 55,\n textAlign: 'center',\n color: '#fff',\n zIndex: 3,\n },\n videoOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n },\n videoPlayIcon: {\n color: '#fff',\n fontSize: 30,\n textShadowColor: 'rgba(0,0,0,0.3)',\n textShadowOffset: { width: 2, height: 2 },\n },\n imageInfoContainer: {\n flexDirection: 'row',\n paddingHorizontal: 12,\n height: 70,\n backgroundColor: '#fff',\n alignItems: 'center',\n },\n imageTextContainer: {\n marginLeft: 12,\n flexDirection: 'column',\n flex: 1,\n height: 42,\n justifyContent: 'space-around',\n },\n imageTextName: {\n fontFamily: 'sf-semibold',\n fontSize: 14,\n color: TEXT_DARK,\n },\n iamgeTextDate: {\n fontFamily: 'sf-regular',\n fontSize: 12,\n color: TEXT_DARK,\n },\n});\n\nexport { ImagePopup };\n"]}
1
+ {"version":3,"sources":["ImagePopup.js"],"names":["React","Component","_","moment","Dimensions","Modal","TouchableOpacity","StyleSheet","View","ImageBackground","Text","ImageViewer","Icon","TEXT_DARK","StatusBarHeight","isVideo","get1400","Pl60Icon","SharingTools","VideoPopup","ProfilePic","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","ImagePopup","constructor","props","images","map","image","url","original","uri","date","user","setState","index","state","showFullscreenVideo","length","currentVideoUrl","media","find","source","isNil","dateText","timeText","imageDate","format","styles","videoOverlay","toggleFullscreenVideo","bind","videoPlayIcon","imageInfoContainer","profilePic","imageTextContainer","imageTextName","displayName","iamgeTextDate","componentDidMount","setupUrls","componentDidUpdate","prevProps","visible","scrollTo","renderClose","menuIconContainer","onClose","menuIcon","renderVideoPlayerPopup","render","isEmpty","modal","scrollable","onChange","renderImage","create","backgroundColor","position","top","right","zIndex","fontSize","padding","textAlign","color","left","bottom","alignItems","justifyContent","textShadowColor","textShadowOffset","flexDirection","paddingHorizontal","marginLeft","flex","fontFamily"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { Dimensions, Modal, TouchableOpacity, StyleSheet, View, ImageBackground, Text } from 'react-native';\nimport ImageViewer from 'react-native-image-zoom-viewer';\nimport { Icon } from 'react-native-elements';\nimport { TEXT_DARK } from '../colours';\nimport { StatusBarHeight, isVideo, get1400 } from '../helper';\nimport { Pl60Icon } from '../fonts';\nimport { SharingTools } from './SharingTools';\nimport { VideoPopup } from './VideoPopup';\nimport { ProfilePic } from './ProfilePic';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\n\nclass ImagePopup extends Component {\n constructor(props) {\n super(props);\n this.state = {\n index: 0,\n images: [],\n showFullscreenVideo: false,\n currentVideoUrl: '',\n };\n }\n\n componentDidMount() {\n this.setupUrls();\n }\n\n componentDidUpdate(prevProps) {\n const { visible, index } = this.props;\n if (!prevProps.visible && visible) this.setupUrls();\n if (prevProps.index !== index) this.setState({ index });\n }\n\n setupUrls = () => {\n if (!this.props.images) return;\n\n const images = this.props.images.map(image => {\n if (typeof image === 'string') {\n return { url: get1400(image), original: image, isVideo: isVideo(image) };\n }\n return { url: get1400(image?.uri), original: image?.uri, isVideo: isVideo(image?.uri), date: image?.date, user: image?.user };\n });\n\n this.setState({ images, index: this.state.index || this.props.index || 0 });\n };\n\n onChange = index => {\n this.setState({ index });\n };\n\n scrollTo(index) {\n this.setState({\n index,\n });\n }\n\n toggleFullscreenVideo = url => {\n if (typeof url !== 'string') url = '';\n this.setState({ showFullscreenVideo: url.length > 0, currentVideoUrl: url });\n };\n\n renderClose() {\n return (\n <TouchableOpacity style={styles.menuIconContainer} onPress={this.props.onClose} activeOpacity={0.6}>\n <Pl60Icon name=\"close\" style={[styles.menuIcon]} />\n </TouchableOpacity>\n );\n }\n\n renderImage = props => {\n const media = this.state.images.find(image => image.url === props.source.uri);\n const isVideo = !_.isNil(media) && media.isVideo;\n\n let dateText, timeText;\n if (!_.isNil(media.date)) {\n const imageDate = moment(media.date);\n dateText = imageDate.format('MMMM D, YYYY');\n timeText = imageDate.format('hh:mm A');\n }\n\n return (\n <View>\n <ImageBackground {...props}>\n {isVideo && (\n <View style={styles.videoOverlay}>\n <TouchableOpacity onPress={this.toggleFullscreenVideo.bind(this, media.original)}>\n <Icon name=\"play\" type=\"font-awesome\" iconStyle={styles.videoPlayIcon} />\n </TouchableOpacity>\n </View>\n )}\n </ImageBackground>\n {(!_.isNil(media.user) || !_.isNil(media.date)) && (\n <View style={styles.imageInfoContainer}>\n <ProfilePic Diameter={42} ProfilePic={media?.user?.profilePic} />\n <View style={styles.imageTextContainer}>\n <Text style={styles.imageTextName}>{media?.user?.displayName}</Text>\n <Text numberOfLines={2} style={styles.iamgeTextDate}>{`Uploaded ${dateText} • ${timeText}`}</Text>\n </View>\n </View>\n )}\n </View>\n );\n };\n\n renderVideoPlayerPopup() {\n const { showFullscreenVideo, currentVideoUrl } = this.state;\n if (!currentVideoUrl) return;\n\n return <VideoPopup uri={currentVideoUrl} visible={showFullscreenVideo} onClose={this.toggleFullscreenVideo} />;\n }\n\n render() {\n const { visible, onClose } = this.props;\n const { index, images } = this.state;\n\n if (_.isEmpty(images)) {\n return null;\n }\n return (\n <Modal visible={visible} animationType=\"slide\" onRequestClose={onClose} style={styles.modal}>\n <ImageViewer\n style={styles.scrollable}\n index={index}\n onChange={this.onChange}\n onSwipeDown={onClose}\n enableSwipeDown\n imageUrls={images}\n saveToLocalByLongPress={false}\n renderImage={this.renderImage}\n />\n {this.renderClose()}\n <SharingTools uri={images[index].original} />\n {this.renderVideoPlayerPopup()}\n </Modal>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n modal: {\n backgroundColor: '#000',\n },\n scrollable: {\n width: SCREEN_WIDTH,\n height: SCREEN_HEIGHT,\n backgroundColor: '#000',\n },\n image: {\n width: SCREEN_WIDTH,\n height: SCREEN_HEIGHT,\n backgroundColor: '#000',\n },\n menuIconContainer: {\n position: 'absolute',\n top: StatusBarHeight(0),\n right: 0,\n width: 55,\n height: 55,\n zIndex: 3,\n },\n menuIcon: {\n fontSize: 25,\n padding: 15,\n width: 55,\n textAlign: 'center',\n color: '#fff',\n zIndex: 3,\n },\n videoOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n },\n videoPlayIcon: {\n color: '#fff',\n fontSize: 30,\n textShadowColor: 'rgba(0,0,0,0.3)',\n textShadowOffset: { width: 2, height: 2 },\n },\n imageInfoContainer: {\n flexDirection: 'row',\n paddingHorizontal: 12,\n height: 70,\n backgroundColor: '#fff',\n alignItems: 'center',\n },\n imageTextContainer: {\n marginLeft: 12,\n flexDirection: 'column',\n flex: 1,\n height: 42,\n justifyContent: 'space-around',\n },\n imageTextName: {\n fontFamily: 'sf-semibold',\n fontSize: 14,\n color: TEXT_DARK,\n },\n iamgeTextDate: {\n fontFamily: 'sf-regular',\n fontSize: 12,\n color: TEXT_DARK,\n },\n});\n\nexport { ImagePopup };\n"]}
@@ -4,10 +4,9 @@ import React, { Component } from 'react';
4
4
  import { View, Text, TouchableOpacity, Modal, Dimensions } from 'react-native';
5
5
  import { Icon } from 'react-native-elements';
6
6
  import { WebView } from 'react-native-webview';
7
- import * as FileSystem from 'expo-file-system';
8
7
  import { Pl60Icon } from '../fonts';
9
8
  import { Spinner } from './Spinner';
10
- import { StatusBarHeight, getFileName } from '../helper';
9
+ import { StatusBarHeight } from '../helper';
11
10
  const SCREEN_HEIGHT = Dimensions.get('window').height;
12
11
 
13
12
  class PDFPopup extends Component {
@@ -17,20 +16,6 @@ class PDFPopup extends Component {
17
16
  _defineProperty(this, "state", {
18
17
  loaded: false
19
18
  });
20
-
21
- _defineProperty(this, "download", () => {
22
- console.log('attempting download');
23
- console.log(this.props.source);
24
- console.log(FileSystem.documentDirectory);
25
- console.log(getFileName(this.props.source));
26
- FileSystem.downloadAsync(this.props.source, FileSystem.documentDirectory + getFileName(this.props.source)).then(res => {
27
- console.log('success');
28
- console.log(res);
29
- }).catch(e => {
30
- console.log('error');
31
- console.log(e);
32
- });
33
- });
34
19
  }
35
20
 
36
21
  onLoadStarted() {
@@ -112,14 +97,7 @@ class PDFPopup extends Component {
112
97
  style: styles.titleContainer
113
98
  }, /*#__PURE__*/React.createElement(Text, {
114
99
  style: styles.title
115
- }, this.props.title)), /*#__PURE__*/React.createElement(TouchableOpacity, {
116
- onPress: this.download,
117
- activeOpacity: 0.6
118
- }, /*#__PURE__*/React.createElement(Icon, {
119
- type: "font-awesome",
120
- name: "cloud-download",
121
- iconStyle: [styles.menuIcon]
122
- }))), /*#__PURE__*/React.createElement(View, {
100
+ }, this.props.title))), /*#__PURE__*/React.createElement(View, {
123
101
  style: {
124
102
  flex: 1,
125
103
  backgroundColor: '#fff'
@@ -174,7 +152,8 @@ const styles = {
174
152
  height: 70
175
153
  },
176
154
  titleContainer: {
177
- flex: 1
155
+ flex: 1,
156
+ paddingRight: 55
178
157
  },
179
158
  title: {
180
159
  color: '#fff',
@@ -1 +1 @@
1
- {"version":3,"sources":["PDFPopup.js"],"names":["React","Component","View","Text","TouchableOpacity","Modal","Dimensions","Icon","WebView","FileSystem","Pl60Icon","Spinner","StatusBarHeight","getFileName","SCREEN_HEIGHT","get","height","PDFPopup","loaded","console","log","props","source","documentDirectory","downloadAsync","then","res","catch","e","onLoadStarted","setState","onLoadEnded","onChangeIndex","index","getUrl","linkPrefix","closePopup","onClose","renderFooter","pdfCount","styles","footerContent","bind","chevron","footerText","selectedIndex","render","visible","flex","backgroundColor","paddingTop","headerContent","menuIcon","titleContainer","title","download","state","uri","container","position","innerContainer","paddingLeft","paddingRight","fontSize","padding","width","textAlign","color","zIndex","flexDirection","alignItems","fontFamily","justifyContent"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableOpacity, Modal, Dimensions } from 'react-native';\nimport { Icon } from 'react-native-elements';\nimport { WebView } from 'react-native-webview';\nimport * as FileSystem from 'expo-file-system';\nimport { Pl60Icon } from '../fonts';\nimport { Spinner } from './Spinner';\nimport { StatusBarHeight, getFileName } from '../helper';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\n\nclass PDFPopup extends Component {\n state = {\n loaded: false,\n };\n\n onLoadStarted() {\n this.setState({\n loaded: false,\n });\n }\n\n onLoadEnded() {\n this.setState({\n loaded: true,\n });\n }\n\n onChangeIndex(index) {\n this.props.onChangeIndex(index);\n }\n\n getUrl() {\n const linkPrefix = 'http://drive.google.com/viewerng/viewer?embedded=true&url=';\n return `${linkPrefix}${this.props.source}`;\n }\n\n download = () => {\n console.log('attempting download');\n console.log(this.props.source);\n console.log(FileSystem.documentDirectory);\n console.log(getFileName(this.props.source));\n FileSystem.downloadAsync(this.props.source, FileSystem.documentDirectory + getFileName(this.props.source))\n .then(res => {\n console.log('success');\n console.log(res);\n })\n .catch(e => {\n console.log('error');\n console.log(e);\n });\n };\n\n closePopup() {\n this.props.onClose();\n }\n\n renderFooter() {\n if (this.props.pdfCount && this.props.pdfCount === 1) {\n return null;\n }\n return (\n <View style={styles.footerContent}>\n <TouchableOpacity onPress={this.onChangeIndex.bind(this, -1)} activeOpacity={0.6}>\n <Icon type=\"font-awesome\" name=\"angle-left\" iconStyle={[styles.chevron]} />\n </TouchableOpacity>\n <Text style={styles.footerText}>\n {this.props.selectedIndex + 1} / {this.props.pdfCount}\n </Text>\n <TouchableOpacity onPress={this.onChangeIndex.bind(this, 1)} activeOpacity={0.6}>\n <Icon type=\"font-awesome\" name=\"angle-right\" iconStyle={[styles.chevron]} />\n </TouchableOpacity>\n </View>\n );\n }\n\n render() {\n if (!this.props.source) {\n return null;\n }\n return (\n <Modal visible={this.props.visible} transparent animationType=\"slide\" onRequestClose={this.closePopup.bind(this)}>\n <View\n style={{\n flex: 1,\n backgroundColor: '#000',\n paddingTop: StatusBarHeight(0),\n }}\n >\n <View style={styles.headerContent}>\n <TouchableOpacity onPress={this.closePopup.bind(this)} activeOpacity={0.6}>\n <Pl60Icon name=\"close\" style={[styles.menuIcon]} />\n </TouchableOpacity>\n <View style={styles.titleContainer}>\n <Text style={styles.title}>{this.props.title}</Text>\n </View>\n <TouchableOpacity onPress={this.download} activeOpacity={0.6}>\n <Icon type=\"font-awesome\" name=\"cloud-download\" iconStyle={[styles.menuIcon]} />\n </TouchableOpacity>\n </View>\n <View style={{ flex: 1, backgroundColor: '#fff' }}>\n {this.state.loaded ? null : <Spinner style={{ height: SCREEN_HEIGHT - StatusBarHeight(145), flex: 0 }} />}\n <WebView\n ref=\"PDFWebView\"\n source={{\n uri: this.getUrl(),\n }}\n renderError={e => {\n console.log('errored');\n console.log(e);\n }}\n style={[\n {\n flex: 1,\n backgroundColor: '#fff',\n },\n ]}\n onLoadStart={this.onLoadStarted.bind(this)}\n onLoadEnd={this.onLoadEnded.bind(this)}\n />\n </View>\n {this.renderFooter()}\n </View>\n </Modal>\n );\n }\n}\n\nconst styles = {\n container: {\n flex: 1,\n position: 'relative',\n backgroundColor: '#000',\n },\n innerContainer: {\n flex: 1,\n paddingLeft: 15,\n paddingRight: 15,\n },\n menuIcon: {\n fontSize: 25,\n padding: 15,\n width: 55,\n textAlign: 'center',\n color: '#fff',\n zIndex: 3,\n },\n headerContent: {\n flexDirection: 'row',\n alignItems: 'center',\n height: 70,\n },\n titleContainer: {\n flex: 1,\n },\n title: {\n color: '#fff',\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n },\n footerContent: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n height: 70,\n //alignSelf: 'flex-end'\n },\n chevron: {\n fontSize: 25,\n padding: 15,\n width: 55,\n textAlign: 'center',\n color: '#fff',\n zIndex: 3,\n },\n footerText: {\n fontFamily: 'sf-regular',\n fontSize: 14,\n color: '#fff',\n width: 150,\n textAlign: 'center',\n },\n};\n\nexport { PDFPopup };\n"]}
1
+ {"version":3,"sources":["PDFPopup.js"],"names":["React","Component","View","Text","TouchableOpacity","Modal","Dimensions","Icon","WebView","Pl60Icon","Spinner","StatusBarHeight","SCREEN_HEIGHT","get","height","PDFPopup","loaded","onLoadStarted","setState","onLoadEnded","onChangeIndex","index","props","getUrl","linkPrefix","source","closePopup","onClose","renderFooter","pdfCount","styles","footerContent","bind","chevron","footerText","selectedIndex","render","visible","flex","backgroundColor","paddingTop","headerContent","menuIcon","titleContainer","title","state","uri","e","console","log","container","position","innerContainer","paddingLeft","paddingRight","fontSize","padding","width","textAlign","color","zIndex","flexDirection","alignItems","fontFamily","justifyContent"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableOpacity, Modal, Dimensions } from 'react-native';\nimport { Icon } from 'react-native-elements';\nimport { WebView } from 'react-native-webview';\nimport { Pl60Icon } from '../fonts';\nimport { Spinner } from './Spinner';\nimport { StatusBarHeight } from '../helper';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\n\nclass PDFPopup extends Component {\n state = {\n loaded: false,\n };\n\n onLoadStarted() {\n this.setState({\n loaded: false,\n });\n }\n\n onLoadEnded() {\n this.setState({\n loaded: true,\n });\n }\n\n onChangeIndex(index) {\n this.props.onChangeIndex(index);\n }\n\n getUrl() {\n const linkPrefix = 'http://drive.google.com/viewerng/viewer?embedded=true&url=';\n return `${linkPrefix}${this.props.source}`;\n }\n\n closePopup() {\n this.props.onClose();\n }\n\n renderFooter() {\n if (this.props.pdfCount && this.props.pdfCount === 1) {\n return null;\n }\n return (\n <View style={styles.footerContent}>\n <TouchableOpacity onPress={this.onChangeIndex.bind(this, -1)} activeOpacity={0.6}>\n <Icon type=\"font-awesome\" name=\"angle-left\" iconStyle={[styles.chevron]} />\n </TouchableOpacity>\n <Text style={styles.footerText}>\n {this.props.selectedIndex + 1} / {this.props.pdfCount}\n </Text>\n <TouchableOpacity onPress={this.onChangeIndex.bind(this, 1)} activeOpacity={0.6}>\n <Icon type=\"font-awesome\" name=\"angle-right\" iconStyle={[styles.chevron]} />\n </TouchableOpacity>\n </View>\n );\n }\n\n render() {\n if (!this.props.source) {\n return null;\n }\n return (\n <Modal visible={this.props.visible} transparent animationType=\"slide\" onRequestClose={this.closePopup.bind(this)}>\n <View\n style={{\n flex: 1,\n backgroundColor: '#000',\n paddingTop: StatusBarHeight(0),\n }}\n >\n <View style={styles.headerContent}>\n <TouchableOpacity onPress={this.closePopup.bind(this)} activeOpacity={0.6}>\n <Pl60Icon name=\"close\" style={[styles.menuIcon]} />\n </TouchableOpacity>\n <View style={styles.titleContainer}>\n <Text style={styles.title}>{this.props.title}</Text>\n </View>\n </View>\n <View style={{ flex: 1, backgroundColor: '#fff' }}>\n {this.state.loaded ? null : <Spinner style={{ height: SCREEN_HEIGHT - StatusBarHeight(145), flex: 0 }} />}\n <WebView\n ref=\"PDFWebView\"\n source={{\n uri: this.getUrl(),\n }}\n renderError={e => {\n console.log('errored');\n console.log(e);\n }}\n style={[\n {\n flex: 1,\n backgroundColor: '#fff',\n },\n ]}\n onLoadStart={this.onLoadStarted.bind(this)}\n onLoadEnd={this.onLoadEnded.bind(this)}\n />\n </View>\n {this.renderFooter()}\n </View>\n </Modal>\n );\n }\n}\n\nconst styles = {\n container: {\n flex: 1,\n position: 'relative',\n backgroundColor: '#000',\n },\n innerContainer: {\n flex: 1,\n paddingLeft: 15,\n paddingRight: 15,\n },\n menuIcon: {\n fontSize: 25,\n padding: 15,\n width: 55,\n textAlign: 'center',\n color: '#fff',\n zIndex: 3,\n },\n headerContent: {\n flexDirection: 'row',\n alignItems: 'center',\n height: 70,\n },\n titleContainer: {\n flex: 1,\n paddingRight: 55,\n },\n title: {\n color: '#fff',\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n },\n footerContent: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n height: 70,\n //alignSelf: 'flex-end'\n },\n chevron: {\n fontSize: 25,\n padding: 15,\n width: 55,\n textAlign: 'center',\n color: '#fff',\n zIndex: 3,\n },\n footerText: {\n fontFamily: 'sf-regular',\n fontSize: 14,\n color: '#fff',\n width: 150,\n textAlign: 'center',\n },\n};\n\nexport { PDFPopup };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-core-app",
3
- "version": "1.8.2-beta.0",
3
+ "version": "1.8.3",
4
4
  "description": "Core extension package for Pluss Communities platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
@@ -1,5 +1,5 @@
1
1
  import React, { Component } from 'react';
2
- import { View, Animated, StyleSheet } from 'react-native';
2
+ import { View, Image, Animated, StyleSheet } from 'react-native';
3
3
  import { connect } from 'react-redux';
4
4
  import moment from 'moment';
5
5
  import { findLandmarkRange, getScaledOffset, get300, detectFaces } from '../helper';
@@ -18,6 +18,7 @@ class AutoOffsetImage extends Component {
18
18
  },
19
19
  blurRadius: new Animated.Value(100),
20
20
  imageSource: get300(this.props.uri),
21
+ disabled: true,
21
22
  };
22
23
  }
23
24
 
@@ -32,23 +33,31 @@ class AutoOffsetImage extends Component {
32
33
  }
33
34
 
34
35
  onLoad = event => {
35
- if (event.nativeEvent.source.uri === this.props.uri && !this.state.imageLoaded) {
36
- //unblur
36
+ if (event.nativeEvent.source.uri !== this.props.uri) {
37
37
  this.setState({
38
- imageLoaded: true,
38
+ imageSource: this.props.uri,
39
39
  });
40
- Animated.sequence([
41
- Animated.delay(200),
42
- Animated.timing(this.state.blurRadius, {
43
- toValue: 0,
44
- duration: 500,
45
- useNativeDriver: false,
46
- }),
47
- ]).start();
48
40
  }
41
+ // if (event.nativeEvent.source.uri === this.props.uri && !this.state.imageLoaded) {
42
+ // //unblur
43
+ // this.setState({
44
+ // imageLoaded: true,
45
+ // });
46
+ // Animated.sequence([
47
+ // Animated.delay(200),
48
+ // Animated.timing(this.state.blurRadius, {
49
+ // toValue: 0,
50
+ // duration: 500,
51
+ // useNativeDriver: false,
52
+ // }),
53
+ // ]).start();
54
+ // }
49
55
  };
50
56
 
51
57
  positionImage = async () => {
58
+ if (this.state.disabled) {
59
+ return;
60
+ }
52
61
  try {
53
62
  const startTime = moment().valueOf();
54
63
 
@@ -132,6 +141,23 @@ class AutoOffsetImage extends Component {
132
141
  };
133
142
 
134
143
  render() {
144
+ if (this.state.disabled) {
145
+ return (
146
+ <Image
147
+ source={{ uri: this.state.imageSource }}
148
+ style={[
149
+ styles.container,
150
+ styles.staticImage,
151
+ {
152
+ width: this.props.width,
153
+ height: this.props.height,
154
+ },
155
+ this.props.style,
156
+ ]}
157
+ onLoad={this.onLoad}
158
+ />
159
+ );
160
+ }
135
161
  return (
136
162
  <View
137
163
  style={[
@@ -165,6 +191,9 @@ const styles = StyleSheet.create({
165
191
  left: 0,
166
192
  resizeMode: 'cover',
167
193
  },
194
+ staticImage: {
195
+ resizeMode: 'cover',
196
+ },
168
197
  });
169
198
 
170
199
  const mapStateToProps = state => {
@@ -95,9 +95,9 @@ class ImagePopup extends Component {
95
95
  </ImageBackground>
96
96
  {(!_.isNil(media.user) || !_.isNil(media.date)) && (
97
97
  <View style={styles.imageInfoContainer}>
98
- <ProfilePic Diameter={42} ProfilePic={media.user.profilePic} />
98
+ <ProfilePic Diameter={42} ProfilePic={media?.user?.profilePic} />
99
99
  <View style={styles.imageTextContainer}>
100
- <Text style={styles.imageTextName}>{media.user.displayName}</Text>
100
+ <Text style={styles.imageTextName}>{media?.user?.displayName}</Text>
101
101
  <Text numberOfLines={2} style={styles.iamgeTextDate}>{`Uploaded ${dateText} • ${timeText}`}</Text>
102
102
  </View>
103
103
  </View>
@@ -2,10 +2,9 @@ import React, { Component } from 'react';
2
2
  import { View, Text, TouchableOpacity, Modal, Dimensions } from 'react-native';
3
3
  import { Icon } from 'react-native-elements';
4
4
  import { WebView } from 'react-native-webview';
5
- import * as FileSystem from 'expo-file-system';
6
5
  import { Pl60Icon } from '../fonts';
7
6
  import { Spinner } from './Spinner';
8
- import { StatusBarHeight, getFileName } from '../helper';
7
+ import { StatusBarHeight } from '../helper';
9
8
 
10
9
  const SCREEN_HEIGHT = Dimensions.get('window').height;
11
10
 
@@ -35,22 +34,6 @@ class PDFPopup extends Component {
35
34
  return `${linkPrefix}${this.props.source}`;
36
35
  }
37
36
 
38
- download = () => {
39
- console.log('attempting download');
40
- console.log(this.props.source);
41
- console.log(FileSystem.documentDirectory);
42
- console.log(getFileName(this.props.source));
43
- FileSystem.downloadAsync(this.props.source, FileSystem.documentDirectory + getFileName(this.props.source))
44
- .then(res => {
45
- console.log('success');
46
- console.log(res);
47
- })
48
- .catch(e => {
49
- console.log('error');
50
- console.log(e);
51
- });
52
- };
53
-
54
37
  closePopup() {
55
38
  this.props.onClose();
56
39
  }
@@ -94,9 +77,6 @@ class PDFPopup extends Component {
94
77
  <View style={styles.titleContainer}>
95
78
  <Text style={styles.title}>{this.props.title}</Text>
96
79
  </View>
97
- <TouchableOpacity onPress={this.download} activeOpacity={0.6}>
98
- <Icon type="font-awesome" name="cloud-download" iconStyle={[styles.menuIcon]} />
99
- </TouchableOpacity>
100
80
  </View>
101
81
  <View style={{ flex: 1, backgroundColor: '#fff' }}>
102
82
  {this.state.loaded ? null : <Spinner style={{ height: SCREEN_HEIGHT - StatusBarHeight(145), flex: 0 }} />}
@@ -152,6 +132,7 @@ const styles = {
152
132
  },
153
133
  titleContainer: {
154
134
  flex: 1,
135
+ paddingRight: 55,
155
136
  },
156
137
  title: {
157
138
  color: '#fff',