@plusscommunities/pluss-core-app 3.0.0 → 3.0.2
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/PDFPopup.js +19 -4
- package/dist/module/components/PDFPopup.js.map +1 -1
- package/dist/module/components/PlussChat.js +21 -22
- package/dist/module/components/PlussChat.js.map +1 -1
- package/package.json +1 -1
- package/src/components/PDFPopup.js +11 -2
- package/src/components/PlussChat.js +49 -46
|
@@ -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"]}
|
|
@@ -487,8 +487,6 @@ class PlussChat extends Component {
|
|
|
487
487
|
}
|
|
488
488
|
|
|
489
489
|
if (!_.isEmpty(currentMessage.attachments)) {
|
|
490
|
-
console.log('rendering attachments');
|
|
491
|
-
console.log(currentMessage.attachments);
|
|
492
490
|
return /*#__PURE__*/React.createElement(View, null, currentMessage.attachments.map((url, i) => {
|
|
493
491
|
return /*#__PURE__*/React.createElement(Attachment, {
|
|
494
492
|
onPress: () => {
|
|
@@ -589,6 +587,12 @@ class PlussChat extends Component {
|
|
|
589
587
|
}
|
|
590
588
|
|
|
591
589
|
renderAccessory(props) {
|
|
590
|
+
const hasAttachment = this.hasImagesAttached(props.imagesToUpload);
|
|
591
|
+
|
|
592
|
+
if (!hasAttachment) {
|
|
593
|
+
return null;
|
|
594
|
+
}
|
|
595
|
+
|
|
592
596
|
return /*#__PURE__*/React.createElement(ScrollView, {
|
|
593
597
|
horizontal: true,
|
|
594
598
|
style: styles.uploadImagesContainer
|
|
@@ -647,23 +651,13 @@ class PlussChat extends Component {
|
|
|
647
651
|
}
|
|
648
652
|
|
|
649
653
|
renderInputToolbar(props) {
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
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
|
-
}));
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
return toolbar;
|
|
654
|
+
const hasAttachment = this.hasImagesAttached(props.imagesToUpload);
|
|
655
|
+
return /*#__PURE__*/React.createElement(InputToolbar, _extends({}, props, {
|
|
656
|
+
containerStyle: styles.inputContainer,
|
|
657
|
+
renderComposer: this.renderComposer.bind(this),
|
|
658
|
+
renderAccessory: hasAttachment ? this.renderAccessory.bind(this) : null,
|
|
659
|
+
accessoryStyle: hasAttachment && styles.accessory
|
|
660
|
+
}));
|
|
667
661
|
}
|
|
668
662
|
|
|
669
663
|
renderFooter() {
|
|
@@ -705,7 +699,6 @@ class PlussChat extends Component {
|
|
|
705
699
|
renderComposer(props) {
|
|
706
700
|
var _this$state$replyingT, _this$state$replyingT2, _this$state$replyingT3, _this$state$replyingT4;
|
|
707
701
|
|
|
708
|
-
//console.log(props.composerHeight);
|
|
709
702
|
return /*#__PURE__*/React.createElement(View, {
|
|
710
703
|
style: styles.composerContainer
|
|
711
704
|
}, this.state.replyingTo && /*#__PURE__*/React.createElement(View, {
|
|
@@ -730,6 +723,8 @@ class PlussChat extends Component {
|
|
|
730
723
|
type: "font-awesome",
|
|
731
724
|
iconStyle: styles.replyingRemoveIcon
|
|
732
725
|
})))), /*#__PURE__*/React.createElement(View, {
|
|
726
|
+
style: styles.composerInputWrapper
|
|
727
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
733
728
|
style: [styles.input, {
|
|
734
729
|
//height: props.composerHeight + 10,
|
|
735
730
|
//borderRadius: (this.MIN_COMPOSER_HEIGHT + 10) / 2,
|
|
@@ -746,7 +741,7 @@ class PlussChat extends Component {
|
|
|
746
741
|
onFocus: this.onFocusInput.bind(this),
|
|
747
742
|
onBlur: this.onBlurInput.bind(this)
|
|
748
743
|
}
|
|
749
|
-
}))));
|
|
744
|
+
})))));
|
|
750
745
|
}
|
|
751
746
|
/***
|
|
752
747
|
* Main Render
|
|
@@ -759,7 +754,7 @@ class PlussChat extends Component {
|
|
|
759
754
|
noTab
|
|
760
755
|
} = this.props;
|
|
761
756
|
const iosBottomOffset = (tabCount === 1 || noTab ? -10 : 52) + getBottomSpace();
|
|
762
|
-
const minInputToolbarHeight = this.MIN_COMPOSER_HEIGHT + 16 + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);
|
|
757
|
+
const minInputToolbarHeight = this.MIN_COMPOSER_HEIGHT + 16 + (this.state.replyingTo ? 30 : 0) + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);
|
|
763
758
|
return /*#__PURE__*/React.createElement(GiftedChat, {
|
|
764
759
|
alwaysShowSend: false,
|
|
765
760
|
keyboardShouldPersistTaps: 'never',
|
|
@@ -948,6 +943,10 @@ const styles = {
|
|
|
948
943
|
composerContainer: {
|
|
949
944
|
flex: 1
|
|
950
945
|
},
|
|
946
|
+
composerInputWrapper: {
|
|
947
|
+
flex: 1,
|
|
948
|
+
flexDirection: 'row'
|
|
949
|
+
},
|
|
951
950
|
replyingTo: {
|
|
952
951
|
minHeight: 30,
|
|
953
952
|
flexDirection: 'row',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["PlussChat.js"],"names":["React","Component","View","Image","ImageBackground","TouchableOpacity","Text","KeyboardAvoidingView","Platform","ScrollView","GiftedChat","Bubble","MessageText","Send","InputToolbar","Composer","connect","_","moment","Icon","getBottomSpace","Spinner","ProfilePic","PlussChatTime","PDFPopup","Attachment","PlussChatMessage","TextStyle","TEXT_DARK","LINEGREY","TEXT_DARKEST","getMainBrandingColourFromState","getLightBrandingColourFromState","BG_GREY","TEXT_BLUEGREY","getEnabledTabsFromState","get1400","getThumb300","imageExists","isVideo","getImageSource","getFileName","Config","Services","ImageUploader","ImageUploadProgress","ImagePopup","VideoPopup","IMAGE_SIZE_SMALL","IMAGE_SIZE_LARGE","IMAGES_PER_ROW","IMAGE_MARGIN","IMAGE_PREVIEW_AREA_HEIGHT","IMAGE_PREVIEW_SIZE","PlussChat","constructor","props","event","navigation","navigate","attachment","Type","place","imagesToUpload","isEmpty","state","upload","hasImagesAttached","every","i","uploading","thumbNailExists","checkThumb","setInterval","Promise","all","map","image","resolve","newImage","push","url","allowRetry","thumbNailUrl","thumbnailsExist","clearInterval","setState","a","selectedPDF","keyboardOpen","uploadUri","imageUri","uploadProgress","progress","img","uri","percentage","replace","waitForThumbnails","images","selected","imagePopupSource","imagePopupIndex","indexOf","imagePopupOpen","message","replyingTo","filter","showFullscreenVideo","length","currentVideoUrl","isSingleTab","tabCount","MIN_COMPOSER_HEIGHT","select","ios","android","currentUser","_id","user","uid","name","displayName","avatar","isUndefined","profilePic","env","tinyChatDefault","messages","UNSAFE_componentWillMount","updateMessages","UNSAFE_componentWillReceiveProps","nextProps","newState","onSend","showUploadMenu","imageUploader","closeGallery","sendMessages","hasImagesReady","text","renderBubble","bubbleProps","wrapperStyle","currentMessage","paddingTop","paddingBottom","minWidth","attachments","paddingHorizontal","left","backgroundColor","borderRadius","right","colourBrandingLight","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","renderMessage","RowId","colourBrandingMain","onReply","renderMessageText","messageTextProps","fontFamily","fontSize","color","marginTop","marginBottom","marginLeft","marginRight","renderTime","renderDay","dayProps","renderCustomView","position","containerWidth","styles","imagesContainer","width","paddingVertical","thumb","toggleFullscreenVideo","bind","messageImageSmall","messageImageLarge","imagePlayContainer","imageControlIcon","onPressImage","console","log","onOpenAttachment","onPressEvent","eventContainer","eventImage","eventImageMargin","Thumbnail","eventInfo","eventTitle","eventInfoAlign","Title","eventDate","utc","StartTime","local","format","onPressAttachment","renderSend","top","sendContainer","height","send","renderAccessory","uploadImagesContainer","isVideoUrl","accessoryImageContainer","accessoryImage","accessoryImageBorder","previewItemRemoveButton","onRemoveImage","bottom","previewItemRemoveContainer","previewItemRemoveIcon","renderInputToolbar","toolbar","inputContainer","renderComposer","accessory","renderFooter","renderLoading","justifyContent","alignContent","renderAvatar","composerContainer","replyingRemoveButton","replyingRemoveContainer","replyingRemoveIcon","input","OS","composerHeight","inputText","onFocus","onFocusInput","onBlur","onBlurInput","renderChat","noTab","iosBottomOffset","minInputToolbarHeight","renderImageUploader","ref","onUploadStarted","onUploadProgress","onUploadSuccess","onUploadFailed","onLibrarySelected","renderImagePopup","renderVideoPlayerPopup","renderPDF","onCloseAttachment","render","noAndroidAvoid","chatContainer","flex","paddingLeft","paddingRight","flexDirection","resizeMode","minHeight","textAlign","alignSelf","margin","alignItems","borderBottomWidth","borderBottomColor","borderWidth","borderColor","borderTopWidth","borderTopColor","settingDropDownOpen","flexWrap","overflow","textShadowColor","textShadowOffset","mapStateToProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Image, ImageBackground, TouchableOpacity, Text, KeyboardAvoidingView, Platform, ScrollView } from 'react-native';\nimport { GiftedChat, Bubble, MessageText, Send, InputToolbar, Composer } from 'react-native-gifted-chat';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { Icon } from 'react-native-elements';\nimport { getBottomSpace } from 'react-native-iphone-x-helper';\nimport { Spinner } from './Spinner';\nimport { ProfilePic } from './ProfilePic';\nimport PlussChatTime from './PlussChatTime';\nimport { PDFPopup } from './PDFPopup';\nimport { Attachment } from './Attachment';\nimport PlussChatMessage from './PlussChatMessage';\nimport { TextStyle } from './TextStyle';\nimport {\n TEXT_DARK,\n LINEGREY,\n TEXT_DARKEST,\n getMainBrandingColourFromState,\n getLightBrandingColourFromState,\n BG_GREY,\n TEXT_BLUEGREY,\n} from '../colours';\nimport { getEnabledTabsFromState, get1400, getThumb300, imageExists, isVideo, getImageSource, getFileName } from '../helper';\nimport Config, { Services } from '../config';\nimport ImageUploader from './ImageUploader';\nimport ImageUploadProgress from './ImageUploadProgress';\nimport { ImagePopup } from './ImagePopup';\nimport { VideoPopup } from './VideoPopup';\n\nconst IMAGE_SIZE_SMALL = 55;\nconst IMAGE_SIZE_LARGE = 110;\nconst IMAGES_PER_ROW = 4;\nconst IMAGE_MARGIN = 2;\nconst IMAGE_PREVIEW_AREA_HEIGHT = 105;\nconst IMAGE_PREVIEW_SIZE = IMAGE_PREVIEW_AREA_HEIGHT - 25;\n\nclass PlussChat extends Component {\n constructor(props) {\n super(props);\n const isSingleTab = this.props.tabCount === 1 && getBottomSpace() > 0;\n this.MIN_COMPOSER_HEIGHT = Platform.select({\n ios: isSingleTab ? 42 : 33,\n android: 41,\n });\n\n this.state = {\n currentUser: {\n _id: this.props.user.uid,\n name: this.props.user.displayName,\n avatar:\n !_.isUndefined(this.props.user.profilePic) && !_.isEmpty(this.props.user.profilePic)\n ? this.props.user.profilePic\n : Config.env.tinyChatDefault,\n },\n\n messages: [],\n imagePopupSource: [],\n imagePopupIndex: 0,\n imagePopupOpen: false,\n imagesToUpload: [],\n showFullscreenVideo: false,\n currentVideoUrl: '',\n };\n this.checkThumb = null;\n }\n\n UNSAFE_componentWillMount() {\n this.updateMessages(this.props);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateMessages(nextProps);\n }\n\n updateMessages(props) {\n const newState = {};\n if (!_.isUndefined(props.messages)) {\n newState.messages = props.messages;\n }\n this.setState(newState);\n }\n\n /***\n *\n * Messaging functionality\n */\n onSend(messages = []) {\n // if (this.chatKey) {\n // this.sendMessage(messages[0]);\n // }\n }\n\n onPressEvent = event => {\n Services.navigation.navigate('eventDetail', { event });\n };\n onPressAttachment = attachment => {\n switch (attachment.Type) {\n case 'Event':\n Services.navigation.navigate('eventDetail', { event: attachment });\n break;\n case 'Place':\n Services.navigation.navigate('placeDetail', { place: attachment });\n break;\n default:\n return;\n }\n };\n\n hasImagesAttached = (imagesToUpload = null) => {\n return !_.isEmpty(imagesToUpload || this.state.imagesToUpload);\n };\n\n hasImagesReady = (imagesToUpload = null) => {\n const upload = imagesToUpload || this.state.imagesToUpload;\n return this.hasImagesAttached(upload) && upload.every(i => !i.uploading && i.thumbNailExists);\n };\n\n waitForThumbnails = () => {\n if (this.checkThumb) return;\n\n this.checkThumb = setInterval(async () => {\n const imagesToUpload = [];\n await Promise.all(\n this.state.imagesToUpload.map(image => {\n return new Promise(async resolve => {\n const newImage = { ...image };\n imagesToUpload.push(newImage);\n if (newImage.url && !newImage.thumbNailExists) {\n newImage.uploading = false;\n newImage.allowRetry = false;\n newImage.thumbNailExists = await imageExists(newImage.thumbNailUrl);\n resolve(newImage.thumbNailExists);\n }\n resolve(true);\n });\n }),\n );\n const thumbnailsExist = imagesToUpload.every(image => !image.url || image.thumbNailExists);\n if (thumbnailsExist) {\n clearInterval(this.checkThumb);\n this.checkThumb = null;\n this.setState({ imagesToUpload });\n }\n }, 2000);\n };\n\n onOpenAttachment = a => {\n this.setState({\n selectedPDF: a,\n });\n };\n\n onCloseAttachment = () => {\n this.setState({\n selectedPDF: null,\n });\n };\n\n showUploadMenu() {\n this.imageUploader.showUploadMenu();\n }\n\n onFocusInput = () => {\n this.setState({\n keyboardOpen: true,\n });\n if (this.props.keyboardOpen) {\n this.props.keyboardOpen();\n }\n };\n\n onBlurInput = () => {\n this.setState({\n keyboardOpen: false,\n });\n };\n\n onUploadStarted = (uploadUri, imageUri) => {\n const imagesToUpload = [\n ...this.state.imagesToUpload,\n {\n uploading: true,\n uploadProgress: '0%',\n uploadUri,\n imageUri,\n allowRetry: true,\n },\n ];\n this.setState({ imagesToUpload });\n };\n\n onUploadProgress = progress => {\n const imagesToUpload = [...this.state.imagesToUpload];\n imagesToUpload.map(img => {\n if (img.uploadUri === progress.uri) {\n img.uploadProgress = progress.percentage;\n img.uploading = true;\n img.allowRetry = true;\n }\n });\n this.setState({ imagesToUpload });\n };\n\n onUploadSuccess = async (uri, uploadUri) => {\n const imagesToUpload = [...this.state.imagesToUpload];\n imagesToUpload.map(img => {\n if (img.uploadUri === uploadUri && img.uploading) {\n img.url = uri.replace('/general/', '/general1400/');\n img.thumbNailExists = false;\n img.thumbNailUrl = getThumb300(img.url);\n img.allowRetry = true;\n }\n });\n this.setState({ imagesToUpload }, () => this.waitForThumbnails());\n };\n\n onUploadFailed = uploadUri => {\n const imagesToUpload = [...this.state.imagesToUpload];\n imagesToUpload.map(img => {\n if (img.uploadUri === uploadUri) {\n img.uploading = true; // Requried for retry\n img.uploadProgress = '';\n img.allowRetry = true;\n }\n });\n this.setState({ imagesToUpload });\n };\n\n onLibrarySelected = uri => {\n const imagesToUpload = [\n ...this.state.imagesToUpload,\n {\n uploading: false,\n allowRetry: false,\n url: get1400(uri),\n thumbNailExists: true,\n thumbNailUrl: getThumb300(uri),\n },\n ];\n this.setState({ imagesToUpload });\n };\n\n onPressImage = (images, selected) => {\n this.setState({\n imagePopupSource: images,\n imagePopupIndex: images.indexOf(selected),\n imagePopupOpen: true,\n });\n };\n\n onReply = message => {\n this.setState({\n replyingTo: message,\n });\n };\n\n closeGallery() {\n this.setState({\n imagePopupSource: [],\n imagePopupIndex: 0,\n imagePopupOpen: false,\n });\n }\n\n onRemoveImage = url => {\n const imagesToUpload = this.state.imagesToUpload.filter(image => image.url !== url);\n this.setState({ imagesToUpload });\n };\n\n toggleFullscreenVideo = url => {\n if (typeof url !== 'string') url = '';\n this.setState({ showFullscreenVideo: url.length > 0, currentVideoUrl: url });\n };\n\n sendMessages(messages) {\n if (this.hasImagesAttached()) {\n // Don't allow send if attached images aren't ready\n if (!this.hasImagesReady()) return;\n messages[0].image = this.state.imagesToUpload.map(image => image.url);\n }\n if (_.isEmpty(messages[0].text)) {\n messages[0].text = '';\n }\n if (!messages[0].text && !messages[0].image) return;\n\n if (this.state.replyingTo) {\n messages[0].replyingTo = this.state.replyingTo;\n }\n\n this.props.onSend(messages);\n this.setState({ imagesToUpload: [], replyingTo: null });\n }\n\n /**\n *\n * Render Functions\n */\n renderBubble(bubbleProps) {\n const wrapperStyle = {};\n if (!_.isEmpty(bubbleProps.currentMessage.text) && !_.isEmpty(bubbleProps.currentMessage.image)) {\n wrapperStyle.paddingTop = 8;\n wrapperStyle.paddingBottom = 16;\n wrapperStyle.minWidth = 142; // 110 image width + 16 padding either side\n }\n if (!_.isEmpty(bubbleProps.currentMessage.attachments)) {\n wrapperStyle.paddingTop = 8;\n wrapperStyle.paddingBottom = 16;\n wrapperStyle.paddingHorizontal = 16;\n }\n return (\n <Bubble\n {...bubbleProps}\n renderMessageImage={() => null}\n isCustomViewBottom={true}\n wrapperStyle={{\n left: {\n backgroundColor: LINEGREY,\n borderRadius: 25,\n ...wrapperStyle,\n },\n right: {\n backgroundColor: this.props.colourBrandingLight,\n borderRadius: 25,\n ...wrapperStyle,\n },\n }}\n containerToNextStyle={{\n left: {\n borderBottomLeftRadius: 5,\n },\n right: {\n borderBottomRightRadius: 5,\n },\n }}\n containerToPreviousStyle={{\n left: {\n borderTopLeftRadius: 5,\n },\n right: {\n borderTopRightRadius: 5,\n },\n }}\n />\n );\n }\n renderMessage(props) {\n return (\n <PlussChatMessage\n key={props.RowId}\n colourBrandingMain={this.props.colourBrandingMain}\n onPressReply={() => {\n this.onReply(props.currentMessage);\n }}\n {...props}\n />\n );\n }\n renderMessageText(messageTextProps) {\n return (\n <MessageText\n {...messageTextProps}\n textStyle={{\n left: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: TEXT_DARKEST,\n marginTop: 10,\n marginBottom: 10,\n marginLeft: 15,\n marginRight: 15,\n },\n right: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: this.props.colourBrandingMain,\n marginTop: 10,\n marginBottom: 10,\n marginLeft: 15,\n marginRight: 15,\n },\n }}\n linkStyle={{\n left: {\n color: TEXT_DARKEST,\n },\n right: {\n color: this.props.colourBrandingMain,\n },\n }}\n />\n );\n }\n renderTime() {\n return null;\n }\n renderDay(dayProps) {\n return (\n <PlussChatTime\n {...dayProps}\n textStyle={{\n fontFamily: 'sf-semibold',\n color: TEXT_DARK,\n fontSize: 12,\n }}\n />\n );\n }\n renderCustomView({ currentMessage, position }) {\n if (currentMessage.image) {\n const images = typeof currentMessage.image === 'string' ? [currentMessage.image] : currentMessage.image;\n const containerWidth = (() => {\n if (images.length === 0) return 0;\n if (images.length === 1) return IMAGE_SIZE_LARGE;\n if (images.length <= IMAGES_PER_ROW) return (IMAGE_SIZE_SMALL + IMAGE_MARGIN) * images.length;\n return (IMAGE_SIZE_SMALL + IMAGE_MARGIN) * IMAGES_PER_ROW;\n })();\n return (\n <View style={[styles.imagesContainer, { width: containerWidth, paddingVertical: currentMessage.text ? 0 : 20 }]}>\n {images.map(img => {\n const thumb = getThumb300(img);\n if (isVideo(img)) {\n return (\n <TouchableOpacity key={thumb} onPress={this.toggleFullscreenVideo.bind(this, img)}>\n <ImageBackground style={images.length > 1 ? styles.messageImageSmall : styles.messageImageLarge} source={{ uri: thumb }}>\n <View style={styles.imagePlayContainer}>\n <Icon name=\"play\" type=\"font-awesome\" iconStyle={styles.imageControlIcon} />\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n }\n return (\n <TouchableOpacity key={thumb} onPress={() => this.onPressImage(images, img)}>\n <Image source={{ uri: thumb }} style={images.length > 1 ? styles.messageImageSmall : styles.messageImageLarge} />\n </TouchableOpacity>\n );\n })}\n </View>\n );\n }\n if (!_.isEmpty(currentMessage.attachments)) {\n console.log('rendering attachments');\n console.log(currentMessage.attachments);\n return (\n <View>\n {currentMessage.attachments.map((url, i) => {\n return (\n <Attachment\n onPress={() => {\n this.onOpenAttachment(url);\n }}\n key={i}\n title={getFileName(url)}\n />\n );\n })}\n </View>\n );\n }\n if (currentMessage.event) {\n return (\n <TouchableOpacity onPress={this.onPressEvent.bind(this, currentMessage.event)}>\n <View style={styles.eventContainer[position]}>\n <Image style={[styles.eventImage, styles.eventImageMargin[position]]} source={{ uri: currentMessage.event.Thumbnail }} />\n <View style={styles.eventInfo}>\n <Text\n numberOfLines={3}\n style={[styles.eventTitle, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}\n >\n {currentMessage.event.Title}\n </Text>\n <Text style={[styles.eventDate, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}>\n {moment\n .utc(currentMessage.event.StartTime)\n .local()\n .format('ddd D MMM')}\n </Text>\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n if (currentMessage.attachment) {\n return (\n <TouchableOpacity onPress={this.onPressAttachment.bind(this, currentMessage.attachment)}>\n <View style={styles.eventContainer[position]}>\n <Image style={[styles.eventImage, styles.eventImageMargin[position]]} source={{ uri: currentMessage.attachment.Thumbnail }} />\n <View style={styles.eventInfo}>\n <Text\n numberOfLines={3}\n style={[styles.eventTitle, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}\n >\n {currentMessage.attachment.Title}\n </Text>\n {currentMessage.attachment.StartTime && (\n <Text style={[styles.eventDate, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}>\n {moment\n .utc(currentMessage.attachment.StartTime)\n .local()\n .format('ddd D MMM')}\n </Text>\n )}\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n return null;\n }\n\n renderSend(props) {\n return (\n <View style={[{ position: 'absolute', top: 0, right: 0 }, !!this.state.replyingTo && { marginTop: 38 }]}>\n {(!_.isEmpty(props.text) || this.hasImagesReady(props.imagesToUpload)) && (\n <Send\n {...props}\n alwaysShowSend={true}\n containerStyle={[\n styles.sendContainer,\n {\n width: this.MIN_COMPOSER_HEIGHT,\n height: this.MIN_COMPOSER_HEIGHT,\n },\n ]}\n >\n <Icon name={'paper-plane'} type=\"font-awesome\" iconStyle={[styles.send, { width: this.MIN_COMPOSER_HEIGHT }]} />\n </Send>\n )}\n <TouchableOpacity\n onPress={this.showUploadMenu.bind(this)}\n style={[\n styles.sendContainer,\n {\n right: _.isEmpty(props.text) && !this.hasImagesReady(props.imagesToUpload) ? 0 : 8 + this.MIN_COMPOSER_HEIGHT,\n width: this.MIN_COMPOSER_HEIGHT,\n height: this.MIN_COMPOSER_HEIGHT,\n },\n ]}\n >\n <Icon name={'picture-o'} type=\"font-awesome\" iconStyle={[styles.send, { width: this.MIN_COMPOSER_HEIGHT }]} />\n </TouchableOpacity>\n </View>\n );\n }\n\n renderAccessory(props) {\n return (\n <ScrollView horizontal style={styles.uploadImagesContainer}>\n {props.imagesToUpload.map(image => {\n if (image.uploading) {\n return (\n <ImageUploadProgress\n key={image.uploadUri}\n uploader={this.imageUploader}\n image={image}\n color={this.props.colourBrandingMain}\n style={{ width: IMAGE_PREVIEW_SIZE, marginRight: 10 }}\n progressTextStyle={{ fontSize: 10 }}\n />\n );\n }\n const isVideoUrl = isVideo(image.url);\n return (\n <View key={image.url} style={styles.accessoryImageContainer}>\n <ImageBackground\n style={styles.accessoryImage}\n imageStyle={styles.accessoryImageBorder}\n source={getImageSource(image.thumbNailExists ? image.thumbNailUrl : image.url)}\n >\n {isVideoUrl && (\n <View style={styles.imagePlayContainer}>\n <TouchableOpacity onPress={this.toggleFullscreenVideo.bind(this, image.url)}>\n <Icon name=\"play\" type=\"font-awesome\" iconStyle={styles.imageControlIcon} />\n </TouchableOpacity>\n </View>\n )}\n </ImageBackground>\n <TouchableOpacity\n style={styles.previewItemRemoveButton}\n onPress={() => this.onRemoveImage(image.url)}\n hitSlop={{ top: 8, right: 8, bottom: 8, left: 8 }}\n >\n <View style={[styles.previewItemRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.previewItemRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n );\n })}\n </ScrollView>\n );\n }\n\n renderInputToolbar(props) {\n let toolbar;\n if (!this.hasImagesAttached(props.imagesToUpload)) {\n toolbar = <InputToolbar {...props} containerStyle={styles.inputContainer} renderComposer={this.renderComposer.bind(this)} />;\n } else {\n toolbar = (\n <InputToolbar\n {...props}\n containerStyle={styles.inputContainer}\n renderComposer={this.renderComposer.bind(this)}\n renderAccessory={this.renderAccessory.bind(this)}\n accessoryStyle={styles.accessory}\n />\n );\n }\n return toolbar;\n }\n renderFooter() {\n // if (this.state.keyboardOpen) {\n // return null;\n // }\n // fixes an issue where there's no gap between bottom message and reply container\n return <View style={{ height: 10 }} />;\n }\n renderLoading() {\n return (\n <View style={{ marginTop: 15, justifyContent: 'center', alignContent: 'center' }}>\n <Spinner size={'small'} color={this.props.colourBrandingMain} />\n </View>\n );\n }\n renderAvatar(props) {\n return (\n <View style={{ marginRight: 2 }}>\n <ProfilePic ProfilePic={props.currentMessage.user.avatar} Diameter={28} />\n </View>\n );\n }\n renderComposer(props) {\n //console.log(props.composerHeight);\n return (\n <View style={styles.composerContainer}>\n {this.state.replyingTo && (\n <View style={styles.replyingTo}>\n <TextStyle type=\"body\">\n Replying to {_.isEmpty(this.state.replyingTo?.user?.name) ? 'message' : this.state.replyingTo?.user?.name}\n </TextStyle>\n <TouchableOpacity\n style={styles.replyingRemoveButton}\n onPress={() => this.onReply(null)}\n hitSlop={{ top: 8, right: 8, bottom: 8, left: 8 }}\n >\n <View style={[styles.replyingRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.replyingRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n )}\n <View\n style={[\n styles.input,\n {\n //height: props.composerHeight + 10,\n //borderRadius: (this.MIN_COMPOSER_HEIGHT + 10) / 2,\n marginRight:\n _.isEmpty(props.text) && !this.hasImagesReady(props.imagesToUpload)\n ? 8 + this.MIN_COMPOSER_HEIGHT\n : 2 * (this.MIN_COMPOSER_HEIGHT + 8),\n justifyContent: 'center',\n },\n Platform.OS === 'ios' && {\n height: props.composerHeight + 10,\n },\n ]}\n >\n <Composer\n {...props}\n //composerHeight={props.composerHeight}\n placeholder=\"Type a message...\"\n textInputStyle={styles.inputText}\n textInputProps={{\n onFocus: this.onFocusInput.bind(this),\n onBlur: this.onBlurInput.bind(this),\n }}\n />\n </View>\n </View>\n );\n }\n\n /***\n * Main Render\n */\n renderChat() {\n const { tabCount, noTab } = this.props;\n const iosBottomOffset = (tabCount === 1 || noTab ? -10 : 52) + getBottomSpace();\n const minInputToolbarHeight = this.MIN_COMPOSER_HEIGHT + 16 + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);\n\n return (\n <GiftedChat\n alwaysShowSend={false}\n keyboardShouldPersistTaps={'never'}\n renderAvatarOnTop\n minInputToolbarHeight={minInputToolbarHeight}\n bottomOffset={Platform.OS === 'android' ? 0 : iosBottomOffset}\n onSend={this.sendMessages.bind(this)}\n messages={this.state.messages}\n user={this.state.currentUser}\n renderBubble={this.renderBubble.bind(this)}\n renderMessage={this.renderMessage.bind(this)}\n renderMessageText={this.renderMessageText.bind(this)}\n renderTime={this.renderTime.bind(this)}\n renderDay={this.renderDay.bind(this)}\n renderCustomView={this.renderCustomView.bind(this)}\n renderSend={this.renderSend.bind(this)}\n renderInputToolbar={this.renderInputToolbar.bind(this)}\n renderFooter={this.renderFooter.bind(this)}\n renderLoading={this.renderLoading.bind(this)}\n renderAvatar={this.renderAvatar.bind(this)}\n imagesToUpload={this.state.imagesToUpload}\n />\n );\n }\n\n renderImageUploader() {\n return (\n <ImageUploader\n ref={ref => (this.imageUploader = ref)}\n onUploadStarted={this.onUploadStarted}\n onUploadProgress={this.onUploadProgress}\n onUploadSuccess={this.onUploadSuccess}\n onUploadFailed={this.onUploadFailed}\n onLibrarySelected={this.onLibrarySelected}\n quality={0.8}\n allowsEditing={false}\n fileName={'imageInput'}\n popupTitle={'Add Image'}\n userId={this.props.user.uid}\n multiple\n allowVideo\n />\n );\n }\n\n renderImagePopup() {\n const { imagePopupOpen, imagePopupSource, imagePopupIndex } = this.state;\n return (\n <ImagePopup\n visible={imagePopupOpen}\n images={imagePopupSource}\n index={imagePopupIndex}\n onClose={this.closeGallery.bind(this)}\n ref=\"imagePopup\"\n />\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 renderPDF() {\n if (_.isEmpty(this.state.selectedPDF)) {\n return null;\n }\n return (\n <PDFPopup source={this.state.selectedPDF} onClose={this.onCloseAttachment} title={getFileName(this.state.selectedPDF)} pdfCount={1} />\n );\n }\n\n render() {\n if (Platform.OS === 'android' && !this.props.noAndroidAvoid) {\n return (\n <KeyboardAvoidingView behavior={Platform.OS === 'ios' && 'padding'} style={styles.chatContainer}>\n {this.renderChat()}\n {this.renderImageUploader()}\n {this.renderImagePopup()}\n {this.renderVideoPlayerPopup()}\n {this.renderPDF()}\n </KeyboardAvoidingView>\n );\n }\n return (\n <View style={styles.chatContainer}>\n {this.renderChat()}\n {this.renderImageUploader()}\n {this.renderImagePopup()}\n {this.renderVideoPlayerPopup()}\n {this.renderPDF()}\n </View>\n );\n }\n}\n\nconst styles = {\n chatContainer: {\n flex: 1,\n justifyContent: 'center',\n },\n eventContainer: {\n left: {\n paddingTop: 5,\n paddingLeft: 15,\n paddingRight: 15,\n paddingBottom: 5,\n flexDirection: 'row',\n },\n right: {\n paddingTop: 5,\n paddingLeft: 15,\n paddingRight: 15,\n paddingBottom: 5,\n flexDirection: 'row-reverse',\n },\n },\n eventImage: {\n width: 80,\n height: 80,\n resizeMode: 'cover',\n borderRadius: 2,\n },\n eventImageMargin: {\n right: {\n marginLeft: 15,\n },\n left: {\n marginRight: 15,\n },\n },\n eventInfo: {\n minHeight: 80,\n width: 150,\n },\n eventTitle: {\n fontSize: 12,\n fontFamily: 'sf-bold',\n backgroundColor: 'rgba(255,255,255,0)',\n },\n eventInfoAlign: {\n left: {\n textAlign: 'left',\n },\n right: {\n textAlign: 'right',\n },\n },\n messageImageLarge: {\n width: IMAGE_SIZE_LARGE,\n height: IMAGE_SIZE_LARGE,\n borderRadius: 2,\n alignSelf: 'center',\n },\n messageImageSmall: {\n width: IMAGE_SIZE_SMALL,\n height: IMAGE_SIZE_SMALL,\n borderRadius: 2,\n alignSelf: 'center',\n marginRight: IMAGE_MARGIN,\n marginBottom: IMAGE_MARGIN,\n },\n eventDate: {\n fontSize: 12,\n fontFamily: 'sf-regular',\n backgroundColor: 'rgba(255,255,255,0)',\n },\n inputContainer: {\n backgroundColor: '#fff',\n paddingVertical: 8,\n paddingHorizontal: 8,\n },\n inputText: {\n color: TEXT_DARKEST,\n fontSize: 14,\n fontFamily: 'sf-medium',\n },\n input: {\n margin: 0,\n backgroundColor: BG_GREY,\n borderRadius: 5,\n flex: 1,\n },\n composerContainer: {\n flex: 1,\n },\n replyingTo: {\n minHeight: 30,\n flexDirection: 'row',\n alignItems: 'center',\n borderBottomWidth: 1,\n borderBottomColor: LINEGREY,\n marginBottom: 8,\n },\n replyingRemoveButton: {\n marginLeft: 10,\n },\n replyingRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n replyingRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 1,\n },\n sendContainer: {\n position: 'absolute',\n top: 0,\n right: 0,\n height: 30,\n width: 30,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fff',\n },\n send: {\n fontSize: 15,\n color: TEXT_BLUEGREY,\n fontSize: 24,\n textAlign: 'center',\n },\n accessory: {\n height: IMAGE_PREVIEW_AREA_HEIGHT,\n borderTopWidth: 1,\n borderTopColor: LINEGREY,\n paddingTop: 8,\n marginTop: 8,\n },\n accessoryImageContainer: {\n paddingRight: 8,\n paddingTop: 8,\n marginRight: 5,\n },\n accessoryImage: {\n width: IMAGE_PREVIEW_SIZE,\n height: IMAGE_PREVIEW_SIZE,\n },\n accessoryImageBorder: {\n borderRadius: 2,\n },\n settingDropDownOpen: {\n height: 'auto',\n },\n imagesContainer: {\n marginLeft: 10,\n marginRight: 10,\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n uploadImagesContainer: {\n flexDirection: 'row',\n overflow: 'visible',\n },\n previewItemRemoveButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n previewItemRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n previewItemRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 1,\n },\n imagePlayContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n },\n imageControlIcon: {\n color: '#fff',\n fontSize: 20,\n textShadowColor: 'rgba(0,0,0,0.3)',\n textShadowOffset: { width: 2, height: 2 },\n },\n};\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n colourBrandingMain: getMainBrandingColourFromState(state),\n colourBrandingLight: getLightBrandingColourFromState(state),\n tabCount: getEnabledTabsFromState(state).length,\n };\n};\n\nexport default connect(mapStateToProps, {})(PlussChat);\n"]}
|
|
1
|
+
{"version":3,"sources":["PlussChat.js"],"names":["React","Component","View","Image","ImageBackground","TouchableOpacity","Text","KeyboardAvoidingView","Platform","ScrollView","GiftedChat","Bubble","MessageText","Send","InputToolbar","Composer","connect","_","moment","Icon","getBottomSpace","Spinner","ProfilePic","PlussChatTime","PDFPopup","Attachment","PlussChatMessage","TextStyle","TEXT_DARK","LINEGREY","TEXT_DARKEST","getMainBrandingColourFromState","getLightBrandingColourFromState","BG_GREY","TEXT_BLUEGREY","getEnabledTabsFromState","get1400","getThumb300","imageExists","isVideo","getImageSource","getFileName","Config","Services","ImageUploader","ImageUploadProgress","ImagePopup","VideoPopup","IMAGE_SIZE_SMALL","IMAGE_SIZE_LARGE","IMAGES_PER_ROW","IMAGE_MARGIN","IMAGE_PREVIEW_AREA_HEIGHT","IMAGE_PREVIEW_SIZE","PlussChat","constructor","props","event","navigation","navigate","attachment","Type","place","imagesToUpload","isEmpty","state","upload","hasImagesAttached","every","i","uploading","thumbNailExists","checkThumb","setInterval","Promise","all","map","image","resolve","newImage","push","url","allowRetry","thumbNailUrl","thumbnailsExist","clearInterval","setState","a","selectedPDF","keyboardOpen","uploadUri","imageUri","uploadProgress","progress","img","uri","percentage","replace","waitForThumbnails","images","selected","imagePopupSource","imagePopupIndex","indexOf","imagePopupOpen","message","replyingTo","filter","showFullscreenVideo","length","currentVideoUrl","isSingleTab","tabCount","MIN_COMPOSER_HEIGHT","select","ios","android","currentUser","_id","user","uid","name","displayName","avatar","isUndefined","profilePic","env","tinyChatDefault","messages","UNSAFE_componentWillMount","updateMessages","UNSAFE_componentWillReceiveProps","nextProps","newState","onSend","showUploadMenu","imageUploader","closeGallery","sendMessages","hasImagesReady","text","renderBubble","bubbleProps","wrapperStyle","currentMessage","paddingTop","paddingBottom","minWidth","attachments","paddingHorizontal","left","backgroundColor","borderRadius","right","colourBrandingLight","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","renderMessage","RowId","colourBrandingMain","onReply","renderMessageText","messageTextProps","fontFamily","fontSize","color","marginTop","marginBottom","marginLeft","marginRight","renderTime","renderDay","dayProps","renderCustomView","position","containerWidth","styles","imagesContainer","width","paddingVertical","thumb","toggleFullscreenVideo","bind","messageImageSmall","messageImageLarge","imagePlayContainer","imageControlIcon","onPressImage","onOpenAttachment","onPressEvent","eventContainer","eventImage","eventImageMargin","Thumbnail","eventInfo","eventTitle","eventInfoAlign","Title","eventDate","utc","StartTime","local","format","onPressAttachment","renderSend","top","sendContainer","height","send","renderAccessory","hasAttachment","uploadImagesContainer","isVideoUrl","accessoryImageContainer","accessoryImage","accessoryImageBorder","previewItemRemoveButton","onRemoveImage","bottom","previewItemRemoveContainer","previewItemRemoveIcon","renderInputToolbar","inputContainer","renderComposer","accessory","renderFooter","renderLoading","justifyContent","alignContent","renderAvatar","composerContainer","replyingRemoveButton","replyingRemoveContainer","replyingRemoveIcon","composerInputWrapper","input","OS","composerHeight","inputText","onFocus","onFocusInput","onBlur","onBlurInput","renderChat","noTab","iosBottomOffset","minInputToolbarHeight","renderImageUploader","ref","onUploadStarted","onUploadProgress","onUploadSuccess","onUploadFailed","onLibrarySelected","renderImagePopup","renderVideoPlayerPopup","renderPDF","onCloseAttachment","render","noAndroidAvoid","chatContainer","flex","paddingLeft","paddingRight","flexDirection","resizeMode","minHeight","textAlign","alignSelf","margin","alignItems","borderBottomWidth","borderBottomColor","borderWidth","borderColor","borderTopWidth","borderTopColor","settingDropDownOpen","flexWrap","overflow","textShadowColor","textShadowOffset","mapStateToProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Image, ImageBackground, TouchableOpacity, Text, KeyboardAvoidingView, Platform, ScrollView } from 'react-native';\nimport { GiftedChat, Bubble, MessageText, Send, InputToolbar, Composer } from 'react-native-gifted-chat';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { Icon } from 'react-native-elements';\nimport { getBottomSpace } from 'react-native-iphone-x-helper';\nimport { Spinner } from './Spinner';\nimport { ProfilePic } from './ProfilePic';\nimport PlussChatTime from './PlussChatTime';\nimport { PDFPopup } from './PDFPopup';\nimport { Attachment } from './Attachment';\nimport PlussChatMessage from './PlussChatMessage';\nimport { TextStyle } from './TextStyle';\nimport {\n TEXT_DARK,\n LINEGREY,\n TEXT_DARKEST,\n getMainBrandingColourFromState,\n getLightBrandingColourFromState,\n BG_GREY,\n TEXT_BLUEGREY,\n} from '../colours';\nimport { getEnabledTabsFromState, get1400, getThumb300, imageExists, isVideo, getImageSource, getFileName } from '../helper';\nimport Config, { Services } from '../config';\nimport ImageUploader from './ImageUploader';\nimport ImageUploadProgress from './ImageUploadProgress';\nimport { ImagePopup } from './ImagePopup';\nimport { VideoPopup } from './VideoPopup';\n\nconst IMAGE_SIZE_SMALL = 55;\nconst IMAGE_SIZE_LARGE = 110;\nconst IMAGES_PER_ROW = 4;\nconst IMAGE_MARGIN = 2;\nconst IMAGE_PREVIEW_AREA_HEIGHT = 105;\nconst IMAGE_PREVIEW_SIZE = IMAGE_PREVIEW_AREA_HEIGHT - 25;\n\nclass PlussChat extends Component {\n constructor(props) {\n super(props);\n const isSingleTab = this.props.tabCount === 1 && getBottomSpace() > 0;\n this.MIN_COMPOSER_HEIGHT = Platform.select({\n ios: isSingleTab ? 42 : 33,\n android: 41,\n });\n\n this.state = {\n currentUser: {\n _id: this.props.user.uid,\n name: this.props.user.displayName,\n avatar:\n !_.isUndefined(this.props.user.profilePic) && !_.isEmpty(this.props.user.profilePic)\n ? this.props.user.profilePic\n : Config.env.tinyChatDefault,\n },\n\n messages: [],\n imagePopupSource: [],\n imagePopupIndex: 0,\n imagePopupOpen: false,\n imagesToUpload: [],\n showFullscreenVideo: false,\n currentVideoUrl: '',\n };\n this.checkThumb = null;\n }\n\n UNSAFE_componentWillMount() {\n this.updateMessages(this.props);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateMessages(nextProps);\n }\n\n updateMessages(props) {\n const newState = {};\n if (!_.isUndefined(props.messages)) {\n newState.messages = props.messages;\n }\n this.setState(newState);\n }\n\n /***\n *\n * Messaging functionality\n */\n onSend(messages = []) {\n // if (this.chatKey) {\n // this.sendMessage(messages[0]);\n // }\n }\n\n onPressEvent = event => {\n Services.navigation.navigate('eventDetail', { event });\n };\n onPressAttachment = attachment => {\n switch (attachment.Type) {\n case 'Event':\n Services.navigation.navigate('eventDetail', { event: attachment });\n break;\n case 'Place':\n Services.navigation.navigate('placeDetail', { place: attachment });\n break;\n default:\n return;\n }\n };\n\n hasImagesAttached = (imagesToUpload = null) => {\n return !_.isEmpty(imagesToUpload || this.state.imagesToUpload);\n };\n\n hasImagesReady = (imagesToUpload = null) => {\n const upload = imagesToUpload || this.state.imagesToUpload;\n return this.hasImagesAttached(upload) && upload.every(i => !i.uploading && i.thumbNailExists);\n };\n\n waitForThumbnails = () => {\n if (this.checkThumb) return;\n\n this.checkThumb = setInterval(async () => {\n const imagesToUpload = [];\n await Promise.all(\n this.state.imagesToUpload.map(image => {\n return new Promise(async resolve => {\n const newImage = { ...image };\n imagesToUpload.push(newImage);\n if (newImage.url && !newImage.thumbNailExists) {\n newImage.uploading = false;\n newImage.allowRetry = false;\n newImage.thumbNailExists = await imageExists(newImage.thumbNailUrl);\n resolve(newImage.thumbNailExists);\n }\n resolve(true);\n });\n }),\n );\n const thumbnailsExist = imagesToUpload.every(image => !image.url || image.thumbNailExists);\n if (thumbnailsExist) {\n clearInterval(this.checkThumb);\n this.checkThumb = null;\n this.setState({ imagesToUpload });\n }\n }, 2000);\n };\n\n onOpenAttachment = a => {\n this.setState({\n selectedPDF: a,\n });\n };\n\n onCloseAttachment = () => {\n this.setState({\n selectedPDF: null,\n });\n };\n\n showUploadMenu() {\n this.imageUploader.showUploadMenu();\n }\n\n onFocusInput = () => {\n this.setState({\n keyboardOpen: true,\n });\n if (this.props.keyboardOpen) {\n this.props.keyboardOpen();\n }\n };\n\n onBlurInput = () => {\n this.setState({\n keyboardOpen: false,\n });\n };\n\n onUploadStarted = (uploadUri, imageUri) => {\n const imagesToUpload = [\n ...this.state.imagesToUpload,\n {\n uploading: true,\n uploadProgress: '0%',\n uploadUri,\n imageUri,\n allowRetry: true,\n },\n ];\n this.setState({ imagesToUpload });\n };\n\n onUploadProgress = progress => {\n const imagesToUpload = [...this.state.imagesToUpload];\n imagesToUpload.map(img => {\n if (img.uploadUri === progress.uri) {\n img.uploadProgress = progress.percentage;\n img.uploading = true;\n img.allowRetry = true;\n }\n });\n this.setState({ imagesToUpload });\n };\n\n onUploadSuccess = async (uri, uploadUri) => {\n const imagesToUpload = [...this.state.imagesToUpload];\n imagesToUpload.map(img => {\n if (img.uploadUri === uploadUri && img.uploading) {\n img.url = uri.replace('/general/', '/general1400/');\n img.thumbNailExists = false;\n img.thumbNailUrl = getThumb300(img.url);\n img.allowRetry = true;\n }\n });\n this.setState({ imagesToUpload }, () => this.waitForThumbnails());\n };\n\n onUploadFailed = uploadUri => {\n const imagesToUpload = [...this.state.imagesToUpload];\n imagesToUpload.map(img => {\n if (img.uploadUri === uploadUri) {\n img.uploading = true; // Requried for retry\n img.uploadProgress = '';\n img.allowRetry = true;\n }\n });\n this.setState({ imagesToUpload });\n };\n\n onLibrarySelected = uri => {\n const imagesToUpload = [\n ...this.state.imagesToUpload,\n {\n uploading: false,\n allowRetry: false,\n url: get1400(uri),\n thumbNailExists: true,\n thumbNailUrl: getThumb300(uri),\n },\n ];\n this.setState({ imagesToUpload });\n };\n\n onPressImage = (images, selected) => {\n this.setState({\n imagePopupSource: images,\n imagePopupIndex: images.indexOf(selected),\n imagePopupOpen: true,\n });\n };\n\n onReply = message => {\n this.setState({\n replyingTo: message,\n });\n };\n\n closeGallery() {\n this.setState({\n imagePopupSource: [],\n imagePopupIndex: 0,\n imagePopupOpen: false,\n });\n }\n\n onRemoveImage = url => {\n const imagesToUpload = this.state.imagesToUpload.filter(image => image.url !== url);\n this.setState({ imagesToUpload });\n };\n\n toggleFullscreenVideo = url => {\n if (typeof url !== 'string') url = '';\n this.setState({ showFullscreenVideo: url.length > 0, currentVideoUrl: url });\n };\n\n sendMessages(messages) {\n if (this.hasImagesAttached()) {\n // Don't allow send if attached images aren't ready\n if (!this.hasImagesReady()) return;\n messages[0].image = this.state.imagesToUpload.map(image => image.url);\n }\n if (_.isEmpty(messages[0].text)) {\n messages[0].text = '';\n }\n if (!messages[0].text && !messages[0].image) return;\n\n if (this.state.replyingTo) {\n messages[0].replyingTo = this.state.replyingTo;\n }\n\n this.props.onSend(messages);\n this.setState({ imagesToUpload: [], replyingTo: null });\n }\n\n /**\n *\n * Render Functions\n */\n renderBubble(bubbleProps) {\n const wrapperStyle = {};\n if (!_.isEmpty(bubbleProps.currentMessage.text) && !_.isEmpty(bubbleProps.currentMessage.image)) {\n wrapperStyle.paddingTop = 8;\n wrapperStyle.paddingBottom = 16;\n wrapperStyle.minWidth = 142; // 110 image width + 16 padding either side\n }\n if (!_.isEmpty(bubbleProps.currentMessage.attachments)) {\n wrapperStyle.paddingTop = 8;\n wrapperStyle.paddingBottom = 16;\n wrapperStyle.paddingHorizontal = 16;\n }\n return (\n <Bubble\n {...bubbleProps}\n renderMessageImage={() => null}\n isCustomViewBottom={true}\n wrapperStyle={{\n left: {\n backgroundColor: LINEGREY,\n borderRadius: 25,\n ...wrapperStyle,\n },\n right: {\n backgroundColor: this.props.colourBrandingLight,\n borderRadius: 25,\n ...wrapperStyle,\n },\n }}\n containerToNextStyle={{\n left: {\n borderBottomLeftRadius: 5,\n },\n right: {\n borderBottomRightRadius: 5,\n },\n }}\n containerToPreviousStyle={{\n left: {\n borderTopLeftRadius: 5,\n },\n right: {\n borderTopRightRadius: 5,\n },\n }}\n />\n );\n }\n renderMessage(props) {\n return (\n <PlussChatMessage\n key={props.RowId}\n colourBrandingMain={this.props.colourBrandingMain}\n onPressReply={() => {\n this.onReply(props.currentMessage);\n }}\n {...props}\n />\n );\n }\n renderMessageText(messageTextProps) {\n return (\n <MessageText\n {...messageTextProps}\n textStyle={{\n left: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: TEXT_DARKEST,\n marginTop: 10,\n marginBottom: 10,\n marginLeft: 15,\n marginRight: 15,\n },\n right: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: this.props.colourBrandingMain,\n marginTop: 10,\n marginBottom: 10,\n marginLeft: 15,\n marginRight: 15,\n },\n }}\n linkStyle={{\n left: {\n color: TEXT_DARKEST,\n },\n right: {\n color: this.props.colourBrandingMain,\n },\n }}\n />\n );\n }\n renderTime() {\n return null;\n }\n renderDay(dayProps) {\n return (\n <PlussChatTime\n {...dayProps}\n textStyle={{\n fontFamily: 'sf-semibold',\n color: TEXT_DARK,\n fontSize: 12,\n }}\n />\n );\n }\n renderCustomView({ currentMessage, position }) {\n if (currentMessage.image) {\n const images = typeof currentMessage.image === 'string' ? [currentMessage.image] : currentMessage.image;\n const containerWidth = (() => {\n if (images.length === 0) return 0;\n if (images.length === 1) return IMAGE_SIZE_LARGE;\n if (images.length <= IMAGES_PER_ROW) return (IMAGE_SIZE_SMALL + IMAGE_MARGIN) * images.length;\n return (IMAGE_SIZE_SMALL + IMAGE_MARGIN) * IMAGES_PER_ROW;\n })();\n return (\n <View style={[styles.imagesContainer, { width: containerWidth, paddingVertical: currentMessage.text ? 0 : 20 }]}>\n {images.map(img => {\n const thumb = getThumb300(img);\n if (isVideo(img)) {\n return (\n <TouchableOpacity key={thumb} onPress={this.toggleFullscreenVideo.bind(this, img)}>\n <ImageBackground style={images.length > 1 ? styles.messageImageSmall : styles.messageImageLarge} source={{ uri: thumb }}>\n <View style={styles.imagePlayContainer}>\n <Icon name=\"play\" type=\"font-awesome\" iconStyle={styles.imageControlIcon} />\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n }\n return (\n <TouchableOpacity key={thumb} onPress={() => this.onPressImage(images, img)}>\n <Image source={{ uri: thumb }} style={images.length > 1 ? styles.messageImageSmall : styles.messageImageLarge} />\n </TouchableOpacity>\n );\n })}\n </View>\n );\n }\n if (!_.isEmpty(currentMessage.attachments)) {\n return (\n <View>\n {currentMessage.attachments.map((url, i) => {\n return (\n <Attachment\n onPress={() => {\n this.onOpenAttachment(url);\n }}\n key={i}\n title={getFileName(url)}\n />\n );\n })}\n </View>\n );\n }\n if (currentMessage.event) {\n return (\n <TouchableOpacity onPress={this.onPressEvent.bind(this, currentMessage.event)}>\n <View style={styles.eventContainer[position]}>\n <Image style={[styles.eventImage, styles.eventImageMargin[position]]} source={{ uri: currentMessage.event.Thumbnail }} />\n <View style={styles.eventInfo}>\n <Text\n numberOfLines={3}\n style={[styles.eventTitle, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}\n >\n {currentMessage.event.Title}\n </Text>\n <Text style={[styles.eventDate, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}>\n {moment\n .utc(currentMessage.event.StartTime)\n .local()\n .format('ddd D MMM')}\n </Text>\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n if (currentMessage.attachment) {\n return (\n <TouchableOpacity onPress={this.onPressAttachment.bind(this, currentMessage.attachment)}>\n <View style={styles.eventContainer[position]}>\n <Image style={[styles.eventImage, styles.eventImageMargin[position]]} source={{ uri: currentMessage.attachment.Thumbnail }} />\n <View style={styles.eventInfo}>\n <Text\n numberOfLines={3}\n style={[styles.eventTitle, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}\n >\n {currentMessage.attachment.Title}\n </Text>\n {currentMessage.attachment.StartTime && (\n <Text style={[styles.eventDate, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}>\n {moment\n .utc(currentMessage.attachment.StartTime)\n .local()\n .format('ddd D MMM')}\n </Text>\n )}\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n return null;\n }\n\n renderSend(props) {\n return (\n <View style={[{ position: 'absolute', top: 0, right: 0 }, !!this.state.replyingTo && { marginTop: 38 }]}>\n {(!_.isEmpty(props.text) || this.hasImagesReady(props.imagesToUpload)) && (\n <Send\n {...props}\n alwaysShowSend={true}\n containerStyle={[\n styles.sendContainer,\n {\n width: this.MIN_COMPOSER_HEIGHT,\n height: this.MIN_COMPOSER_HEIGHT,\n },\n ]}\n >\n <Icon name={'paper-plane'} type=\"font-awesome\" iconStyle={[styles.send, { width: this.MIN_COMPOSER_HEIGHT }]} />\n </Send>\n )}\n <TouchableOpacity\n onPress={this.showUploadMenu.bind(this)}\n style={[\n styles.sendContainer,\n {\n right: _.isEmpty(props.text) && !this.hasImagesReady(props.imagesToUpload) ? 0 : 8 + this.MIN_COMPOSER_HEIGHT,\n width: this.MIN_COMPOSER_HEIGHT,\n height: this.MIN_COMPOSER_HEIGHT,\n },\n ]}\n >\n <Icon name={'picture-o'} type=\"font-awesome\" iconStyle={[styles.send, { width: this.MIN_COMPOSER_HEIGHT }]} />\n </TouchableOpacity>\n </View>\n );\n }\n\n renderAccessory(props) {\n const hasAttachment = this.hasImagesAttached(props.imagesToUpload);\n if (!hasAttachment) {\n return null;\n }\n return (\n <ScrollView horizontal style={styles.uploadImagesContainer}>\n {props.imagesToUpload.map(image => {\n if (image.uploading) {\n return (\n <ImageUploadProgress\n key={image.uploadUri}\n uploader={this.imageUploader}\n image={image}\n color={this.props.colourBrandingMain}\n style={{ width: IMAGE_PREVIEW_SIZE, marginRight: 10 }}\n progressTextStyle={{ fontSize: 10 }}\n />\n );\n }\n const isVideoUrl = isVideo(image.url);\n return (\n <View key={image.url} style={styles.accessoryImageContainer}>\n <ImageBackground\n style={styles.accessoryImage}\n imageStyle={styles.accessoryImageBorder}\n source={getImageSource(image.thumbNailExists ? image.thumbNailUrl : image.url)}\n >\n {isVideoUrl && (\n <View style={styles.imagePlayContainer}>\n <TouchableOpacity onPress={this.toggleFullscreenVideo.bind(this, image.url)}>\n <Icon name=\"play\" type=\"font-awesome\" iconStyle={styles.imageControlIcon} />\n </TouchableOpacity>\n </View>\n )}\n </ImageBackground>\n <TouchableOpacity\n style={styles.previewItemRemoveButton}\n onPress={() => this.onRemoveImage(image.url)}\n hitSlop={{ top: 8, right: 8, bottom: 8, left: 8 }}\n >\n <View style={[styles.previewItemRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.previewItemRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n );\n })}\n </ScrollView>\n );\n }\n\n renderInputToolbar(props) {\n const hasAttachment = this.hasImagesAttached(props.imagesToUpload);\n return (\n <InputToolbar\n {...props}\n containerStyle={styles.inputContainer}\n renderComposer={this.renderComposer.bind(this)}\n renderAccessory={hasAttachment ? this.renderAccessory.bind(this) : null}\n accessoryStyle={hasAttachment && styles.accessory}\n />\n );\n }\n renderFooter() {\n // if (this.state.keyboardOpen) {\n // return null;\n // }\n // fixes an issue where there's no gap between bottom message and reply container\n return <View style={{ height: 10 }} />;\n }\n renderLoading() {\n return (\n <View style={{ marginTop: 15, justifyContent: 'center', alignContent: 'center' }}>\n <Spinner size={'small'} color={this.props.colourBrandingMain} />\n </View>\n );\n }\n renderAvatar(props) {\n return (\n <View style={{ marginRight: 2 }}>\n <ProfilePic ProfilePic={props.currentMessage.user.avatar} Diameter={28} />\n </View>\n );\n }\n renderComposer(props) {\n return (\n <View style={styles.composerContainer}>\n {this.state.replyingTo && (\n <View style={styles.replyingTo}>\n <TextStyle type=\"body\">\n Replying to {_.isEmpty(this.state.replyingTo?.user?.name) ? 'message' : this.state.replyingTo?.user?.name}\n </TextStyle>\n <TouchableOpacity\n style={styles.replyingRemoveButton}\n onPress={() => this.onReply(null)}\n hitSlop={{ top: 8, right: 8, bottom: 8, left: 8 }}\n >\n <View style={[styles.replyingRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.replyingRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n )}\n <View style={styles.composerInputWrapper}>\n <View\n style={[\n styles.input,\n {\n //height: props.composerHeight + 10,\n //borderRadius: (this.MIN_COMPOSER_HEIGHT + 10) / 2,\n marginRight:\n _.isEmpty(props.text) && !this.hasImagesReady(props.imagesToUpload)\n ? 8 + this.MIN_COMPOSER_HEIGHT\n : 2 * (this.MIN_COMPOSER_HEIGHT + 8),\n justifyContent: 'center',\n },\n Platform.OS === 'ios' && {\n height: props.composerHeight + 10,\n },\n ]}\n >\n <Composer\n {...props}\n //composerHeight={props.composerHeight}\n placeholder=\"Type a message...\"\n textInputStyle={styles.inputText}\n textInputProps={{\n onFocus: this.onFocusInput.bind(this),\n onBlur: this.onBlurInput.bind(this),\n }}\n />\n </View>\n </View>\n </View>\n );\n }\n\n /***\n * Main Render\n */\n renderChat() {\n const { tabCount, noTab } = this.props;\n const iosBottomOffset = (tabCount === 1 || noTab ? -10 : 52) + getBottomSpace();\n const minInputToolbarHeight =\n this.MIN_COMPOSER_HEIGHT + 16 + (this.state.replyingTo ? 30 : 0) + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);\n\n return (\n <GiftedChat\n alwaysShowSend={false}\n keyboardShouldPersistTaps={'never'}\n renderAvatarOnTop\n minInputToolbarHeight={minInputToolbarHeight}\n bottomOffset={Platform.OS === 'android' ? 0 : iosBottomOffset}\n onSend={this.sendMessages.bind(this)}\n messages={this.state.messages}\n user={this.state.currentUser}\n renderBubble={this.renderBubble.bind(this)}\n renderMessage={this.renderMessage.bind(this)}\n renderMessageText={this.renderMessageText.bind(this)}\n renderTime={this.renderTime.bind(this)}\n renderDay={this.renderDay.bind(this)}\n renderCustomView={this.renderCustomView.bind(this)}\n renderSend={this.renderSend.bind(this)}\n renderInputToolbar={this.renderInputToolbar.bind(this)}\n renderFooter={this.renderFooter.bind(this)}\n renderLoading={this.renderLoading.bind(this)}\n renderAvatar={this.renderAvatar.bind(this)}\n imagesToUpload={this.state.imagesToUpload}\n />\n );\n }\n\n renderImageUploader() {\n return (\n <ImageUploader\n ref={ref => (this.imageUploader = ref)}\n onUploadStarted={this.onUploadStarted}\n onUploadProgress={this.onUploadProgress}\n onUploadSuccess={this.onUploadSuccess}\n onUploadFailed={this.onUploadFailed}\n onLibrarySelected={this.onLibrarySelected}\n quality={0.8}\n allowsEditing={false}\n fileName={'imageInput'}\n popupTitle={'Add Image'}\n userId={this.props.user.uid}\n multiple\n allowVideo\n />\n );\n }\n\n renderImagePopup() {\n const { imagePopupOpen, imagePopupSource, imagePopupIndex } = this.state;\n return (\n <ImagePopup\n visible={imagePopupOpen}\n images={imagePopupSource}\n index={imagePopupIndex}\n onClose={this.closeGallery.bind(this)}\n ref=\"imagePopup\"\n />\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 renderPDF() {\n if (_.isEmpty(this.state.selectedPDF)) {\n return null;\n }\n return (\n <PDFPopup source={this.state.selectedPDF} onClose={this.onCloseAttachment} title={getFileName(this.state.selectedPDF)} pdfCount={1} />\n );\n }\n\n render() {\n if (Platform.OS === 'android' && !this.props.noAndroidAvoid) {\n return (\n <KeyboardAvoidingView behavior={Platform.OS === 'ios' && 'padding'} style={styles.chatContainer}>\n {this.renderChat()}\n {this.renderImageUploader()}\n {this.renderImagePopup()}\n {this.renderVideoPlayerPopup()}\n {this.renderPDF()}\n </KeyboardAvoidingView>\n );\n }\n return (\n <View style={styles.chatContainer}>\n {this.renderChat()}\n {this.renderImageUploader()}\n {this.renderImagePopup()}\n {this.renderVideoPlayerPopup()}\n {this.renderPDF()}\n </View>\n );\n }\n}\n\nconst styles = {\n chatContainer: {\n flex: 1,\n justifyContent: 'center',\n },\n eventContainer: {\n left: {\n paddingTop: 5,\n paddingLeft: 15,\n paddingRight: 15,\n paddingBottom: 5,\n flexDirection: 'row',\n },\n right: {\n paddingTop: 5,\n paddingLeft: 15,\n paddingRight: 15,\n paddingBottom: 5,\n flexDirection: 'row-reverse',\n },\n },\n eventImage: {\n width: 80,\n height: 80,\n resizeMode: 'cover',\n borderRadius: 2,\n },\n eventImageMargin: {\n right: {\n marginLeft: 15,\n },\n left: {\n marginRight: 15,\n },\n },\n eventInfo: {\n minHeight: 80,\n width: 150,\n },\n eventTitle: {\n fontSize: 12,\n fontFamily: 'sf-bold',\n backgroundColor: 'rgba(255,255,255,0)',\n },\n eventInfoAlign: {\n left: {\n textAlign: 'left',\n },\n right: {\n textAlign: 'right',\n },\n },\n messageImageLarge: {\n width: IMAGE_SIZE_LARGE,\n height: IMAGE_SIZE_LARGE,\n borderRadius: 2,\n alignSelf: 'center',\n },\n messageImageSmall: {\n width: IMAGE_SIZE_SMALL,\n height: IMAGE_SIZE_SMALL,\n borderRadius: 2,\n alignSelf: 'center',\n marginRight: IMAGE_MARGIN,\n marginBottom: IMAGE_MARGIN,\n },\n eventDate: {\n fontSize: 12,\n fontFamily: 'sf-regular',\n backgroundColor: 'rgba(255,255,255,0)',\n },\n inputContainer: {\n backgroundColor: '#fff',\n paddingVertical: 8,\n paddingHorizontal: 8,\n },\n inputText: {\n color: TEXT_DARKEST,\n fontSize: 14,\n fontFamily: 'sf-medium',\n },\n input: {\n margin: 0,\n backgroundColor: BG_GREY,\n borderRadius: 5,\n flex: 1,\n },\n composerContainer: {\n flex: 1,\n },\n composerInputWrapper: {\n flex: 1,\n flexDirection: 'row',\n },\n replyingTo: {\n minHeight: 30,\n flexDirection: 'row',\n alignItems: 'center',\n borderBottomWidth: 1,\n borderBottomColor: LINEGREY,\n marginBottom: 8,\n },\n replyingRemoveButton: {\n marginLeft: 10,\n },\n replyingRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n replyingRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 1,\n },\n sendContainer: {\n position: 'absolute',\n top: 0,\n right: 0,\n height: 30,\n width: 30,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fff',\n },\n send: {\n fontSize: 15,\n color: TEXT_BLUEGREY,\n fontSize: 24,\n textAlign: 'center',\n },\n accessory: {\n height: IMAGE_PREVIEW_AREA_HEIGHT,\n borderTopWidth: 1,\n borderTopColor: LINEGREY,\n paddingTop: 8,\n marginTop: 8,\n },\n accessoryImageContainer: {\n paddingRight: 8,\n paddingTop: 8,\n marginRight: 5,\n },\n accessoryImage: {\n width: IMAGE_PREVIEW_SIZE,\n height: IMAGE_PREVIEW_SIZE,\n },\n accessoryImageBorder: {\n borderRadius: 2,\n },\n settingDropDownOpen: {\n height: 'auto',\n },\n imagesContainer: {\n marginLeft: 10,\n marginRight: 10,\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n uploadImagesContainer: {\n flexDirection: 'row',\n overflow: 'visible',\n },\n previewItemRemoveButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n previewItemRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n previewItemRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 1,\n },\n imagePlayContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n },\n imageControlIcon: {\n color: '#fff',\n fontSize: 20,\n textShadowColor: 'rgba(0,0,0,0.3)',\n textShadowOffset: { width: 2, height: 2 },\n },\n};\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n colourBrandingMain: getMainBrandingColourFromState(state),\n colourBrandingLight: getLightBrandingColourFromState(state),\n tabCount: getEnabledTabsFromState(state).length,\n };\n};\n\nexport default connect(mapStateToProps, {})(PlussChat);\n"]}
|
package/package.json
CHANGED
|
@@ -2,9 +2,11 @@ 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
|
+
import * as Sharing from 'expo-sharing';
|
|
5
7
|
import { Pl60Icon } from '../fonts';
|
|
6
8
|
import { Spinner } from './Spinner';
|
|
7
|
-
import { StatusBarHeight } from '../helper';
|
|
9
|
+
import { StatusBarHeight, getFileName } from '../helper';
|
|
8
10
|
|
|
9
11
|
const SCREEN_HEIGHT = Dimensions.get('window').height;
|
|
10
12
|
|
|
@@ -34,6 +36,11 @@ class PDFPopup extends Component {
|
|
|
34
36
|
return `${linkPrefix}${this.props.source}`;
|
|
35
37
|
}
|
|
36
38
|
|
|
39
|
+
download = async () => {
|
|
40
|
+
const downloadedFile = await FileSystem.downloadAsync(this.props.source, FileSystem.documentDirectory + getFileName(this.props.source));
|
|
41
|
+
const shareResult = await Sharing.shareAsync(downloadedFile.uri, { UTI: 'public.item' });
|
|
42
|
+
};
|
|
43
|
+
|
|
37
44
|
closePopup() {
|
|
38
45
|
this.props.onClose();
|
|
39
46
|
}
|
|
@@ -77,6 +84,9 @@ class PDFPopup extends Component {
|
|
|
77
84
|
<View style={styles.titleContainer}>
|
|
78
85
|
<Text style={styles.title}>{this.props.title}</Text>
|
|
79
86
|
</View>
|
|
87
|
+
<TouchableOpacity onPress={this.download} activeOpacity={0.6}>
|
|
88
|
+
<Icon type="font-awesome" name="cloud-download" iconStyle={[styles.menuIcon]} />
|
|
89
|
+
</TouchableOpacity>
|
|
80
90
|
</View>
|
|
81
91
|
<View style={{ flex: 1, backgroundColor: '#fff' }}>
|
|
82
92
|
{this.state.loaded ? null : <Spinner style={{ height: SCREEN_HEIGHT - StatusBarHeight(145), flex: 0 }} />}
|
|
@@ -132,7 +142,6 @@ const styles = {
|
|
|
132
142
|
},
|
|
133
143
|
titleContainer: {
|
|
134
144
|
flex: 1,
|
|
135
|
-
paddingRight: 55,
|
|
136
145
|
},
|
|
137
146
|
title: {
|
|
138
147
|
color: '#fff',
|
|
@@ -441,8 +441,6 @@ class PlussChat extends Component {
|
|
|
441
441
|
);
|
|
442
442
|
}
|
|
443
443
|
if (!_.isEmpty(currentMessage.attachments)) {
|
|
444
|
-
console.log('rendering attachments');
|
|
445
|
-
console.log(currentMessage.attachments);
|
|
446
444
|
return (
|
|
447
445
|
<View>
|
|
448
446
|
{currentMessage.attachments.map((url, i) => {
|
|
@@ -546,6 +544,10 @@ class PlussChat extends Component {
|
|
|
546
544
|
}
|
|
547
545
|
|
|
548
546
|
renderAccessory(props) {
|
|
547
|
+
const hasAttachment = this.hasImagesAttached(props.imagesToUpload);
|
|
548
|
+
if (!hasAttachment) {
|
|
549
|
+
return null;
|
|
550
|
+
}
|
|
549
551
|
return (
|
|
550
552
|
<ScrollView horizontal style={styles.uploadImagesContainer}>
|
|
551
553
|
{props.imagesToUpload.map(image => {
|
|
@@ -594,21 +596,16 @@ class PlussChat extends Component {
|
|
|
594
596
|
}
|
|
595
597
|
|
|
596
598
|
renderInputToolbar(props) {
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
accessoryStyle={styles.accessory}
|
|
608
|
-
/>
|
|
609
|
-
);
|
|
610
|
-
}
|
|
611
|
-
return toolbar;
|
|
599
|
+
const hasAttachment = this.hasImagesAttached(props.imagesToUpload);
|
|
600
|
+
return (
|
|
601
|
+
<InputToolbar
|
|
602
|
+
{...props}
|
|
603
|
+
containerStyle={styles.inputContainer}
|
|
604
|
+
renderComposer={this.renderComposer.bind(this)}
|
|
605
|
+
renderAccessory={hasAttachment ? this.renderAccessory.bind(this) : null}
|
|
606
|
+
accessoryStyle={hasAttachment && styles.accessory}
|
|
607
|
+
/>
|
|
608
|
+
);
|
|
612
609
|
}
|
|
613
610
|
renderFooter() {
|
|
614
611
|
// if (this.state.keyboardOpen) {
|
|
@@ -632,7 +629,6 @@ class PlussChat extends Component {
|
|
|
632
629
|
);
|
|
633
630
|
}
|
|
634
631
|
renderComposer(props) {
|
|
635
|
-
//console.log(props.composerHeight);
|
|
636
632
|
return (
|
|
637
633
|
<View style={styles.composerContainer}>
|
|
638
634
|
{this.state.replyingTo && (
|
|
@@ -651,33 +647,35 @@ class PlussChat extends Component {
|
|
|
651
647
|
</TouchableOpacity>
|
|
652
648
|
</View>
|
|
653
649
|
)}
|
|
654
|
-
<View
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
650
|
+
<View style={styles.composerInputWrapper}>
|
|
651
|
+
<View
|
|
652
|
+
style={[
|
|
653
|
+
styles.input,
|
|
654
|
+
{
|
|
655
|
+
//height: props.composerHeight + 10,
|
|
656
|
+
//borderRadius: (this.MIN_COMPOSER_HEIGHT + 10) / 2,
|
|
657
|
+
marginRight:
|
|
658
|
+
_.isEmpty(props.text) && !this.hasImagesReady(props.imagesToUpload)
|
|
659
|
+
? 8 + this.MIN_COMPOSER_HEIGHT
|
|
660
|
+
: 2 * (this.MIN_COMPOSER_HEIGHT + 8),
|
|
661
|
+
justifyContent: 'center',
|
|
662
|
+
},
|
|
663
|
+
Platform.OS === 'ios' && {
|
|
664
|
+
height: props.composerHeight + 10,
|
|
665
|
+
},
|
|
666
|
+
]}
|
|
667
|
+
>
|
|
668
|
+
<Composer
|
|
669
|
+
{...props}
|
|
670
|
+
//composerHeight={props.composerHeight}
|
|
671
|
+
placeholder="Type a message..."
|
|
672
|
+
textInputStyle={styles.inputText}
|
|
673
|
+
textInputProps={{
|
|
674
|
+
onFocus: this.onFocusInput.bind(this),
|
|
675
|
+
onBlur: this.onBlurInput.bind(this),
|
|
676
|
+
}}
|
|
677
|
+
/>
|
|
678
|
+
</View>
|
|
681
679
|
</View>
|
|
682
680
|
</View>
|
|
683
681
|
);
|
|
@@ -689,7 +687,8 @@ class PlussChat extends Component {
|
|
|
689
687
|
renderChat() {
|
|
690
688
|
const { tabCount, noTab } = this.props;
|
|
691
689
|
const iosBottomOffset = (tabCount === 1 || noTab ? -10 : 52) + getBottomSpace();
|
|
692
|
-
const minInputToolbarHeight =
|
|
690
|
+
const minInputToolbarHeight =
|
|
691
|
+
this.MIN_COMPOSER_HEIGHT + 16 + (this.state.replyingTo ? 30 : 0) + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);
|
|
693
692
|
|
|
694
693
|
return (
|
|
695
694
|
<GiftedChat
|
|
@@ -880,6 +879,10 @@ const styles = {
|
|
|
880
879
|
composerContainer: {
|
|
881
880
|
flex: 1,
|
|
882
881
|
},
|
|
882
|
+
composerInputWrapper: {
|
|
883
|
+
flex: 1,
|
|
884
|
+
flexDirection: 'row',
|
|
885
|
+
},
|
|
883
886
|
replyingTo: {
|
|
884
887
|
minHeight: 30,
|
|
885
888
|
flexDirection: 'row',
|