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

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.
@@ -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,9 +4,11 @@ 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
+ import * as Sharing from 'expo-sharing';
7
9
  import { Pl60Icon } from '../fonts';
8
10
  import { Spinner } from './Spinner';
9
- import { StatusBarHeight } from '../helper';
11
+ import { StatusBarHeight, getFileName } from '../helper';
10
12
  const SCREEN_HEIGHT = Dimensions.get('window').height;
11
13
 
12
14
  class PDFPopup extends Component {
@@ -16,6 +18,13 @@ class PDFPopup extends Component {
16
18
  _defineProperty(this, "state", {
17
19
  loaded: false
18
20
  });
21
+
22
+ _defineProperty(this, "download", async () => {
23
+ const downloadedFile = await FileSystem.downloadAsync(this.props.source, FileSystem.documentDirectory + getFileName(this.props.source));
24
+ const shareResult = await Sharing.shareAsync(downloadedFile.uri, {
25
+ UTI: 'public.item'
26
+ });
27
+ });
19
28
  }
20
29
 
21
30
  onLoadStarted() {
@@ -97,7 +106,14 @@ class PDFPopup extends Component {
97
106
  style: styles.titleContainer
98
107
  }, /*#__PURE__*/React.createElement(Text, {
99
108
  style: styles.title
100
- }, this.props.title))), /*#__PURE__*/React.createElement(View, {
109
+ }, this.props.title)), /*#__PURE__*/React.createElement(TouchableOpacity, {
110
+ onPress: this.download,
111
+ activeOpacity: 0.6
112
+ }, /*#__PURE__*/React.createElement(Icon, {
113
+ type: "font-awesome",
114
+ name: "cloud-download",
115
+ iconStyle: [styles.menuIcon]
116
+ }))), /*#__PURE__*/React.createElement(View, {
101
117
  style: {
102
118
  flex: 1,
103
119
  backgroundColor: '#fff'
@@ -152,8 +168,7 @@ const styles = {
152
168
  height: 70
153
169
  },
154
170
  titleContainer: {
155
- flex: 1,
156
- paddingRight: 55
171
+ flex: 1
157
172
  },
158
173
  title: {
159
174
  color: '#fff',
@@ -1 +1 @@
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"]}
1
+ {"version":3,"sources":["PDFPopup.js"],"names":["React","Component","View","Text","TouchableOpacity","Modal","Dimensions","Icon","WebView","FileSystem","Sharing","Pl60Icon","Spinner","StatusBarHeight","getFileName","SCREEN_HEIGHT","get","height","PDFPopup","loaded","downloadedFile","downloadAsync","props","source","documentDirectory","shareResult","shareAsync","uri","UTI","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","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 * as FileSystem from 'expo-file-system';\nimport * as Sharing from 'expo-sharing';\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 = async () => {\n const downloadedFile = await FileSystem.downloadAsync(this.props.source, FileSystem.documentDirectory + getFileName(this.props.source));\n const shareResult = await Sharing.shareAsync(downloadedFile.uri, { UTI: 'public.item' });\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"]}
@@ -16,6 +16,7 @@ import PlussChatTime from './PlussChatTime';
16
16
  import { PDFPopup } from './PDFPopup';
17
17
  import { Attachment } from './Attachment';
18
18
  import PlussChatMessage from './PlussChatMessage';
19
+ import { TextStyle } from './TextStyle';
19
20
  import { TEXT_DARK, LINEGREY, TEXT_DARKEST, getMainBrandingColourFromState, getLightBrandingColourFromState, BG_GREY, TEXT_BLUEGREY } from '../colours';
20
21
  import { getEnabledTabsFromState, get1400, getThumb300, imageExists, isVideo, getImageSource, getFileName } from '../helper';
21
22
  import Config, { Services } from '../config';
@@ -211,6 +212,12 @@ class PlussChat extends Component {
211
212
  });
212
213
  });
213
214
 
215
+ _defineProperty(this, "onReply", message => {
216
+ this.setState({
217
+ replyingTo: message
218
+ });
219
+ });
220
+
214
221
  _defineProperty(this, "onRemoveImage", url => {
215
222
  const imagesToUpload = this.state.imagesToUpload.filter(image => image.url !== url);
216
223
  this.setState({
@@ -302,9 +309,15 @@ class PlussChat extends Component {
302
309
  }
303
310
 
304
311
  if (!messages[0].text && !messages[0].image) return;
312
+
313
+ if (this.state.replyingTo) {
314
+ messages[0].replyingTo = this.state.replyingTo;
315
+ }
316
+
305
317
  this.props.onSend(messages);
306
318
  this.setState({
307
- imagesToUpload: []
319
+ imagesToUpload: [],
320
+ replyingTo: null
308
321
  });
309
322
  }
310
323
  /**
@@ -364,7 +377,11 @@ class PlussChat extends Component {
364
377
 
365
378
  renderMessage(props) {
366
379
  return /*#__PURE__*/React.createElement(PlussChatMessage, _extends({
367
- key: props.RowId
380
+ key: props.RowId,
381
+ colourBrandingMain: this.props.colourBrandingMain,
382
+ onPressReply: () => {
383
+ this.onReply(props.currentMessage);
384
+ }
368
385
  }, props));
369
386
  }
370
387
 
@@ -536,11 +553,13 @@ class PlussChat extends Component {
536
553
 
537
554
  renderSend(props) {
538
555
  return /*#__PURE__*/React.createElement(View, {
539
- style: {
556
+ style: [{
540
557
  position: 'absolute',
541
558
  top: 0,
542
559
  right: 0
543
- }
560
+ }, !!this.state.replyingTo && {
561
+ marginTop: 38
562
+ }]
544
563
  }, (!_.isEmpty(props.text) || this.hasImagesReady(props.imagesToUpload)) && /*#__PURE__*/React.createElement(Send, _extends({}, props, {
545
564
  alwaysShowSend: true,
546
565
  containerStyle: [styles.sendContainer, {
@@ -628,19 +647,23 @@ class PlussChat extends Component {
628
647
  }
629
648
 
630
649
  renderInputToolbar(props) {
650
+ let toolbar;
651
+
631
652
  if (!this.hasImagesAttached(props.imagesToUpload)) {
632
- return /*#__PURE__*/React.createElement(InputToolbar, _extends({}, props, {
653
+ toolbar = /*#__PURE__*/React.createElement(InputToolbar, _extends({}, props, {
633
654
  containerStyle: styles.inputContainer,
634
655
  renderComposer: this.renderComposer.bind(this)
635
656
  }));
657
+ } else {
658
+ toolbar = /*#__PURE__*/React.createElement(InputToolbar, _extends({}, props, {
659
+ containerStyle: styles.inputContainer,
660
+ renderComposer: this.renderComposer.bind(this),
661
+ renderAccessory: this.renderAccessory.bind(this),
662
+ accessoryStyle: styles.accessory
663
+ }));
636
664
  }
637
665
 
638
- return /*#__PURE__*/React.createElement(InputToolbar, _extends({}, props, {
639
- containerStyle: styles.inputContainer,
640
- renderComposer: this.renderComposer.bind(this),
641
- renderAccessory: this.renderAccessory.bind(this),
642
- accessoryStyle: styles.accessory
643
- }));
666
+ return toolbar;
644
667
  }
645
668
 
646
669
  renderFooter() {
@@ -680,8 +703,33 @@ class PlussChat extends Component {
680
703
  }
681
704
 
682
705
  renderComposer(props) {
706
+ var _this$state$replyingT, _this$state$replyingT2, _this$state$replyingT3, _this$state$replyingT4;
707
+
683
708
  //console.log(props.composerHeight);
684
709
  return /*#__PURE__*/React.createElement(View, {
710
+ style: styles.composerContainer
711
+ }, this.state.replyingTo && /*#__PURE__*/React.createElement(View, {
712
+ style: styles.replyingTo
713
+ }, /*#__PURE__*/React.createElement(TextStyle, {
714
+ type: "body"
715
+ }, "Replying to ", _.isEmpty((_this$state$replyingT = this.state.replyingTo) === null || _this$state$replyingT === void 0 ? void 0 : (_this$state$replyingT2 = _this$state$replyingT.user) === null || _this$state$replyingT2 === void 0 ? void 0 : _this$state$replyingT2.name) ? 'message' : (_this$state$replyingT3 = this.state.replyingTo) === null || _this$state$replyingT3 === void 0 ? void 0 : (_this$state$replyingT4 = _this$state$replyingT3.user) === null || _this$state$replyingT4 === void 0 ? void 0 : _this$state$replyingT4.name), /*#__PURE__*/React.createElement(TouchableOpacity, {
716
+ style: styles.replyingRemoveButton,
717
+ onPress: () => this.onReply(null),
718
+ hitSlop: {
719
+ top: 8,
720
+ right: 8,
721
+ bottom: 8,
722
+ left: 8
723
+ }
724
+ }, /*#__PURE__*/React.createElement(View, {
725
+ style: [styles.replyingRemoveContainer, {
726
+ backgroundColor: this.props.colourBrandingMain
727
+ }]
728
+ }, /*#__PURE__*/React.createElement(Icon, {
729
+ name: "times",
730
+ type: "font-awesome",
731
+ iconStyle: styles.replyingRemoveIcon
732
+ })))), /*#__PURE__*/React.createElement(View, {
685
733
  style: [styles.input, {
686
734
  //height: props.composerHeight + 10,
687
735
  //borderRadius: (this.MIN_COMPOSER_HEIGHT + 10) / 2,
@@ -698,7 +746,7 @@ class PlussChat extends Component {
698
746
  onFocus: this.onFocusInput.bind(this),
699
747
  onBlur: this.onBlurInput.bind(this)
700
748
  }
701
- })));
749
+ }))));
702
750
  }
703
751
  /***
704
752
  * Main Render
@@ -897,6 +945,34 @@ const styles = {
897
945
  borderRadius: 5,
898
946
  flex: 1
899
947
  },
948
+ composerContainer: {
949
+ flex: 1
950
+ },
951
+ replyingTo: {
952
+ minHeight: 30,
953
+ flexDirection: 'row',
954
+ alignItems: 'center',
955
+ borderBottomWidth: 1,
956
+ borderBottomColor: LINEGREY,
957
+ marginBottom: 8
958
+ },
959
+ replyingRemoveButton: {
960
+ marginLeft: 10
961
+ },
962
+ replyingRemoveContainer: {
963
+ justifyContent: 'center',
964
+ alignItems: 'center',
965
+ borderRadius: 10,
966
+ width: 20,
967
+ height: 20,
968
+ borderWidth: 2,
969
+ borderColor: '#fff'
970
+ },
971
+ replyingRemoveIcon: {
972
+ fontSize: 10,
973
+ color: '#fff',
974
+ marginBottom: 1
975
+ },
900
976
  sendContainer: {
901
977
  position: 'absolute',
902
978
  top: 0,