@plusscommunities/pluss-core-app 8.0.28 → 8.0.31

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.
Files changed (211) hide show
  1. package/dist/module/actions/FollowerActions.js +34 -0
  2. package/dist/module/actions/FollowerActions.js.map +1 -0
  3. package/dist/module/actions/MediaActions.js +29 -0
  4. package/dist/module/actions/MediaActions.js.map +1 -0
  5. package/dist/module/actions/ResidentActions.js +26 -0
  6. package/dist/module/actions/ResidentActions.js.map +1 -0
  7. package/dist/module/actions/UserActions.js +223 -0
  8. package/dist/module/actions/UserActions.js.map +1 -0
  9. package/dist/module/actions/UserSettingsActions.js +14 -0
  10. package/dist/module/actions/UserSettingsActions.js.map +1 -0
  11. package/dist/module/actions/index.js +6 -0
  12. package/dist/module/actions/index.js.map +1 -0
  13. package/dist/module/actions/types.js +17 -0
  14. package/dist/module/actions/types.js.map +1 -0
  15. package/dist/module/apis/analyticsActions.js +20 -0
  16. package/dist/module/apis/analyticsActions.js.map +1 -0
  17. package/dist/module/apis/contactActions.js +27 -0
  18. package/dist/module/apis/contactActions.js.map +1 -0
  19. package/dist/module/apis/eventActions.js +161 -0
  20. package/dist/module/apis/eventActions.js.map +1 -0
  21. package/dist/module/apis/fileActions.js +93 -0
  22. package/dist/module/apis/fileActions.js.map +1 -0
  23. package/dist/module/apis/followerActions.js +38 -0
  24. package/dist/module/apis/followerActions.js.map +1 -0
  25. package/dist/module/apis/index.js +13 -0
  26. package/dist/module/apis/index.js.map +1 -0
  27. package/dist/module/apis/notificationActions.js +60 -0
  28. package/dist/module/apis/notificationActions.js.map +1 -0
  29. package/dist/module/apis/profileActions.js +14 -0
  30. package/dist/module/apis/profileActions.js.map +1 -0
  31. package/dist/module/apis/reactionActions.js +76 -0
  32. package/dist/module/apis/reactionActions.js.map +1 -0
  33. package/dist/module/apis/settingActions.js +22 -0
  34. package/dist/module/apis/settingActions.js.map +1 -0
  35. package/dist/module/apis/stringActions.js +30 -0
  36. package/dist/module/apis/stringActions.js.map +1 -0
  37. package/dist/module/apis/typeActions.js +15 -0
  38. package/dist/module/apis/typeActions.js.map +1 -0
  39. package/dist/module/apis/userActions.js +104 -0
  40. package/dist/module/apis/userActions.js.map +1 -0
  41. package/dist/module/assets/icons/fontawesome/fa-brands-400.ttf +0 -0
  42. package/dist/module/assets/icons/fontawesome/fa-light-300.ttf +0 -0
  43. package/dist/module/assets/icons/fontawesome/fa-regular-400.ttf +0 -0
  44. package/dist/module/assets/icons/fontawesome/fa-solid-900.ttf +0 -0
  45. package/dist/module/assets/icons/fontawesome/fa-thin-100.ttf +0 -0
  46. package/dist/module/assets/icons/fontawesome/fa7-glyphmap.json +4205 -0
  47. package/dist/module/assets/icons/reactions/heart.png +0 -0
  48. package/dist/module/assets/icons/reactions/party.png +0 -0
  49. package/dist/module/assets/icons/reactions/sad.png +0 -0
  50. package/dist/module/assets/icons/reactions/smile.png +0 -0
  51. package/dist/module/colours.js +165 -0
  52. package/dist/module/colours.js.map +1 -0
  53. package/dist/module/components/AddButton.js +43 -0
  54. package/dist/module/components/AddButton.js.map +1 -0
  55. package/dist/module/components/AddToCalendarButton.js +225 -0
  56. package/dist/module/components/AddToCalendarButton.js.map +1 -0
  57. package/dist/module/components/Attachment.js +55 -0
  58. package/dist/module/components/Attachment.js.map +1 -0
  59. package/dist/module/components/AudienceSelectorLauncher.js +64 -0
  60. package/dist/module/components/AudienceSelectorLauncher.js.map +1 -0
  61. package/dist/module/components/AudienceSelectorPage.js +351 -0
  62. package/dist/module/components/AudienceSelectorPage.js.map +1 -0
  63. package/dist/module/components/AutoOffsetImage.js +184 -0
  64. package/dist/module/components/AutoOffsetImage.js.map +1 -0
  65. package/dist/module/components/BackButton.js +58 -0
  66. package/dist/module/components/BackButton.js.map +1 -0
  67. package/dist/module/components/CalendarPopup.js +126 -0
  68. package/dist/module/components/CalendarPopup.js.map +1 -0
  69. package/dist/module/components/CategoryTabs.js +155 -0
  70. package/dist/module/components/CategoryTabs.js.map +1 -0
  71. package/dist/module/components/CommentReply.js +334 -0
  72. package/dist/module/components/CommentReply.js.map +1 -0
  73. package/dist/module/components/CommentSection.js +823 -0
  74. package/dist/module/components/CommentSection.js.map +1 -0
  75. package/dist/module/components/ConfirmPopup.js +109 -0
  76. package/dist/module/components/ConfirmPopup.js.map +1 -0
  77. package/dist/module/components/ConfirmationPopup.js +72 -0
  78. package/dist/module/components/ConfirmationPopup.js.map +1 -0
  79. package/dist/module/components/DocumentUploader.js +253 -0
  80. package/dist/module/components/DocumentUploader.js.map +1 -0
  81. package/dist/module/components/DropDownItem.js +75 -0
  82. package/dist/module/components/DropDownItem.js.map +1 -0
  83. package/dist/module/components/DropDownMenu.js +41 -0
  84. package/dist/module/components/DropDownMenu.js.map +1 -0
  85. package/dist/module/components/EmptyStateMain.js +51 -0
  86. package/dist/module/components/EmptyStateMain.js.map +1 -0
  87. package/dist/module/components/EmptyStateWidget.js +48 -0
  88. package/dist/module/components/EmptyStateWidget.js.map +1 -0
  89. package/dist/module/components/FontScaleButton.js +37 -0
  90. package/dist/module/components/FontScaleButton.js.map +1 -0
  91. package/dist/module/components/FontScalePopup.js +76 -0
  92. package/dist/module/components/FontScalePopup.js.map +1 -0
  93. package/dist/module/components/Forbidden.js +58 -0
  94. package/dist/module/components/Forbidden.js.map +1 -0
  95. package/dist/module/components/FormCard.js +25 -0
  96. package/dist/module/components/FormCard.js.map +1 -0
  97. package/dist/module/components/FormCardSection.js +214 -0
  98. package/dist/module/components/FormCardSection.js.map +1 -0
  99. package/dist/module/components/FormCardSectionOptionLauncher.js +73 -0
  100. package/dist/module/components/FormCardSectionOptionLauncher.js.map +1 -0
  101. package/dist/module/components/FormattedText.js +133 -0
  102. package/dist/module/components/FormattedText.js.map +1 -0
  103. package/dist/module/components/GenericInput.js +151 -0
  104. package/dist/module/components/GenericInput.js.map +1 -0
  105. package/dist/module/components/GenericInputSection.js +173 -0
  106. package/dist/module/components/GenericInputSection.js.map +1 -0
  107. package/dist/module/components/Header.js +459 -0
  108. package/dist/module/components/Header.js.map +1 -0
  109. package/dist/module/components/Icon.js +109 -0
  110. package/dist/module/components/Icon.js.map +1 -0
  111. package/dist/module/components/ImagePopup.js +400 -0
  112. package/dist/module/components/ImagePopup.js.map +1 -0
  113. package/dist/module/components/ImageUploadProgress.js +69 -0
  114. package/dist/module/components/ImageUploadProgress.js.map +1 -0
  115. package/dist/module/components/ImageUploader.js +831 -0
  116. package/dist/module/components/ImageUploader.js.map +1 -0
  117. package/dist/module/components/InlineButton.js +66 -0
  118. package/dist/module/components/InlineButton.js.map +1 -0
  119. package/dist/module/components/Input.js +156 -0
  120. package/dist/module/components/Input.js.map +1 -0
  121. package/dist/module/components/LoadingCircles.js +219 -0
  122. package/dist/module/components/LoadingCircles.js.map +1 -0
  123. package/dist/module/components/LoadingIndicator.js +86 -0
  124. package/dist/module/components/LoadingIndicator.js.map +1 -0
  125. package/dist/module/components/LoadingStateWidget.js +46 -0
  126. package/dist/module/components/LoadingStateWidget.js.map +1 -0
  127. package/dist/module/components/MediaPlayer.js +407 -0
  128. package/dist/module/components/MediaPlayer.js.map +1 -0
  129. package/dist/module/components/MiddlePopup.js +49 -0
  130. package/dist/module/components/MiddlePopup.js.map +1 -0
  131. package/dist/module/components/PDFPopup.js +296 -0
  132. package/dist/module/components/PDFPopup.js.map +1 -0
  133. package/dist/module/components/PlussChat.js +1078 -0
  134. package/dist/module/components/PlussChat.js.map +1 -0
  135. package/dist/module/components/PlussChatMessage.js +299 -0
  136. package/dist/module/components/PlussChatMessage.js.map +1 -0
  137. package/dist/module/components/PlussChatTime.js +59 -0
  138. package/dist/module/components/PlussChatTime.js.map +1 -0
  139. package/dist/module/components/Popup.js +126 -0
  140. package/dist/module/components/Popup.js.map +1 -0
  141. package/dist/module/components/PopupMenu.js +120 -0
  142. package/dist/module/components/PopupMenu.js.map +1 -0
  143. package/dist/module/components/PositionedImage.js +313 -0
  144. package/dist/module/components/PositionedImage.js.map +1 -0
  145. package/dist/module/components/ProfilePic.js +105 -0
  146. package/dist/module/components/ProfilePic.js.map +1 -0
  147. package/dist/module/components/RadioButton.js +78 -0
  148. package/dist/module/components/RadioButton.js.map +1 -0
  149. package/dist/module/components/Reaction.js +117 -0
  150. package/dist/module/components/Reaction.js.map +1 -0
  151. package/dist/module/components/Reactions.js +71 -0
  152. package/dist/module/components/Reactions.js.map +1 -0
  153. package/dist/module/components/SharingTools.js +189 -0
  154. package/dist/module/components/SharingTools.js.map +1 -0
  155. package/dist/module/components/Spinner.js +22 -0
  156. package/dist/module/components/Spinner.js.map +1 -0
  157. package/dist/module/components/StickyFooter.js +34 -0
  158. package/dist/module/components/StickyFooter.js.map +1 -0
  159. package/dist/module/components/Text.js +57 -0
  160. package/dist/module/components/Text.js.map +1 -0
  161. package/dist/module/components/TickIcon.js +24 -0
  162. package/dist/module/components/TickIcon.js.map +1 -0
  163. package/dist/module/components/Toggle.js +66 -0
  164. package/dist/module/components/Toggle.js.map +1 -0
  165. package/dist/module/components/TouchableSearchBar.js +68 -0
  166. package/dist/module/components/TouchableSearchBar.js.map +1 -0
  167. package/dist/module/components/UserListPopup.js +136 -0
  168. package/dist/module/components/UserListPopup.js.map +1 -0
  169. package/dist/module/components/UserListing.js +268 -0
  170. package/dist/module/components/UserListing.js.map +1 -0
  171. package/dist/module/components/VideoPopup.js +113 -0
  172. package/dist/module/components/VideoPopup.js.map +1 -0
  173. package/dist/module/components/WarningPopup.js +85 -0
  174. package/dist/module/components/WarningPopup.js.map +1 -0
  175. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js +289 -0
  176. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js.map +1 -0
  177. package/dist/module/components/expo-image-picker-multiple/ImageTile.js +117 -0
  178. package/dist/module/components/expo-image-picker-multiple/ImageTile.js.map +1 -0
  179. package/dist/module/components/index.js +60 -0
  180. package/dist/module/components/index.js.map +1 -0
  181. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +422 -0
  182. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js.map +1 -0
  183. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js +387 -0
  184. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js.map +1 -0
  185. package/dist/module/config.js +27 -0
  186. package/dist/module/config.js.map +1 -0
  187. package/dist/module/constants.js +18 -0
  188. package/dist/module/constants.js.map +1 -0
  189. package/dist/module/helper.js +424 -0
  190. package/dist/module/helper.js.map +1 -0
  191. package/dist/module/index.js +13 -0
  192. package/dist/module/index.js.map +1 -0
  193. package/dist/module/js/images/detectFaces.js +31 -0
  194. package/dist/module/js/images/detectFaces.js.map +1 -0
  195. package/dist/module/js/images/findLandmarkRange.js +93 -0
  196. package/dist/module/js/images/findLandmarkRange.js.map +1 -0
  197. package/dist/module/js/images/getScaledOffset.js +81 -0
  198. package/dist/module/js/images/getScaledOffset.js.map +1 -0
  199. package/dist/module/js/site/getSiteLevelFromState.js +29 -0
  200. package/dist/module/js/site/getSiteLevelFromState.js.map +1 -0
  201. package/dist/module/js/site/isTVEnabled.js +10 -0
  202. package/dist/module/js/site/isTVEnabled.js.map +1 -0
  203. package/dist/module/session.js +58 -0
  204. package/dist/module/session.js.map +1 -0
  205. package/dist/module/styles.js +67 -0
  206. package/dist/module/styles.js.map +1 -0
  207. package/dist/module/withNavigationFocus.js +30 -0
  208. package/dist/module/withNavigationFocus.js.map +1 -0
  209. package/package.json +1 -1
  210. package/src/components/PDFPopup.js +130 -35
  211. package/src/components/react-native-expo-image-cropper/ExpoImageManipulator.js +91 -87
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Component","View","Image","ImageBackground","TouchableOpacity","KeyboardAvoidingView","Platform","ScrollView","Alert","TextInput","GiftedChat","Bubble","MessageText","Send","InputToolbar","connect","_","moment","Icon","withSafeAreaInsets","Spinner","ProfilePic","PlussChatTime","PDFPopup","Attachment","PlussChatMessage","Text","ConfirmPopup","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","_this$props$insets","_defineProperty","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","onDeleteMessage","user","_id","uid","showDeleteMessageConfirm","messageToDelete","error","console","log","filter","showFullscreenVideo","length","currentVideoUrl","bottomInset","insets","bottom","isSingleTab","tabCount","MIN_COMPOSER_HEIGHT","select","ios","android","currentUser","name","displayName","avatar","isUndefined","profilePic","env","tinyChatDefault","messages","composerHeight","UNSAFE_componentWillMount","updateMessages","UNSAFE_componentWillReceiveProps","nextProps","isEqual","onSend","showUploadMenu","imageUploader","closeGallery","sendMessages","hasImagesReady","text","renderBubble","bubbleProps","wrapperStyle","currentMessage","paddingTop","paddingBottom","minWidth","attachments","paddingHorizontal","createElement","_extends","renderMessageImage","isCustomViewBottom","left","backgroundColor","borderRadius","right","colourBrandingLight","containerToNextStyle","borderBottomLeftRadius","borderBottomRightRadius","containerToPreviousStyle","borderTopLeftRadius","borderTopRightRadius","renderMessage","key","RowId","colourBrandingMain","onPressReply","onReply","onPressDelete","onDelete","renderMessageText","messageTextProps","deleted","textStyle","fontFamily","fontSize","color","marginTop","marginBottom","marginLeft","marginRight","linkStyle","textProps","selectable","renderTime","renderDay","dayProps","renderCustomView","position","containerWidth","style","styles","imagesContainer","width","paddingVertical","thumb","onPress","toggleFullscreenVideo","bind","messageImageSmall","messageImageLarge","source","imagePlayContainer","type","iconStyle","imageControlIcon","onPressImage","onOpenAttachment","title","onPressEvent","eventContainer","eventImage","eventImageMargin","Thumbnail","eventInfo","numberOfLines","eventTitle","eventInfoAlign","Title","eventDate","utc","StartTime","local","format","onPressAttachment","renderSend","buttonTopOffset","showSendButton","top","flexDirection","alignItems","sendContainer","height","send","alwaysShowSend","containerStyle","renderAccessory","hasAttachment","horizontal","uploadImagesContainer","uploader","progressTextStyle","isVideoUrl","accessoryImageContainer","accessoryImage","imageStyle","accessoryImageBorder","previewItemRemoveButton","onRemoveImage","hitSlop","previewItemRemoveContainer","previewItemRemoveIcon","renderInputToolbar","inputContainer","renderComposer","accessoryStyle","accessory","renderFooter","renderLoading","justifyContent","alignContent","size","renderAvatar","Diameter","_this$state$replyingT","_this$state$replyingT2","replyingRemoveButton","replyingRemoveContainer","replyingRemoveIcon","input","flex","maxFontSizeMultiplier","placeholder","multiline","value","onChangeText","onTextChanged","inputText","lineHeight","minHeight","maxHeight","onFocus","onFocusInput","onBlur","onBlurInput","placeholderTextColor","renderChat","minInputToolbarHeight","isKeyboardInternallyHandled","keyboardShouldPersistTaps","renderAvatarOnTop","minComposerHeight","bottomOffset","renderImageUploader","ref","onUploadStarted","onUploadProgress","onUploadSuccess","onUploadFailed","onLibrarySelected","quality","allowsEditing","fileName","popupTitle","userId","multiple","allowVideo","renderImagePopup","visible","index","onClose","renderVideoPlayerPopup","renderPDF","onCloseAttachment","pdfCount","renderDeleteConfirmPopup","onConfirm","onConfirmDeleteMessage","onCancel","onCancelDeleteMessage","yesText","noText","render","behavior","chatContainer","paddingLeft","paddingRight","resizeMode","textAlign","alignSelf","margin","composerContainer","composerInputWrapper","borderBottomWidth","borderBottomColor","borderWidth","borderColor","borderTopWidth","borderTopColor","settingDropDownOpen","flexWrap","overflow","textShadowColor","textShadowOffset","mapStateToProps"],"sources":["PlussChat.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport {\n\tView,\n\tImage,\n\tImageBackground,\n\tTouchableOpacity,\n\tKeyboardAvoidingView,\n\tPlatform,\n\tScrollView,\n\tAlert,\n\tTextInput,\n} from \"react-native\";\nimport {\n\tGiftedChat,\n\tBubble,\n\tMessageText,\n\tSend,\n\tInputToolbar,\n} from \"react-native-gifted-chat\";\nimport { connect } from \"react-redux\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { Icon } from \"@rneui/themed\";\nimport { withSafeAreaInsets } from \"react-native-safe-area-context\";\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 { Text } from \".\";\nimport { ConfirmPopup } from \"./ConfirmPopup\";\nimport {\n\tTEXT_DARK,\n\tLINEGREY,\n\tTEXT_DARKEST,\n\tgetMainBrandingColourFromState,\n\tgetLightBrandingColourFromState,\n\tBG_GREY,\n\tTEXT_BLUEGREY,\n} from \"../colours\";\nimport {\n\tgetEnabledTabsFromState,\n\tget1400,\n\tgetThumb300,\n\timageExists,\n\tisVideo,\n\tgetImageSource,\n\tgetFileName,\n} 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\tconstructor(props) {\n\t\tsuper(props);\n\t\tconst bottomInset = this.props.insets?.bottom ?? 0;\n\t\tconst isSingleTab = this.props.tabCount === 1 && bottomInset > 0;\n\t\tthis.MIN_COMPOSER_HEIGHT = Platform.select({\n\t\t\tios: isSingleTab ? 42 : 33,\n\t\t\tandroid: 41,\n\t\t});\n\n\t\tthis.state = {\n\t\t\tcurrentUser: {\n\t\t\t\t_id: this.props.user.uid,\n\t\t\t\tname: this.props.user.displayName,\n\t\t\t\tavatar:\n\t\t\t\t\t!_.isUndefined(this.props.user.profilePic) &&\n\t\t\t\t\t!_.isEmpty(this.props.user.profilePic)\n\t\t\t\t\t\t? this.props.user.profilePic\n\t\t\t\t\t\t: Config.env.tinyChatDefault,\n\t\t\t},\n\n\t\t\tmessages: [],\n\t\t\timagePopupSource: [],\n\t\t\timagePopupIndex: 0,\n\t\t\timagePopupOpen: false,\n\t\t\timagesToUpload: [],\n\t\t\tshowFullscreenVideo: false,\n\t\t\tcurrentVideoUrl: \"\",\n\t\t\tshowDeleteMessageConfirm: false,\n\t\t\tmessageToDelete: null,\n\t\t\tcomposerHeight: this.MIN_COMPOSER_HEIGHT,\n\t\t};\n\t\tthis.checkThumb = null;\n\t}\n\n\tUNSAFE_componentWillMount() {\n\t\tthis.updateMessages(this.props);\n\t}\n\n\tUNSAFE_componentWillReceiveProps(nextProps) {\n\t\t// Only update if messages actually changed\n\t\tif (nextProps.messages !== this.props.messages) {\n\t\t\tthis.updateMessages(nextProps);\n\t\t}\n\t}\n\n\tupdateMessages(props) {\n\t\t// Only update if messages actually changed\n\t\tif (\n\t\t\t!_.isUndefined(props.messages) &&\n\t\t\t!_.isEqual(props.messages, this.state.messages)\n\t\t) {\n\t\t\tthis.setState({ messages: props.messages });\n\t\t}\n\t}\n\n\t/***\n\t *\n\t * Messaging functionality\n\t */\n\tonSend(messages = []) {\n\t\t// if (this.chatKey) {\n\t\t// this.sendMessage(messages[0]);\n\t\t// }\n\t}\n\n\tonPressEvent = (event) => {\n\t\tServices.navigation.navigate(\"eventDetail\", { event });\n\t};\n\tonPressAttachment = (attachment) => {\n\t\tswitch (attachment.Type) {\n\t\t\tcase \"Event\":\n\t\t\t\tServices.navigation.navigate(\"eventDetail\", { event: attachment });\n\t\t\t\tbreak;\n\t\t\tcase \"Place\":\n\t\t\t\tServices.navigation.navigate(\"placeDetail\", { place: attachment });\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t};\n\n\thasImagesAttached = (imagesToUpload = null) => {\n\t\treturn !_.isEmpty(imagesToUpload || this.state.imagesToUpload);\n\t};\n\n\thasImagesReady = (imagesToUpload = null) => {\n\t\tconst upload = imagesToUpload || this.state.imagesToUpload;\n\t\treturn (\n\t\t\tthis.hasImagesAttached(upload) &&\n\t\t\tupload.every((i) => !i.uploading && i.thumbNailExists)\n\t\t);\n\t};\n\n\twaitForThumbnails = () => {\n\t\tif (this.checkThumb) return;\n\n\t\tthis.checkThumb = setInterval(async () => {\n\t\t\tconst imagesToUpload = [];\n\t\t\tawait Promise.all(\n\t\t\t\tthis.state.imagesToUpload.map((image) => {\n\t\t\t\t\treturn new Promise(async (resolve) => {\n\t\t\t\t\t\tconst newImage = { ...image };\n\t\t\t\t\t\timagesToUpload.push(newImage);\n\t\t\t\t\t\tif (newImage.url && !newImage.thumbNailExists) {\n\t\t\t\t\t\t\tnewImage.uploading = false;\n\t\t\t\t\t\t\tnewImage.allowRetry = false;\n\t\t\t\t\t\t\tnewImage.thumbNailExists = await imageExists(\n\t\t\t\t\t\t\t\tnewImage.thumbNailUrl,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresolve(newImage.thumbNailExists);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t);\n\t\t\tconst thumbnailsExist = imagesToUpload.every(\n\t\t\t\t(image) => !image.url || image.thumbNailExists,\n\t\t\t);\n\t\t\tif (thumbnailsExist) {\n\t\t\t\tclearInterval(this.checkThumb);\n\t\t\t\tthis.checkThumb = null;\n\t\t\t\tthis.setState({ imagesToUpload });\n\t\t\t}\n\t\t}, 2000);\n\t};\n\n\tonOpenAttachment = (a) => {\n\t\tthis.setState({\n\t\t\tselectedPDF: a,\n\t\t});\n\t};\n\n\tonCloseAttachment = () => {\n\t\tthis.setState({\n\t\t\tselectedPDF: null,\n\t\t});\n\t};\n\n\tshowUploadMenu() {\n\t\tthis.imageUploader.showUploadMenu();\n\t}\n\n\tonFocusInput = () => {\n\t\tthis.setState({\n\t\t\tkeyboardOpen: true,\n\t\t});\n\t\tif (this.props.keyboardOpen) {\n\t\t\tthis.props.keyboardOpen();\n\t\t}\n\t};\n\n\tonBlurInput = () => {\n\t\tthis.setState({\n\t\t\tkeyboardOpen: false,\n\t\t});\n\t};\n\n\tonUploadStarted = (uploadUri, imageUri) => {\n\t\tconst imagesToUpload = [\n\t\t\t...this.state.imagesToUpload,\n\t\t\t{\n\t\t\t\tuploading: true,\n\t\t\t\tuploadProgress: \"0%\",\n\t\t\t\tuploadUri,\n\t\t\t\timageUri,\n\t\t\t\tallowRetry: true,\n\t\t\t},\n\t\t];\n\t\tthis.setState({ imagesToUpload });\n\t};\n\n\tonUploadProgress = (progress) => {\n\t\tconst imagesToUpload = [...this.state.imagesToUpload];\n\t\timagesToUpload.map((img) => {\n\t\t\tif (img.uploadUri === progress.uri) {\n\t\t\t\timg.uploadProgress = progress.percentage;\n\t\t\t\timg.uploading = true;\n\t\t\t\timg.allowRetry = true;\n\t\t\t}\n\t\t});\n\t\tthis.setState({ imagesToUpload });\n\t};\n\n\tonUploadSuccess = async (uri, uploadUri) => {\n\t\tconst imagesToUpload = [...this.state.imagesToUpload];\n\t\timagesToUpload.map((img) => {\n\t\t\tif (img.uploadUri === uploadUri && img.uploading) {\n\t\t\t\timg.url = uri.replace(\"/general/\", \"/general1400/\");\n\t\t\t\timg.thumbNailExists = false;\n\t\t\t\timg.thumbNailUrl = getThumb300(img.url);\n\t\t\t\timg.allowRetry = true;\n\t\t\t}\n\t\t});\n\t\tthis.setState({ imagesToUpload }, () => this.waitForThumbnails());\n\t};\n\n\tonUploadFailed = (uploadUri) => {\n\t\tconst imagesToUpload = [...this.state.imagesToUpload];\n\t\timagesToUpload.map((img) => {\n\t\t\tif (img.uploadUri === uploadUri) {\n\t\t\t\timg.uploading = true; // Requried for retry\n\t\t\t\timg.uploadProgress = \"\";\n\t\t\t\timg.allowRetry = true;\n\t\t\t}\n\t\t});\n\t\tthis.setState({ imagesToUpload });\n\t};\n\n\tonLibrarySelected = (uri) => {\n\t\tconst imagesToUpload = [\n\t\t\t...this.state.imagesToUpload,\n\t\t\t{\n\t\t\t\tuploading: false,\n\t\t\t\tallowRetry: false,\n\t\t\t\turl: get1400(uri),\n\t\t\t\tthumbNailExists: true,\n\t\t\t\tthumbNailUrl: getThumb300(uri),\n\t\t\t},\n\t\t];\n\t\tthis.setState({ imagesToUpload });\n\t};\n\n\tonPressImage = (images, selected) => {\n\t\tthis.setState({\n\t\t\timagePopupSource: images,\n\t\t\timagePopupIndex: images.indexOf(selected),\n\t\t\timagePopupOpen: true,\n\t\t});\n\t};\n\n\tonReply = (message) => {\n\t\tthis.setState({\n\t\t\treplyingTo: message,\n\t\t});\n\t};\n\n\tonDelete = (message) => {\n\t\t// Only proceed if delete handler is provided\n\t\tif (!this.props.onDeleteMessage) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Only allow deletion of own messages\n\t\tif (message.user._id !== this.props.user.uid) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({\n\t\t\tshowDeleteMessageConfirm: true,\n\t\t\tmessageToDelete: message,\n\t\t});\n\t};\n\n\tonCancelDeleteMessage = () => {\n\t\tthis.setState({\n\t\t\tshowDeleteMessageConfirm: false,\n\t\t\tmessageToDelete: null,\n\t\t});\n\t};\n\n\tonConfirmDeleteMessage = async () => {\n\t\tconst { messageToDelete } = this.state;\n\t\tif (!messageToDelete) return;\n\n\t\tthis.setState({\n\t\t\tshowDeleteMessageConfirm: false,\n\t\t});\n\n\t\ttry {\n\t\t\t// Call the parent's delete handler if provided\n\t\t\tif (this.props.onDeleteMessage) {\n\t\t\t\tawait this.props.onDeleteMessage(messageToDelete);\n\t\t\t}\n\n\t\t\tthis.setState({\n\t\t\t\tmessageToDelete: null,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\t// Handle error gracefully if parent handler fails\n\t\t\tconsole.log(\"onConfirmDeleteMessage error\", error);\n\t\t\t// Error is already handled by parent component\n\t\t\tthis.setState({ messageToDelete: null });\n\t\t}\n\t};\n\n\tcloseGallery() {\n\t\tthis.setState({\n\t\t\timagePopupSource: [],\n\t\t\timagePopupIndex: 0,\n\t\t\timagePopupOpen: false,\n\t\t});\n\t}\n\n\tonRemoveImage = (url) => {\n\t\tconst imagesToUpload = this.state.imagesToUpload.filter(\n\t\t\t(image) => image.url !== url,\n\t\t);\n\t\tthis.setState({ imagesToUpload });\n\t};\n\n\ttoggleFullscreenVideo = (url) => {\n\t\tif (typeof url !== \"string\") url = \"\";\n\t\tthis.setState({\n\t\t\tshowFullscreenVideo: url.length > 0,\n\t\t\tcurrentVideoUrl: url,\n\t\t});\n\t};\n\n\tsendMessages(messages) {\n\t\tif (this.hasImagesAttached()) {\n\t\t\t// Don't allow send if attached images aren't ready\n\t\t\tif (!this.hasImagesReady()) return;\n\t\t\tmessages[0].image = this.state.imagesToUpload.map((image) => image.url);\n\t\t}\n\t\tif (_.isEmpty(messages[0].text)) {\n\t\t\tmessages[0].text = \"\";\n\t\t}\n\t\tif (!messages[0].text && !messages[0].image) return;\n\n\t\tif (this.state.replyingTo) {\n\t\t\tmessages[0].replyingTo = this.state.replyingTo;\n\t\t}\n\n\t\tthis.props.onSend(messages);\n\t\tthis.setState({ imagesToUpload: [], replyingTo: null });\n\t}\n\n\t/**\n\t *\n\t * Render Functions\n\t */\n\trenderBubble(bubbleProps) {\n\t\tconst wrapperStyle = {};\n\t\tif (\n\t\t\t!_.isEmpty(bubbleProps.currentMessage.text) &&\n\t\t\t!_.isEmpty(bubbleProps.currentMessage.image)\n\t\t) {\n\t\t\twrapperStyle.paddingTop = 8;\n\t\t\twrapperStyle.paddingBottom = 16;\n\t\t\twrapperStyle.minWidth = 142; // 110 image width + 16 padding either side\n\t\t}\n\t\tif (!_.isEmpty(bubbleProps.currentMessage.attachments)) {\n\t\t\twrapperStyle.paddingTop = 8;\n\t\t\twrapperStyle.paddingBottom = 16;\n\t\t\twrapperStyle.paddingHorizontal = 16;\n\t\t}\n\t\treturn (\n\t\t\t<Bubble\n\t\t\t\t{...bubbleProps}\n\t\t\t\trenderMessageImage={() => null}\n\t\t\t\tisCustomViewBottom={true}\n\t\t\t\twrapperStyle={{\n\t\t\t\t\tleft: {\n\t\t\t\t\t\tbackgroundColor: LINEGREY,\n\t\t\t\t\t\tborderRadius: 25,\n\t\t\t\t\t\t...wrapperStyle,\n\t\t\t\t\t},\n\t\t\t\t\tright: {\n\t\t\t\t\t\tbackgroundColor: this.props.colourBrandingLight,\n\t\t\t\t\t\tborderRadius: 25,\n\t\t\t\t\t\t...wrapperStyle,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tcontainerToNextStyle={{\n\t\t\t\t\tleft: {\n\t\t\t\t\t\tborderBottomLeftRadius: 5,\n\t\t\t\t\t},\n\t\t\t\t\tright: {\n\t\t\t\t\t\tborderBottomRightRadius: 5,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tcontainerToPreviousStyle={{\n\t\t\t\t\tleft: {\n\t\t\t\t\t\tborderTopLeftRadius: 5,\n\t\t\t\t\t},\n\t\t\t\t\tright: {\n\t\t\t\t\t\tborderTopRightRadius: 5,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n\trenderMessage(props) {\n\t\treturn (\n\t\t\t<PlussChatMessage\n\t\t\t\tkey={props.RowId}\n\t\t\t\tcolourBrandingMain={this.props.colourBrandingMain}\n\t\t\t\tonPressReply={() => {\n\t\t\t\t\tthis.onReply(props.currentMessage);\n\t\t\t\t}}\n\t\t\t\tonPressDelete={\n\t\t\t\t\tthis.props.onDeleteMessage\n\t\t\t\t\t\t? () => {\n\t\t\t\t\t\t\t\tthis.onDelete(props.currentMessage);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: null\n\t\t\t\t}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n\trenderMessageText(messageTextProps) {\n\t\t// If message is deleted, show placeholder text\n\t\tconst props = messageTextProps.currentMessage.deleted\n\t\t\t? {\n\t\t\t\t\t...messageTextProps,\n\t\t\t\t\tcurrentMessage: {\n\t\t\t\t\t\t...messageTextProps.currentMessage,\n\t\t\t\t\t\ttext: \"[Message deleted]\",\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: messageTextProps;\n\n\t\treturn (\n\t\t\t<MessageText\n\t\t\t\t{...props}\n\t\t\t\ttextStyle={{\n\t\t\t\t\tleft: {\n\t\t\t\t\t\tfontFamily: \"sf-regular\",\n\t\t\t\t\t\tfontSize: 16,\n\t\t\t\t\t\tcolor: TEXT_DARKEST,\n\t\t\t\t\t\tmarginTop: 10,\n\t\t\t\t\t\tmarginBottom: 10,\n\t\t\t\t\t\tmarginLeft: 15,\n\t\t\t\t\t\tmarginRight: 15,\n\t\t\t\t\t},\n\t\t\t\t\tright: {\n\t\t\t\t\t\tfontFamily: \"sf-regular\",\n\t\t\t\t\t\tfontSize: 16,\n\t\t\t\t\t\tcolor: this.props.colourBrandingMain,\n\t\t\t\t\t\tmarginTop: 10,\n\t\t\t\t\t\tmarginBottom: 10,\n\t\t\t\t\t\tmarginLeft: 15,\n\t\t\t\t\t\tmarginRight: 15,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tlinkStyle={{\n\t\t\t\t\tleft: {\n\t\t\t\t\t\tcolor: TEXT_DARKEST,\n\t\t\t\t\t},\n\t\t\t\t\tright: {\n\t\t\t\t\t\tcolor: this.props.colourBrandingMain,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\ttextProps={{\n\t\t\t\t\tselectable: true,\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n\trenderTime() {\n\t\treturn null;\n\t}\n\trenderDay(dayProps) {\n\t\treturn (\n\t\t\t<PlussChatTime\n\t\t\t\t{...dayProps}\n\t\t\t\ttextStyle={{\n\t\t\t\t\tfontFamily: \"sf-semibold\",\n\t\t\t\t\tcolor: TEXT_DARK,\n\t\t\t\t\tfontSize: 12,\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n\trenderCustomView({ currentMessage, position }) {\n\t\t// Don't show images or attachments for deleted messages\n\t\tif (currentMessage.deleted) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (currentMessage.image) {\n\t\t\tconst images =\n\t\t\t\ttypeof currentMessage.image === \"string\"\n\t\t\t\t\t? [currentMessage.image]\n\t\t\t\t\t: currentMessage.image;\n\t\t\tconst containerWidth = (() => {\n\t\t\t\tif (images.length === 0) return 0;\n\t\t\t\tif (images.length === 1) return IMAGE_SIZE_LARGE;\n\t\t\t\tif (images.length <= IMAGES_PER_ROW)\n\t\t\t\t\treturn (IMAGE_SIZE_SMALL + IMAGE_MARGIN) * images.length;\n\t\t\t\treturn (IMAGE_SIZE_SMALL + IMAGE_MARGIN) * IMAGES_PER_ROW;\n\t\t\t})();\n\t\t\treturn (\n\t\t\t\t<View\n\t\t\t\t\tstyle={[\n\t\t\t\t\t\tstyles.imagesContainer,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twidth: containerWidth,\n\t\t\t\t\t\t\tpaddingVertical: currentMessage.text ? 0 : 20,\n\t\t\t\t\t\t},\n\t\t\t\t\t]}\n\t\t\t\t>\n\t\t\t\t\t{images.map((img) => {\n\t\t\t\t\t\tconst thumb = getThumb300(img);\n\t\t\t\t\t\tif (isVideo(img)) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\t\tkey={thumb}\n\t\t\t\t\t\t\t\t\tonPress={this.toggleFullscreenVideo.bind(this, img)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ImageBackground\n\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\timages.length > 1\n\t\t\t\t\t\t\t\t\t\t\t\t? styles.messageImageSmall\n\t\t\t\t\t\t\t\t\t\t\t\t: styles.messageImageLarge\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tsource={{ uri: thumb }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<View style={styles.imagePlayContainer}>\n\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\tname=\"play\"\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\t\t\t\ticonStyle={styles.imageControlIcon}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t</ImageBackground>\n\t\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tkey={thumb}\n\t\t\t\t\t\t\t\tonPress={() => this.onPressImage(images, img)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tsource={{ uri: thumb }}\n\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\timages.length > 1\n\t\t\t\t\t\t\t\t\t\t\t? styles.messageImageSmall\n\t\t\t\t\t\t\t\t\t\t\t: styles.messageImageLarge\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\t\tif (!_.isEmpty(currentMessage.attachments)) {\n\t\t\treturn (\n\t\t\t\t<View>\n\t\t\t\t\t{currentMessage.attachments.map((url, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Attachment\n\t\t\t\t\t\t\t\tonPress={() => {\n\t\t\t\t\t\t\t\t\tthis.onOpenAttachment(url);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\ttitle={getFileName(url)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\t\tif (currentMessage.event) {\n\t\t\treturn (\n\t\t\t\t<TouchableOpacity\n\t\t\t\t\tonPress={this.onPressEvent.bind(this, currentMessage.event)}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.eventContainer[position]}>\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tstyle={[styles.eventImage, styles.eventImageMargin[position]]}\n\t\t\t\t\t\t\tsource={{ uri: currentMessage.event.Thumbnail }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View style={styles.eventInfo}>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tnumberOfLines={3}\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.eventTitle,\n\t\t\t\t\t\t\t\t\tstyles.eventInfoAlign[position],\n\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{currentMessage.event.Title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.eventDate,\n\t\t\t\t\t\t\t\t\tstyles.eventInfoAlign[position],\n\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{moment\n\t\t\t\t\t\t\t\t\t.utc(currentMessage.event.StartTime)\n\t\t\t\t\t\t\t\t\t.local()\n\t\t\t\t\t\t\t\t\t.format(\"ddd D MMM\")}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</TouchableOpacity>\n\t\t\t);\n\t\t}\n\t\tif (currentMessage.attachment) {\n\t\t\treturn (\n\t\t\t\t<TouchableOpacity\n\t\t\t\t\tonPress={this.onPressAttachment.bind(this, currentMessage.attachment)}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.eventContainer[position]}>\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tstyle={[styles.eventImage, styles.eventImageMargin[position]]}\n\t\t\t\t\t\t\tsource={{ uri: currentMessage.attachment.Thumbnail }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View style={styles.eventInfo}>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tnumberOfLines={3}\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.eventTitle,\n\t\t\t\t\t\t\t\t\tstyles.eventInfoAlign[position],\n\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{currentMessage.attachment.Title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{currentMessage.attachment.StartTime && (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.eventDate,\n\t\t\t\t\t\t\t\t\t\tstyles.eventInfoAlign[position],\n\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{moment\n\t\t\t\t\t\t\t\t\t\t.utc(currentMessage.attachment.StartTime)\n\t\t\t\t\t\t\t\t\t\t.local()\n\t\t\t\t\t\t\t\t\t\t.format(\"ddd D MMM\")}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</TouchableOpacity>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderSend(props) {\n\t\tconst buttonTopOffset = this.state.replyingTo ? 46 : 4;\n\t\tconst showSendButton =\n\t\t\t!_.isEmpty(props.text) || this.hasImagesReady(props.imagesToUpload);\n\t\treturn (\n\t\t\t<View\n\t\t\t\tstyle={{\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\ttop: buttonTopOffset,\n\t\t\t\t\tright: 8,\n\t\t\t\t\tflexDirection: \"row\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* Image upload button - always visible */}\n\t\t\t\t<TouchableOpacity\n\t\t\t\t\tonPress={this.showUploadMenu.bind(this)}\n\t\t\t\t\tstyle={[\n\t\t\t\t\t\tstyles.sendContainer,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tright:\n\t\t\t\t\t\t\t\t_.isEmpty(props.text) &&\n\t\t\t\t\t\t\t\t!this.hasImagesReady(props.imagesToUpload)\n\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t: this.MIN_COMPOSER_HEIGHT,\n\n\t\t\t\t\t\t\twidth: this.MIN_COMPOSER_HEIGHT,\n\t\t\t\t\t\t\theight: this.MIN_COMPOSER_HEIGHT,\n\t\t\t\t\t\t},\n\t\t\t\t\t]}\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname={\"picture-o\"}\n\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\ticonStyle={[styles.send, { width: this.MIN_COMPOSER_HEIGHT }]}\n\t\t\t\t\t/>\n\t\t\t\t</TouchableOpacity>\n\n\t\t\t\t{/* Send button - only visible when there's text or images */}\n\t\t\t\t{showSendButton && (\n\t\t\t\t\t<Send\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\talwaysShowSend={true}\n\t\t\t\t\t\tonSend={props.onSend}\n\t\t\t\t\t\ttext={props.text || \" \"}\n\t\t\t\t\t\tcontainerStyle={[\n\t\t\t\t\t\t\tstyles.sendContainer,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\twidth: this.MIN_COMPOSER_HEIGHT,\n\t\t\t\t\t\t\t\theight: this.MIN_COMPOSER_HEIGHT,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname={\"paper-plane\"}\n\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\ticonStyle={[styles.send, { width: this.MIN_COMPOSER_HEIGHT }]}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Send>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderAccessory(props) {\n\t\tconst hasAttachment = this.hasImagesAttached(props.imagesToUpload);\n\t\tif (!hasAttachment) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<ScrollView horizontal style={styles.uploadImagesContainer}>\n\t\t\t\t{props.imagesToUpload.map((image) => {\n\t\t\t\t\tif (image.uploading) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ImageUploadProgress\n\t\t\t\t\t\t\t\tkey={image.uploadUri}\n\t\t\t\t\t\t\t\tuploader={this.imageUploader}\n\t\t\t\t\t\t\t\timage={image}\n\t\t\t\t\t\t\t\tcolor={this.props.colourBrandingMain}\n\t\t\t\t\t\t\t\tstyle={{ width: IMAGE_PREVIEW_SIZE, marginRight: 10 }}\n\t\t\t\t\t\t\t\tprogressTextStyle={{ fontSize: 10 }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst isVideoUrl = isVideo(image.url);\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View key={image.url} style={styles.accessoryImageContainer}>\n\t\t\t\t\t\t\t<ImageBackground\n\t\t\t\t\t\t\t\tstyle={styles.accessoryImage}\n\t\t\t\t\t\t\t\timageStyle={styles.accessoryImageBorder}\n\t\t\t\t\t\t\t\tsource={getImageSource(\n\t\t\t\t\t\t\t\t\timage.thumbNailExists ? image.thumbNailUrl : image.url,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{isVideoUrl && (\n\t\t\t\t\t\t\t\t\t<View style={styles.imagePlayContainer}>\n\t\t\t\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\t\t\t\tonPress={this.toggleFullscreenVideo.bind(this, image.url)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\tname=\"play\"\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\t\t\t\ticonStyle={styles.imageControlIcon}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ImageBackground>\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tstyle={styles.previewItemRemoveButton}\n\t\t\t\t\t\t\t\tonPress={() => this.onRemoveImage(image.url)}\n\t\t\t\t\t\t\t\thitSlop={{ top: 8, right: 8, bottom: 8, left: 8 }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.previewItemRemoveContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\tname=\"times\"\n\t\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\t\ticonStyle={styles.previewItemRemoveIcon}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ScrollView>\n\t\t);\n\t}\n\n\trenderInputToolbar(props) {\n\t\tconst hasAttachment = this.hasImagesAttached(props.imagesToUpload);\n\t\treturn (\n\t\t\t<InputToolbar\n\t\t\t\t{...props}\n\t\t\t\tcontainerStyle={styles.inputContainer}\n\t\t\t\trenderComposer={this.renderComposer.bind(this)}\n\t\t\t\trenderAccessory={hasAttachment ? this.renderAccessory.bind(this) : null}\n\t\t\t\taccessoryStyle={hasAttachment && styles.accessory}\n\t\t\t/>\n\t\t);\n\t}\n\trenderFooter() {\n\t\t// if (this.state.keyboardOpen) {\n\t\t// return null;\n\t\t// }\n\t\t// fixes an issue where there's no gap between bottom message and reply container\n\t\treturn <View style={{ height: 10 }} />;\n\t}\n\trenderLoading() {\n\t\treturn (\n\t\t\t<View\n\t\t\t\tstyle={{\n\t\t\t\t\tmarginTop: 15,\n\t\t\t\t\tjustifyContent: \"center\",\n\t\t\t\t\talignContent: \"center\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Spinner size={\"small\"} color={this.props.colourBrandingMain} />\n\t\t\t</View>\n\t\t);\n\t}\n\trenderAvatar(props) {\n\t\treturn (\n\t\t\t<View style={{ marginRight: 2 }}>\n\t\t\t\t<ProfilePic\n\t\t\t\t\tProfilePic={props.currentMessage.user.avatar}\n\t\t\t\t\tDiameter={28}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\trenderComposer(props) {\n\t\treturn (\n\t\t\t<View style={{ width: \"100%\" }}>\n\t\t\t\t{/* Replying to section - stacked vertically on top */}\n\t\t\t\t{this.state.replyingTo && (\n\t\t\t\t\t<View style={styles.replyingTo}>\n\t\t\t\t\t\t<Text type=\"body\">\n\t\t\t\t\t\t\tReplying to{\" \"}\n\t\t\t\t\t\t\t{_.isEmpty(this.state.replyingTo?.user?.name)\n\t\t\t\t\t\t\t\t? \"message\"\n\t\t\t\t\t\t\t\t: this.state.replyingTo?.user?.name}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\tstyle={styles.replyingRemoveButton}\n\t\t\t\t\t\t\tonPress={() => this.onReply(null)}\n\t\t\t\t\t\t\thitSlop={{ top: 8, right: 8, bottom: 8, left: 8 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.replyingRemoveContainer,\n\t\t\t\t\t\t\t\t\t{ backgroundColor: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tname=\"times\"\n\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\ticonStyle={styles.replyingRemoveIcon}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t</View>\n\t\t\t\t)}\n\t\t\t\t{/* Horizontal row for input - buttons are absolutely positioned via renderSend */}\n\t\t\t\t<View\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tflexDirection: \"row\",\n\t\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\tpaddingBottom: 8,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.input,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\tmarginRight:\n\t\t\t\t\t\t\t\t\t_.isEmpty(props.text) &&\n\t\t\t\t\t\t\t\t\t!this.hasImagesReady(props.imagesToUpload)\n\t\t\t\t\t\t\t\t\t\t? 16 + this.MIN_COMPOSER_HEIGHT\n\t\t\t\t\t\t\t\t\t\t: 2 * (this.MIN_COMPOSER_HEIGHT + 8),\n\t\t\t\t\t\t\t\tpaddingHorizontal: 12,\n\t\t\t\t\t\t\t\tpaddingVertical: Platform.select({ ios: 8, android: 6 }),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\tmaxFontSizeMultiplier={1.2}\n\t\t\t\t\t\t\tplaceholder=\"Type a message...\"\n\t\t\t\t\t\t\tmultiline\n\t\t\t\t\t\t\tvalue={props.text}\n\t\t\t\t\t\t\tonChangeText={props.onTextChanged}\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.inputText,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlineHeight: 20,\n\t\t\t\t\t\t\t\t\tminHeight: this.MIN_COMPOSER_HEIGHT - 16,\n\t\t\t\t\t\t\t\t\tmaxHeight: 100,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\tonFocus={this.onFocusInput.bind(this)}\n\t\t\t\t\t\t\tonBlur={this.onBlurInput.bind(this)}\n\t\t\t\t\t\t\tplaceholderTextColor=\"#999\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\t/***\n\t * Main Render\n\t */\n\trenderChat() {\n\t\tconst minInputToolbarHeight =\n\t\t\tthis.MIN_COMPOSER_HEIGHT +\n\t\t\t32 +\n\t\t\t(this.state.replyingTo ? 38 : 0) +\n\t\t\t(this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);\n\n\t\treturn (\n\t\t\t<GiftedChat\n\t\t\t\tisKeyboardInternallyHandled={false}\n\t\t\t\talwaysShowSend={false}\n\t\t\t\tkeyboardShouldPersistTaps={\"never\"}\n\t\t\t\trenderAvatarOnTop\n\t\t\t\tminInputToolbarHeight={minInputToolbarHeight}\n\t\t\t\tminComposerHeight={this.MIN_COMPOSER_HEIGHT}\n\t\t\t\tbottomOffset={0}\n\t\t\t\tonSend={this.sendMessages.bind(this)}\n\t\t\t\tmessages={this.state.messages}\n\t\t\t\tuser={this.state.currentUser}\n\t\t\t\trenderBubble={this.renderBubble.bind(this)}\n\t\t\t\trenderMessage={this.renderMessage.bind(this)}\n\t\t\t\trenderMessageText={this.renderMessageText.bind(this)}\n\t\t\t\trenderTime={this.renderTime.bind(this)}\n\t\t\t\trenderDay={this.renderDay.bind(this)}\n\t\t\t\trenderCustomView={this.renderCustomView.bind(this)}\n\t\t\t\trenderSend={this.renderSend.bind(this)}\n\t\t\t\trenderInputToolbar={this.renderInputToolbar.bind(this)}\n\t\t\t\trenderFooter={this.renderFooter.bind(this)}\n\t\t\t\trenderLoading={this.renderLoading.bind(this)}\n\t\t\t\trenderAvatar={this.renderAvatar.bind(this)}\n\t\t\t\timagesToUpload={this.state.imagesToUpload}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderImageUploader() {\n\t\treturn (\n\t\t\t<ImageUploader\n\t\t\t\tref={(ref) => (this.imageUploader = ref)}\n\t\t\t\tonUploadStarted={this.onUploadStarted}\n\t\t\t\tonUploadProgress={this.onUploadProgress}\n\t\t\t\tonUploadSuccess={this.onUploadSuccess}\n\t\t\t\tonUploadFailed={this.onUploadFailed}\n\t\t\t\tonLibrarySelected={this.onLibrarySelected}\n\t\t\t\tquality={0.8}\n\t\t\t\tallowsEditing={false}\n\t\t\t\tfileName={\"imageInput\"}\n\t\t\t\tpopupTitle={\"Add Image\"}\n\t\t\t\tuserId={this.props.user.uid}\n\t\t\t\tmultiple\n\t\t\t\tallowVideo\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderImagePopup() {\n\t\tconst { imagePopupOpen, imagePopupSource, imagePopupIndex } = this.state;\n\t\treturn (\n\t\t\t<ImagePopup\n\t\t\t\tvisible={imagePopupOpen}\n\t\t\t\timages={imagePopupSource}\n\t\t\t\tindex={imagePopupIndex}\n\t\t\t\tonClose={this.closeGallery.bind(this)}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderVideoPlayerPopup() {\n\t\tconst { showFullscreenVideo, currentVideoUrl } = this.state;\n\t\tif (!currentVideoUrl) return;\n\n\t\treturn (\n\t\t\t<VideoPopup\n\t\t\t\turi={currentVideoUrl}\n\t\t\t\tvisible={showFullscreenVideo}\n\t\t\t\tonClose={this.toggleFullscreenVideo}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderPDF() {\n\t\tif (_.isEmpty(this.state.selectedPDF)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<PDFPopup\n\t\t\t\tsource={this.state.selectedPDF}\n\t\t\t\tonClose={this.onCloseAttachment}\n\t\t\t\ttitle={getFileName(this.state.selectedPDF)}\n\t\t\t\tpdfCount={1}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderDeleteConfirmPopup() {\n\t\treturn (\n\t\t\t<ConfirmPopup\n\t\t\t\tvisible={this.state.showDeleteMessageConfirm}\n\t\t\t\tonConfirm={this.onConfirmDeleteMessage}\n\t\t\t\tonCancel={this.onCancelDeleteMessage}\n\t\t\t\ttext=\"Are you sure you want to delete this message?\"\n\t\t\t\tyesText=\"Delete\"\n\t\t\t\tnoText=\"Cancel\"\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<KeyboardAvoidingView behavior=\"padding\" style={styles.chatContainer}>\n\t\t\t\t{this.renderChat()}\n\t\t\t\t{this.renderImageUploader()}\n\t\t\t\t{this.renderImagePopup()}\n\t\t\t\t{this.renderVideoPlayerPopup()}\n\t\t\t\t{this.renderPDF()}\n\t\t\t\t{this.renderDeleteConfirmPopup()}\n\t\t\t</KeyboardAvoidingView>\n\t\t);\n\t}\n}\n\nconst styles = {\n\tchatContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t},\n\teventContainer: {\n\t\tleft: {\n\t\t\tpaddingTop: 5,\n\t\t\tpaddingLeft: 15,\n\t\t\tpaddingRight: 15,\n\t\t\tpaddingBottom: 5,\n\t\t\tflexDirection: \"row\",\n\t\t},\n\t\tright: {\n\t\t\tpaddingTop: 5,\n\t\t\tpaddingLeft: 15,\n\t\t\tpaddingRight: 15,\n\t\t\tpaddingBottom: 5,\n\t\t\tflexDirection: \"row-reverse\",\n\t\t},\n\t},\n\teventImage: {\n\t\twidth: 80,\n\t\theight: 80,\n\t\tresizeMode: \"cover\",\n\t\tborderRadius: 2,\n\t},\n\teventImageMargin: {\n\t\tright: {\n\t\t\tmarginLeft: 15,\n\t\t},\n\t\tleft: {\n\t\t\tmarginRight: 15,\n\t\t},\n\t},\n\teventInfo: {\n\t\tminHeight: 80,\n\t\twidth: 150,\n\t},\n\teventTitle: {\n\t\tfontSize: 12,\n\t\tfontFamily: \"sf-bold\",\n\t\tbackgroundColor: \"rgba(255,255,255,0)\",\n\t},\n\teventInfoAlign: {\n\t\tleft: {\n\t\t\ttextAlign: \"left\",\n\t\t},\n\t\tright: {\n\t\t\ttextAlign: \"right\",\n\t\t},\n\t},\n\tmessageImageLarge: {\n\t\twidth: IMAGE_SIZE_LARGE,\n\t\theight: IMAGE_SIZE_LARGE,\n\t\tborderRadius: 2,\n\t\talignSelf: \"center\",\n\t},\n\tmessageImageSmall: {\n\t\twidth: IMAGE_SIZE_SMALL,\n\t\theight: IMAGE_SIZE_SMALL,\n\t\tborderRadius: 2,\n\t\talignSelf: \"center\",\n\t\tmarginRight: IMAGE_MARGIN,\n\t\tmarginBottom: IMAGE_MARGIN,\n\t},\n\teventDate: {\n\t\tfontSize: 12,\n\t\tfontFamily: \"sf-regular\",\n\t\tbackgroundColor: \"rgba(255,255,255,0)\",\n\t},\n\tinputContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tpaddingVertical: 8,\n\t\tpaddingHorizontal: 8,\n\t},\n\tinputText: {\n\t\tcolor: TEXT_DARKEST,\n\t\tfontSize: 14,\n\t\tfontFamily: \"sf-medium\",\n\t},\n\tinput: {\n\t\tmargin: 0,\n\t\tbackgroundColor: BG_GREY,\n\t\tborderRadius: 5,\n\t\tflex: 1,\n\t},\n\tcomposerContainer: {\n\t\tflex: 1,\n\t},\n\tcomposerInputWrapper: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t},\n\treplyingTo: {\n\t\tminHeight: 30,\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: LINEGREY,\n\t\tmarginBottom: 8,\n\t},\n\treplyingRemoveButton: {\n\t\tmarginLeft: 10,\n\t},\n\treplyingRemoveContainer: {\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tborderRadius: 10,\n\t\twidth: 20,\n\t\theight: 20,\n\t\tborderWidth: 2,\n\t\tborderColor: \"#fff\",\n\t},\n\treplyingRemoveIcon: {\n\t\tfontSize: 10,\n\t\tcolor: \"#fff\",\n\t\tmarginBottom: 1,\n\t},\n\tsendContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tright: 0,\n\t\theight: 30,\n\t\twidth: 30,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tsend: {\n\t\tfontSize: 15,\n\t\tcolor: TEXT_BLUEGREY,\n\t\tfontSize: 24,\n\t\ttextAlign: \"center\",\n\t},\n\taccessory: {\n\t\theight: IMAGE_PREVIEW_AREA_HEIGHT,\n\t\tborderTopWidth: 1,\n\t\tborderTopColor: LINEGREY,\n\t\tpaddingTop: 8,\n\t\tmarginTop: 8,\n\t},\n\taccessoryImageContainer: {\n\t\tpaddingRight: 8,\n\t\tpaddingTop: 8,\n\t\tmarginRight: 5,\n\t},\n\taccessoryImage: {\n\t\twidth: IMAGE_PREVIEW_SIZE,\n\t\theight: IMAGE_PREVIEW_SIZE,\n\t},\n\taccessoryImageBorder: {\n\t\tborderRadius: 2,\n\t},\n\tsettingDropDownOpen: {\n\t\theight: \"auto\",\n\t},\n\timagesContainer: {\n\t\tmarginLeft: 10,\n\t\tmarginRight: 10,\n\t\tflexDirection: \"row\",\n\t\tflexWrap: \"wrap\",\n\t},\n\tuploadImagesContainer: {\n\t\tflexDirection: \"row\",\n\t\toverflow: \"visible\",\n\t},\n\tpreviewItemRemoveButton: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tright: 0,\n\t},\n\tpreviewItemRemoveContainer: {\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tborderRadius: 10,\n\t\twidth: 20,\n\t\theight: 20,\n\t\tborderWidth: 2,\n\t\tborderColor: \"#fff\",\n\t},\n\tpreviewItemRemoveIcon: {\n\t\tfontSize: 10,\n\t\tcolor: \"#fff\",\n\t\tmarginBottom: 1,\n\t},\n\timagePlayContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t},\n\timageControlIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 20,\n\t\ttextShadowColor: \"rgba(0,0,0,0.3)\",\n\t\ttextShadowOffset: { width: 2, height: 2 },\n\t},\n};\n\nconst mapStateToProps = (state) => {\n\treturn {\n\t\tuser: state.user,\n\t\tcolourBrandingMain: getMainBrandingColourFromState(state),\n\t\tcolourBrandingLight: getLightBrandingColourFromState(state),\n\t\ttabCount: getEnabledTabsFromState(state).length,\n\t};\n};\n\nexport default connect(mapStateToProps, {})(withSafeAreaInsets(PlussChat));\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,299 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ /* eslint no-use-before-define: ["error", { "variables": false }], react-native/no-inline-styles: 0 */
3
+
4
+ // NOTE:
5
+ // This is a modified version of react-native-gifted-chat Message component
6
+
7
+ // Original source:
8
+ // https://github.com/FaridSafi/react-native-gifted-chat/blob/master/src/Message.js
9
+
10
+ import PropTypes from "prop-types";
11
+ import React from "react";
12
+ import { View, StyleSheet, TouchableOpacity } from "react-native";
13
+ import { ViewPropTypes } from "deprecated-react-native-prop-types";
14
+ import _ from "lodash";
15
+ import { Avatar, Bubble, SystemMessage, Day, utils } from "react-native-gifted-chat";
16
+ import { TEXT_MID, TEXT_LIGHT, TEXT_DARK, TEXT_SUPER_LIGHT } from "../colours";
17
+ import { getFirstName } from "../helper";
18
+ import { Text } from ".";
19
+ const isSameUser = utils.isSameUser;
20
+ const isSameDay = utils.isSameDay;
21
+ export default class PlussChatMessage extends React.Component {
22
+ getInnerComponentProps() {
23
+ const {
24
+ containerStyle,
25
+ ...props
26
+ } = this.props;
27
+ return {
28
+ ...props,
29
+ isSameUser,
30
+ isSameDay
31
+ };
32
+ }
33
+ isCurrentUser() {
34
+ if (this.props.user._id === this.props.currentMessage.user._id) {
35
+ return true;
36
+ }
37
+ return false;
38
+ }
39
+ renderDay() {
40
+ if (this.props.currentMessage.createdAt) {
41
+ const dayProps = this.getInnerComponentProps();
42
+ if (this.props.renderDay) {
43
+ return this.props.renderDay(dayProps);
44
+ }
45
+ return /*#__PURE__*/React.createElement(Day, dayProps);
46
+ }
47
+ return null;
48
+ }
49
+ renderBubble() {
50
+ const bubbleProps = this.getInnerComponentProps();
51
+ if (this.props.renderBubble) {
52
+ return this.props.renderBubble(bubbleProps);
53
+ }
54
+ return /*#__PURE__*/React.createElement(Bubble, bubbleProps);
55
+ }
56
+ renderSystemMessage() {
57
+ const systemMessageProps = this.getInnerComponentProps();
58
+ if (this.props.renderSystemMessage) {
59
+ return this.props.renderSystemMessage(systemMessageProps);
60
+ }
61
+ return /*#__PURE__*/React.createElement(SystemMessage, systemMessageProps);
62
+ }
63
+ renderAvatar() {
64
+ if (this.isCurrentUser() && !this.props.showUserAvatar) {
65
+ return null;
66
+ }
67
+ const avatarProps = this.getInnerComponentProps();
68
+ const {
69
+ currentMessage
70
+ } = avatarProps;
71
+ if (currentMessage.user.avatar === null || _.isEmpty(currentMessage.user.avatar)) {
72
+ return null;
73
+ }
74
+ return /*#__PURE__*/React.createElement(Avatar, _extends({}, avatarProps, {
75
+ imageStyle: {
76
+ left: {
77
+ width: 30,
78
+ height: 30,
79
+ borderRadius: 15
80
+ },
81
+ right: {
82
+ width: 30,
83
+ height: 30,
84
+ borderRadius: 15
85
+ }
86
+ },
87
+ containerStyle: {
88
+ left: {
89
+ marginRight: 10
90
+ },
91
+ right: {
92
+ marginLeft: 10
93
+ }
94
+ }
95
+ }));
96
+ }
97
+ renderName() {
98
+ const nameProps = this.getInnerComponentProps();
99
+ const {
100
+ currentMessage
101
+ } = nameProps;
102
+ if (currentMessage.user.name === null) {
103
+ return null;
104
+ }
105
+ let nameText = this.isCurrentUser() ? "Me" : getFirstName(currentMessage.user.name);
106
+ if (this.props.currentMessage && this.props.currentMessage.replyingTo && this.props.currentMessage.replyingTo.user && !_.isEmpty(this.props.currentMessage.replyingTo.user.name)) {
107
+ nameText = `${nameText} replying to ${this.props.currentMessage.replyingTo.user.name}`;
108
+ }
109
+ return /*#__PURE__*/React.createElement(Text, {
110
+ style: [styles[this.props.position].name]
111
+ }, nameText);
112
+ }
113
+ renderReply() {
114
+ // Don't show reply quote for deleted messages
115
+ if (!this.props.currentMessage || !this.props.currentMessage.replyingTo || this.props.currentMessage.deleted) {
116
+ return null;
117
+ }
118
+ return /*#__PURE__*/React.createElement(View, {
119
+ style: styles[this.props.position].replyBubble
120
+ }, /*#__PURE__*/React.createElement(View, {
121
+ style: styles[this.props.position].replyBubbleInner
122
+ }, /*#__PURE__*/React.createElement(Text, {
123
+ style: styles[this.props.position].replyBubbleText
124
+ }, (this.props.currentMessage.replyingTo.text || "").substr(0, 100))));
125
+ }
126
+ renderReplyButton() {
127
+ // Don't show reply button for deleted messages
128
+ if (this.props.currentMessage.deleted) {
129
+ return null;
130
+ }
131
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
132
+ style: styles[this.props.position].replyContainer,
133
+ onPress: this.props.onPressReply
134
+ }, /*#__PURE__*/React.createElement(Text, {
135
+ type: "button",
136
+ style: {
137
+ color: this.props.colourBrandingMain
138
+ }
139
+ }, "Reply"));
140
+ }
141
+ renderDeleteButton() {
142
+ // Only show delete button if handler is provided and for current user's messages that aren't already deleted
143
+ if (!this.props.onPressDelete || !this.isCurrentUser() || this.props.currentMessage.deleted) {
144
+ return null;
145
+ }
146
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
147
+ style: styles[this.props.position].deleteContainer,
148
+ onPress: this.props.onPressDelete
149
+ }, /*#__PURE__*/React.createElement(Text, {
150
+ type: "button",
151
+ style: {
152
+ color: this.props.colourBrandingMain
153
+ }
154
+ }, "Delete"));
155
+ }
156
+ render() {
157
+ const sameUserAsLast = isSameUser(this.props.currentMessage, this.props.previousMessage);
158
+ const sameUser = isSameUser(this.props.currentMessage, this.props.nextMessage);
159
+ return /*#__PURE__*/React.createElement(View, null, this.renderDay(), this.props.currentMessage.system ? this.renderSystemMessage() : /*#__PURE__*/React.createElement(View, null, sameUserAsLast ? null : this.renderName(), /*#__PURE__*/React.createElement(View, {
160
+ style: [styles[this.props.position].container, {
161
+ marginBottom: sameUser ? 2 : 10
162
+ }, !this.props.inverted && {
163
+ marginBottom: 2
164
+ }, this.props.containerStyle[this.props.position]]
165
+ }, this.props.position === "left" ? this.renderAvatar() : null, /*#__PURE__*/React.createElement(View, null, this.renderReply(), this.renderBubble(), /*#__PURE__*/React.createElement(View, {
166
+ style: styles[this.props.position].actionButtons
167
+ }, this.renderReplyButton(), this.renderDeleteButton())), this.props.position === "right" ? this.renderAvatar() : null)));
168
+ }
169
+ }
170
+ const styles = {
171
+ left: StyleSheet.create({
172
+ container: {
173
+ flexDirection: "row",
174
+ alignItems: "flex-end",
175
+ justifyContent: "flex-start",
176
+ marginLeft: 10,
177
+ marginRight: 0
178
+ },
179
+ name: {
180
+ fontFamily: "sf-regular",
181
+ color: TEXT_LIGHT,
182
+ fontSize: 14,
183
+ textAlign: "left",
184
+ marginLeft: 50,
185
+ marginBottom: 5
186
+ },
187
+ replyBubble: {
188
+ flexDirection: "row",
189
+ alignItems: "flex-end",
190
+ justifyContent: "flex-start",
191
+ paddingLeft: 20
192
+ },
193
+ replyBubbleInner: {
194
+ padding: 4,
195
+ paddingBottom: 16,
196
+ marginBottom: -12,
197
+ borderRadius: 4,
198
+ opacity: 0.7,
199
+ backgroundColor: TEXT_SUPER_LIGHT
200
+ },
201
+ replyBubbleText: {
202
+ fontFamily: "sf-regular",
203
+ color: TEXT_DARK,
204
+ fontSize: 13,
205
+ textAlign: "left"
206
+ },
207
+ replyContainer: {
208
+ paddingLeft: 20,
209
+ paddingRight: 10
210
+ },
211
+ deleteContainer: {
212
+ paddingLeft: 10
213
+ },
214
+ actionButtons: {
215
+ flexDirection: "row",
216
+ alignItems: "center"
217
+ }
218
+ }),
219
+ right: StyleSheet.create({
220
+ container: {
221
+ flexDirection: "row",
222
+ alignItems: "flex-end",
223
+ justifyContent: "flex-end",
224
+ marginLeft: 0,
225
+ marginRight: 10
226
+ },
227
+ name: {
228
+ fontFamily: "sf-regular",
229
+ color: TEXT_LIGHT,
230
+ fontSize: 14,
231
+ textAlign: "right",
232
+ marginRight: 10,
233
+ marginBottom: 5
234
+ },
235
+ replyBubble: {
236
+ flexDirection: "row",
237
+ alignItems: "flex-end",
238
+ justifyContent: "flex-end",
239
+ paddingRight: 10
240
+ },
241
+ replyBubbleInner: {
242
+ padding: 4,
243
+ paddingBottom: 16,
244
+ marginBottom: -12,
245
+ borderRadius: 4,
246
+ opacity: 0.7,
247
+ backgroundColor: TEXT_SUPER_LIGHT
248
+ },
249
+ replyBubbleText: {
250
+ fontFamily: "sf-regular",
251
+ color: TEXT_DARK,
252
+ fontSize: 13,
253
+ textAlign: "right"
254
+ },
255
+ replyContainer: {
256
+ paddingRight: 10
257
+ },
258
+ deleteContainer: {
259
+ paddingRight: 10
260
+ },
261
+ actionButtons: {
262
+ flexDirection: "row",
263
+ alignItems: "center",
264
+ alignSelf: "flex-end"
265
+ }
266
+ })
267
+ };
268
+ PlussChatMessage.defaultProps = {
269
+ renderAvatar: undefined,
270
+ renderBubble: null,
271
+ renderDay: null,
272
+ renderSystemMessage: null,
273
+ position: "left",
274
+ currentMessage: {},
275
+ nextMessage: {},
276
+ previousMessage: {},
277
+ user: {},
278
+ containerStyle: {},
279
+ showUserAvatar: true,
280
+ inverted: true
281
+ };
282
+ PlussChatMessage.propTypes = {
283
+ renderAvatar: PropTypes.func,
284
+ showUserAvatar: PropTypes.bool,
285
+ renderBubble: PropTypes.func,
286
+ renderDay: PropTypes.func,
287
+ renderSystemMessage: PropTypes.func,
288
+ position: PropTypes.oneOf(["left", "right"]),
289
+ currentMessage: PropTypes.object,
290
+ nextMessage: PropTypes.object,
291
+ previousMessage: PropTypes.object,
292
+ user: PropTypes.object,
293
+ inverted: PropTypes.bool,
294
+ containerStyle: PropTypes.shape({
295
+ left: ViewPropTypes.style,
296
+ right: ViewPropTypes.style
297
+ })
298
+ };
299
+ //# sourceMappingURL=PlussChatMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PropTypes","React","View","StyleSheet","TouchableOpacity","ViewPropTypes","_","Avatar","Bubble","SystemMessage","Day","utils","TEXT_MID","TEXT_LIGHT","TEXT_DARK","TEXT_SUPER_LIGHT","getFirstName","Text","isSameUser","isSameDay","PlussChatMessage","Component","getInnerComponentProps","containerStyle","props","isCurrentUser","user","_id","currentMessage","renderDay","createdAt","dayProps","createElement","renderBubble","bubbleProps","renderSystemMessage","systemMessageProps","renderAvatar","showUserAvatar","avatarProps","avatar","isEmpty","_extends","imageStyle","left","width","height","borderRadius","right","marginRight","marginLeft","renderName","nameProps","name","nameText","replyingTo","style","styles","position","renderReply","deleted","replyBubble","replyBubbleInner","replyBubbleText","text","substr","renderReplyButton","replyContainer","onPress","onPressReply","type","color","colourBrandingMain","renderDeleteButton","onPressDelete","deleteContainer","render","sameUserAsLast","previousMessage","sameUser","nextMessage","system","container","marginBottom","inverted","actionButtons","create","flexDirection","alignItems","justifyContent","fontFamily","fontSize","textAlign","paddingLeft","padding","paddingBottom","opacity","backgroundColor","paddingRight","alignSelf","defaultProps","undefined","propTypes","func","bool","oneOf","object","shape"],"sources":["PlussChatMessage.js"],"sourcesContent":["/* eslint no-use-before-define: [\"error\", { \"variables\": false }], react-native/no-inline-styles: 0 */\n\n// NOTE:\n// This is a modified version of react-native-gifted-chat Message component\n\n// Original source:\n// https://github.com/FaridSafi/react-native-gifted-chat/blob/master/src/Message.js\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { View, StyleSheet, TouchableOpacity } from \"react-native\";\nimport { ViewPropTypes } from \"deprecated-react-native-prop-types\";\nimport _ from \"lodash\";\n\nimport {\n\tAvatar,\n\tBubble,\n\tSystemMessage,\n\tDay,\n\tutils,\n} from \"react-native-gifted-chat\";\nimport { TEXT_MID, TEXT_LIGHT, TEXT_DARK, TEXT_SUPER_LIGHT } from \"../colours\";\nimport { getFirstName } from \"../helper\";\nimport { Text } from \".\";\n\nconst isSameUser = utils.isSameUser;\nconst isSameDay = utils.isSameDay;\n\nexport default class PlussChatMessage extends React.Component {\n\tgetInnerComponentProps() {\n\t\tconst { containerStyle, ...props } = this.props;\n\t\treturn {\n\t\t\t...props,\n\t\t\tisSameUser,\n\t\t\tisSameDay,\n\t\t};\n\t}\n\n\tisCurrentUser() {\n\t\tif (this.props.user._id === this.props.currentMessage.user._id) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\trenderDay() {\n\t\tif (this.props.currentMessage.createdAt) {\n\t\t\tconst dayProps = this.getInnerComponentProps();\n\t\t\tif (this.props.renderDay) {\n\t\t\t\treturn this.props.renderDay(dayProps);\n\t\t\t}\n\t\t\treturn <Day {...dayProps} />;\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderBubble() {\n\t\tconst bubbleProps = this.getInnerComponentProps();\n\t\tif (this.props.renderBubble) {\n\t\t\treturn this.props.renderBubble(bubbleProps);\n\t\t}\n\t\treturn <Bubble {...bubbleProps} />;\n\t}\n\n\trenderSystemMessage() {\n\t\tconst systemMessageProps = this.getInnerComponentProps();\n\t\tif (this.props.renderSystemMessage) {\n\t\t\treturn this.props.renderSystemMessage(systemMessageProps);\n\t\t}\n\t\treturn <SystemMessage {...systemMessageProps} />;\n\t}\n\n\trenderAvatar() {\n\t\tif (this.isCurrentUser() && !this.props.showUserAvatar) {\n\t\t\treturn null;\n\t\t}\n\t\tconst avatarProps = this.getInnerComponentProps();\n\t\tconst { currentMessage } = avatarProps;\n\t\tif (\n\t\t\tcurrentMessage.user.avatar === null ||\n\t\t\t_.isEmpty(currentMessage.user.avatar)\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<Avatar\n\t\t\t\t{...avatarProps}\n\t\t\t\timageStyle={{\n\t\t\t\t\tleft: {\n\t\t\t\t\t\twidth: 30,\n\t\t\t\t\t\theight: 30,\n\t\t\t\t\t\tborderRadius: 15,\n\t\t\t\t\t},\n\t\t\t\t\tright: {\n\t\t\t\t\t\twidth: 30,\n\t\t\t\t\t\theight: 30,\n\t\t\t\t\t\tborderRadius: 15,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tcontainerStyle={{\n\t\t\t\t\tleft: {\n\t\t\t\t\t\tmarginRight: 10,\n\t\t\t\t\t},\n\t\t\t\t\tright: {\n\t\t\t\t\t\tmarginLeft: 10,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderName() {\n\t\tconst nameProps = this.getInnerComponentProps();\n\t\tconst { currentMessage } = nameProps;\n\t\tif (currentMessage.user.name === null) {\n\t\t\treturn null;\n\t\t}\n\t\tlet nameText = this.isCurrentUser()\n\t\t\t? \"Me\"\n\t\t\t: getFirstName(currentMessage.user.name);\n\t\tif (\n\t\t\tthis.props.currentMessage &&\n\t\t\tthis.props.currentMessage.replyingTo &&\n\t\t\tthis.props.currentMessage.replyingTo.user &&\n\t\t\t!_.isEmpty(this.props.currentMessage.replyingTo.user.name)\n\t\t) {\n\t\t\tnameText = `${nameText} replying to ${this.props.currentMessage.replyingTo.user.name}`;\n\t\t}\n\t\treturn <Text style={[styles[this.props.position].name]}>{nameText}</Text>;\n\t}\n\n\trenderReply() {\n\t\t// Don't show reply quote for deleted messages\n\t\tif (\n\t\t\t!this.props.currentMessage ||\n\t\t\t!this.props.currentMessage.replyingTo ||\n\t\t\tthis.props.currentMessage.deleted\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<View style={styles[this.props.position].replyBubble}>\n\t\t\t\t<View style={styles[this.props.position].replyBubbleInner}>\n\t\t\t\t\t<Text style={styles[this.props.position].replyBubbleText}>\n\t\t\t\t\t\t{(this.props.currentMessage.replyingTo.text || \"\").substr(0, 100)}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderReplyButton() {\n\t\t// Don't show reply button for deleted messages\n\t\tif (this.props.currentMessage.deleted) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={styles[this.props.position].replyContainer}\n\t\t\t\tonPress={this.props.onPressReply}\n\t\t\t>\n\t\t\t\t<Text type=\"button\" style={{ color: this.props.colourBrandingMain }}>\n\t\t\t\t\tReply\n\t\t\t\t</Text>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderDeleteButton() {\n\t\t// Only show delete button if handler is provided and for current user's messages that aren't already deleted\n\t\tif (\n\t\t\t!this.props.onPressDelete ||\n\t\t\t!this.isCurrentUser() ||\n\t\t\tthis.props.currentMessage.deleted\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={styles[this.props.position].deleteContainer}\n\t\t\t\tonPress={this.props.onPressDelete}\n\t\t\t>\n\t\t\t\t<Text type=\"button\" style={{ color: this.props.colourBrandingMain }}>\n\t\t\t\t\tDelete\n\t\t\t\t</Text>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst sameUserAsLast = isSameUser(\n\t\t\tthis.props.currentMessage,\n\t\t\tthis.props.previousMessage,\n\t\t);\n\t\tconst sameUser = isSameUser(\n\t\t\tthis.props.currentMessage,\n\t\t\tthis.props.nextMessage,\n\t\t);\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t{this.renderDay()}\n\t\t\t\t{this.props.currentMessage.system ? (\n\t\t\t\t\tthis.renderSystemMessage()\n\t\t\t\t) : (\n\t\t\t\t\t<View>\n\t\t\t\t\t\t{sameUserAsLast ? null : this.renderName()}\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles[this.props.position].container,\n\t\t\t\t\t\t\t\t{ marginBottom: sameUser ? 2 : 10 },\n\t\t\t\t\t\t\t\t!this.props.inverted && { marginBottom: 2 },\n\t\t\t\t\t\t\t\tthis.props.containerStyle[this.props.position],\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{this.props.position === \"left\" ? this.renderAvatar() : null}\n\t\t\t\t\t\t\t<View>\n\t\t\t\t\t\t\t\t{this.renderReply()}\n\t\t\t\t\t\t\t\t{this.renderBubble()}\n\t\t\t\t\t\t\t\t<View style={styles[this.props.position].actionButtons}>\n\t\t\t\t\t\t\t\t\t{this.renderReplyButton()}\n\t\t\t\t\t\t\t\t\t{this.renderDeleteButton()}\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t{this.props.position === \"right\" ? this.renderAvatar() : null}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = {\n\tleft: StyleSheet.create({\n\t\tcontainer: {\n\t\t\tflexDirection: \"row\",\n\t\t\talignItems: \"flex-end\",\n\t\t\tjustifyContent: \"flex-start\",\n\t\t\tmarginLeft: 10,\n\t\t\tmarginRight: 0,\n\t\t},\n\t\tname: {\n\t\t\tfontFamily: \"sf-regular\",\n\t\t\tcolor: TEXT_LIGHT,\n\t\t\tfontSize: 14,\n\t\t\ttextAlign: \"left\",\n\t\t\tmarginLeft: 50,\n\t\t\tmarginBottom: 5,\n\t\t},\n\t\treplyBubble: {\n\t\t\tflexDirection: \"row\",\n\t\t\talignItems: \"flex-end\",\n\t\t\tjustifyContent: \"flex-start\",\n\t\t\tpaddingLeft: 20,\n\t\t},\n\t\treplyBubbleInner: {\n\t\t\tpadding: 4,\n\t\t\tpaddingBottom: 16,\n\t\t\tmarginBottom: -12,\n\t\t\tborderRadius: 4,\n\t\t\topacity: 0.7,\n\t\t\tbackgroundColor: TEXT_SUPER_LIGHT,\n\t\t},\n\t\treplyBubbleText: {\n\t\t\tfontFamily: \"sf-regular\",\n\t\t\tcolor: TEXT_DARK,\n\t\t\tfontSize: 13,\n\t\t\ttextAlign: \"left\",\n\t\t},\n\t\treplyContainer: {\n\t\t\tpaddingLeft: 20,\n\t\t\tpaddingRight: 10,\n\t\t},\n\t\tdeleteContainer: {\n\t\t\tpaddingLeft: 10,\n\t\t},\n\t\tactionButtons: {\n\t\t\tflexDirection: \"row\",\n\t\t\talignItems: \"center\",\n\t\t},\n\t}),\n\tright: StyleSheet.create({\n\t\tcontainer: {\n\t\t\tflexDirection: \"row\",\n\t\t\talignItems: \"flex-end\",\n\t\t\tjustifyContent: \"flex-end\",\n\t\t\tmarginLeft: 0,\n\t\t\tmarginRight: 10,\n\t\t},\n\t\tname: {\n\t\t\tfontFamily: \"sf-regular\",\n\t\t\tcolor: TEXT_LIGHT,\n\t\t\tfontSize: 14,\n\t\t\ttextAlign: \"right\",\n\t\t\tmarginRight: 10,\n\t\t\tmarginBottom: 5,\n\t\t},\n\t\treplyBubble: {\n\t\t\tflexDirection: \"row\",\n\t\t\talignItems: \"flex-end\",\n\t\t\tjustifyContent: \"flex-end\",\n\t\t\tpaddingRight: 10,\n\t\t},\n\t\treplyBubbleInner: {\n\t\t\tpadding: 4,\n\t\t\tpaddingBottom: 16,\n\t\t\tmarginBottom: -12,\n\t\t\tborderRadius: 4,\n\t\t\topacity: 0.7,\n\t\t\tbackgroundColor: TEXT_SUPER_LIGHT,\n\t\t},\n\t\treplyBubbleText: {\n\t\t\tfontFamily: \"sf-regular\",\n\t\t\tcolor: TEXT_DARK,\n\t\t\tfontSize: 13,\n\t\t\ttextAlign: \"right\",\n\t\t},\n\t\treplyContainer: {\n\t\t\tpaddingRight: 10,\n\t\t},\n\t\tdeleteContainer: {\n\t\t\tpaddingRight: 10,\n\t\t},\n\t\tactionButtons: {\n\t\t\tflexDirection: \"row\",\n\t\t\talignItems: \"center\",\n\t\t\talignSelf: \"flex-end\",\n\t\t},\n\t}),\n};\n\nPlussChatMessage.defaultProps = {\n\trenderAvatar: undefined,\n\trenderBubble: null,\n\trenderDay: null,\n\trenderSystemMessage: null,\n\tposition: \"left\",\n\tcurrentMessage: {},\n\tnextMessage: {},\n\tpreviousMessage: {},\n\tuser: {},\n\tcontainerStyle: {},\n\tshowUserAvatar: true,\n\tinverted: true,\n};\n\nPlussChatMessage.propTypes = {\n\trenderAvatar: PropTypes.func,\n\tshowUserAvatar: PropTypes.bool,\n\trenderBubble: PropTypes.func,\n\trenderDay: PropTypes.func,\n\trenderSystemMessage: PropTypes.func,\n\tposition: PropTypes.oneOf([\"left\", \"right\"]),\n\tcurrentMessage: PropTypes.object,\n\tnextMessage: PropTypes.object,\n\tpreviousMessage: PropTypes.object,\n\tuser: PropTypes.object,\n\tinverted: PropTypes.bool,\n\tcontainerStyle: PropTypes.shape({\n\t\tleft: ViewPropTypes.style,\n\t\tright: ViewPropTypes.style,\n\t}),\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ import React from "react";
2
+ import { StyleSheet, View } from "react-native";
3
+ import { Text } from "./Text";
4
+ import moment from "moment";
5
+ export default class PlussChatTime extends React.Component {
6
+ shouldRenderDay(curTime, prevTime) {
7
+ return !curTime.isSame(prevTime, "d");
8
+ }
9
+ shouldRenderTime(curTime, prevTime) {
10
+ return curTime.diff(prevTime, "m") >= 10;
11
+ }
12
+ render() {
13
+ const curMesTime = moment(this.props.currentMessage.createdAt).local();
14
+ const prevTime = moment(this.props.previousMessage.createdAt).local();
15
+ const now = moment().local();
16
+ if (this.shouldRenderDay(curMesTime, prevTime) || this.shouldRenderTime(curMesTime, prevTime)) {
17
+ let timestamp = "";
18
+ if (!now.isSame(curMesTime, "d")) {
19
+ timestamp += curMesTime.format("ddd, D MMM");
20
+ if (!now.isSame(curMesTime, "y")) {
21
+ timestamp += ` ${curMesTime.format("YYYY")}`;
22
+ }
23
+ timestamp += " • ";
24
+ }
25
+ timestamp += curMesTime.format("h:mma");
26
+ return /*#__PURE__*/React.createElement(View, {
27
+ style: [styles.container, this.props.containerStyle]
28
+ }, /*#__PURE__*/React.createElement(View, {
29
+ style: [styles.wrapper, this.props.wrapperStyle]
30
+ }, /*#__PURE__*/React.createElement(Text, {
31
+ style: [styles.text, this.props.textStyle]
32
+ }, timestamp)));
33
+ }
34
+ return null;
35
+ }
36
+ }
37
+ const styles = StyleSheet.create({
38
+ container: {
39
+ alignItems: "center",
40
+ justifyContent: "center",
41
+ marginTop: 5,
42
+ marginBottom: 10
43
+ },
44
+ wrapper: {
45
+ // backgroundColor: '#ccc',
46
+ // borderRadius: 10,
47
+ // paddingLeft: 10,
48
+ // paddingRight: 10,
49
+ // paddingTop: 5,
50
+ // paddingBottom: 5,
51
+ },
52
+ text: {
53
+ backgroundColor: "transparent",
54
+ color: "#b2b2b2",
55
+ fontSize: 12,
56
+ fontWeight: "600"
57
+ }
58
+ });
59
+ //# sourceMappingURL=PlussChatTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","View","Text","moment","PlussChatTime","Component","shouldRenderDay","curTime","prevTime","isSame","shouldRenderTime","diff","render","curMesTime","props","currentMessage","createdAt","local","previousMessage","now","timestamp","format","createElement","style","styles","container","containerStyle","wrapper","wrapperStyle","text","textStyle","create","alignItems","justifyContent","marginTop","marginBottom","backgroundColor","color","fontSize","fontWeight"],"sources":["PlussChatTime.js"],"sourcesContent":["import React from \"react\";\nimport { StyleSheet, View } from \"react-native\";\nimport { Text } from \"./Text\";\n\nimport moment from \"moment\";\n\nexport default class PlussChatTime extends React.Component {\n\tshouldRenderDay(curTime, prevTime) {\n\t\treturn !curTime.isSame(prevTime, \"d\");\n\t}\n\n\tshouldRenderTime(curTime, prevTime) {\n\t\treturn curTime.diff(prevTime, \"m\") >= 10;\n\t}\n\n\trender() {\n\t\tconst curMesTime = moment(this.props.currentMessage.createdAt).local();\n\t\tconst prevTime = moment(this.props.previousMessage.createdAt).local();\n\t\tconst now = moment().local();\n\n\t\tif (\n\t\t\tthis.shouldRenderDay(curMesTime, prevTime) ||\n\t\t\tthis.shouldRenderTime(curMesTime, prevTime)\n\t\t) {\n\t\t\tlet timestamp = \"\";\n\t\t\tif (!now.isSame(curMesTime, \"d\")) {\n\t\t\t\ttimestamp += curMesTime.format(\"ddd, D MMM\");\n\t\t\t\tif (!now.isSame(curMesTime, \"y\")) {\n\t\t\t\t\ttimestamp += ` ${curMesTime.format(\"YYYY\")}`;\n\t\t\t\t}\n\t\t\t\ttimestamp += \" • \";\n\t\t\t}\n\t\t\ttimestamp += curMesTime.format(\"h:mma\");\n\t\t\treturn (\n\t\t\t\t<View style={[styles.container, this.props.containerStyle]}>\n\t\t\t\t\t<View style={[styles.wrapper, this.props.wrapperStyle]}>\n\t\t\t\t\t\t<Text style={[styles.text, this.props.textStyle]}>{timestamp}</Text>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tmarginTop: 5,\n\t\tmarginBottom: 10,\n\t},\n\twrapper: {\n\t\t// backgroundColor: '#ccc',\n\t\t// borderRadius: 10,\n\t\t// paddingLeft: 10,\n\t\t// paddingRight: 10,\n\t\t// paddingTop: 5,\n\t\t// paddingBottom: 5,\n\t},\n\ttext: {\n\t\tbackgroundColor: \"transparent\",\n\t\tcolor: \"#b2b2b2\",\n\t\tfontSize: 12,\n\t\tfontWeight: \"600\",\n\t},\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,IAAI,QAAQ,QAAQ;AAE7B,OAAOC,MAAM,MAAM,QAAQ;AAE3B,eAAe,MAAMC,aAAa,SAASL,KAAK,CAACM,SAAS,CAAC;EAC1DC,eAAeA,CAACC,OAAO,EAAEC,QAAQ,EAAE;IAClC,OAAO,CAACD,OAAO,CAACE,MAAM,CAACD,QAAQ,EAAE,GAAG,CAAC;EACtC;EAEAE,gBAAgBA,CAACH,OAAO,EAAEC,QAAQ,EAAE;IACnC,OAAOD,OAAO,CAACI,IAAI,CAACH,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE;EACzC;EAEAI,MAAMA,CAAA,EAAG;IACR,MAAMC,UAAU,GAAGV,MAAM,CAAC,IAAI,CAACW,KAAK,CAACC,cAAc,CAACC,SAAS,CAAC,CAACC,KAAK,CAAC,CAAC;IACtE,MAAMT,QAAQ,GAAGL,MAAM,CAAC,IAAI,CAACW,KAAK,CAACI,eAAe,CAACF,SAAS,CAAC,CAACC,KAAK,CAAC,CAAC;IACrE,MAAME,GAAG,GAAGhB,MAAM,CAAC,CAAC,CAACc,KAAK,CAAC,CAAC;IAE5B,IACC,IAAI,CAACX,eAAe,CAACO,UAAU,EAAEL,QAAQ,CAAC,IAC1C,IAAI,CAACE,gBAAgB,CAACG,UAAU,EAAEL,QAAQ,CAAC,EAC1C;MACD,IAAIY,SAAS,GAAG,EAAE;MAClB,IAAI,CAACD,GAAG,CAACV,MAAM,CAACI,UAAU,EAAE,GAAG,CAAC,EAAE;QACjCO,SAAS,IAAIP,UAAU,CAACQ,MAAM,CAAC,YAAY,CAAC;QAC5C,IAAI,CAACF,GAAG,CAACV,MAAM,CAACI,UAAU,EAAE,GAAG,CAAC,EAAE;UACjCO,SAAS,IAAI,IAAIP,UAAU,CAACQ,MAAM,CAAC,MAAM,CAAC,EAAE;QAC7C;QACAD,SAAS,IAAI,KAAK;MACnB;MACAA,SAAS,IAAIP,UAAU,CAACQ,MAAM,CAAC,OAAO,CAAC;MACvC,oBACCtB,KAAA,CAAAuB,aAAA,CAACrB,IAAI;QAACsB,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE,IAAI,CAACX,KAAK,CAACY,cAAc;MAAE,gBAC1D3B,KAAA,CAAAuB,aAAA,CAACrB,IAAI;QAACsB,KAAK,EAAE,CAACC,MAAM,CAACG,OAAO,EAAE,IAAI,CAACb,KAAK,CAACc,YAAY;MAAE,gBACtD7B,KAAA,CAAAuB,aAAA,CAACpB,IAAI;QAACqB,KAAK,EAAE,CAACC,MAAM,CAACK,IAAI,EAAE,IAAI,CAACf,KAAK,CAACgB,SAAS;MAAE,GAAEV,SAAgB,CAC9D,CACD,CAAC;IAET;IACA,OAAO,IAAI;EACZ;AACD;AAEA,MAAMI,MAAM,GAAGxB,UAAU,CAAC+B,MAAM,CAAC;EAChCN,SAAS,EAAE;IACVO,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,SAAS,EAAE,CAAC;IACZC,YAAY,EAAE;EACf,CAAC;EACDR,OAAO,EAAE;IACR;IACA;IACA;IACA;IACA;IACA;EAAA,CACA;EACDE,IAAI,EAAE;IACLO,eAAe,EAAE,aAAa;IAC9BC,KAAK,EAAE,SAAS;IAChBC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACb;AACD,CAAC,CAAC","ignoreList":[]}