@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.
- package/dist/module/components/ImagePopup.js +4 -2
- package/dist/module/components/ImagePopup.js.map +1 -1
- package/dist/module/components/PDFPopup.js +19 -4
- package/dist/module/components/PDFPopup.js.map +1 -1
- package/dist/module/components/PlussChat.js +88 -12
- package/dist/module/components/PlussChat.js.map +1 -1
- package/dist/module/components/PlussChatMessage.js +84 -4
- package/dist/module/components/PlussChatMessage.js.map +1 -1
- package/dist/module/components/TextStyle.js +5 -0
- package/dist/module/components/TextStyle.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ImagePopup.js +2 -2
- package/src/components/PDFPopup.js +11 -2
- package/src/components/PlussChat.js +109 -40
- package/src/components/PlussChatMessage.js +88 -4
- package/src/components/TextStyle.js +5 -0
|
@@ -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))
|
|
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
|
-
|
|
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
|
|
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,
|