@plusscommunities/pluss-core-app 1.5.3 → 1.5.5

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.
@@ -343,7 +343,8 @@ class ImageUploader extends Component {
343
343
  }
344
344
  } else {
345
345
  if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {
346
- this.handleVideoPicked(mediaSelected[0].localUri);
346
+ const uri = mediaSelected[0].localUri || mediaSelected[0].uri;
347
+ this.handleVideoPicked(uri);
347
348
  } else {
348
349
  this.handleMultiImagePicked(mediaSelected);
349
350
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["ImageUploader.js"],"names":["React","Component","View","ScrollView","TouchableOpacity","Text","Platform","Linking","Modal","Dimensions","StyleSheet","ImageBackground","connect","Icon","_","Camera","MediaLibrary","ImageManipulator","ImagePicker","ImageBrowser","ExpoImageManipulator","Header","Popup","PopupMenu","InlineButton","getValueOrDefault","getThumb300","isVideo","getMainBrandingColourFromState","BOXGREY","INACTIVE_BUTTON","TEXT_BLUEGREY","TEXT_DARK","LINEGREY","Config","fileActions","stockImagesLoaded","imageLibraryLoaded","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","DEFAULT_ASPECT","DEFAULT_ALLOWS_EDITING","DEFAULT_ALLOWS_IOS_CAMERA_EDITING","DEFAULT_EXIF","DEFULAT_IMAGE_TYPE","DEFAULT_IMAGE_NAME","DEFAULT_VIDEO_NAME","DEFAULT_SIZE","DEFAULT_COMPRESSION","ImageUploader","constructor","props","hasPermission","getPermissionsAsync","granted","setState","loadingLocalFolders","localAlbums","getAlbumsAsync","includeSmartAlbums","title","id","error","console","log","loadingRemoteFolders","stockImages","getStockPhotos","libraryRes","getMediaFolders","user","site","data","mediaUri","uploadUri","uri","resizeImageAsync","res","uploadUserMediaWithProgress","progress","onUploadProgress","onUploadSuccess","env","baseUploadsUrl","key","e","onUploadFailed","actions","resize","size","saveOptions","format","compress","quality","base64","manipulateAsync","imageUri","fileName","getUploadUrl","userId","onUploadStarted","hideUploadMenu","resized","onlySelectImage","onImageSelected","imagesSelected","imagesUploaded","map","image","i","length","fileType","substring","lastIndexOf","cameraPermission","requestCameraPermissionsAsync","rollPermission","requestPermissionsAsync","status","showWarningPopup","state","loadLocalAlbums","multiple","allowVideo","allowsEditing","askPermissionsAsync","result","launchImageLibraryAsync","mediaTypes","MediaTypeOptions","Images","isEditingEnabled","aspect","exif","cancelled","handleImagePicked","Videos","handleVideoPicked","editingAllowed","OS","allowsEditingIOSCamera","launchCameraAsync","showUploadMenu","showPhotos","selected","showRemote","selectedAlbumId","showCropper","showSelectAlbum","videoSelected","onAttach","selectedType","callback","openCropper","mediaSelected","onLibrarySelected","media","mediaType","MediaType","video","localUri","handleMultiImagePicked","hidePhotos","deleteIndex","indexOf","splice","options","text","onPress","openCamera","push","openVideoCamera","openPhotos","hideLibrary","openLibrary","selectedItemNumber","styles","selectedItemContainer","selectedMarkerContainer","backgroundColor","colourBrandingMain","selectedItemText","selectedItemIcon","warning","componentDidMount","loadRemoteAlbums","camera","roll","innerWarning","closeWarningPopup","goToPermissionSettings","openURL","renderSelectionPreview","selectionPreviewContainer","previewItemContainer","previewItemImage","previewItemRemoveButton","onRemoveImage","previewItemRemoveContainer","previewItemRemoveIcon","renderSelectedAlbum","selectedAlbum","imageLibrary","find","album","selectedAlbumText","onSelectAlbum","selectAlbumButton","selectAlbumButtonText","selectAlbumButtonIcon","renderBrowser","imagesLimit","onSelectionChange","renderSelectedComponent","onSelected","browserContainer","itemContainer","renderAttachButton","canAttach","isEmpty","attachText","buttonContainer","renderSelectAlbumPopup","onSelectAlbumClosed","selectAlbumModal","selectAlbumContainer","selectAlbumTitleContainer","selectAlbumTitle","index","onAlbumSelected","albumOptionContainer","borderTopWidth","albumOptionText","marginHorizontal","color","renderPhotos","popupTitle","contentContainer","render","action","bind","bold","buildOptions","toggleCropper","create","flex","padding","position","top","right","borderRadius","alignItems","justifyContent","fontFamily","fontSize","marginBottom","paddingHorizontal","paddingTop","flexDirection","marginRight","bottom","left","zIndex","borderTopLeftRadius","borderTopRightRadius","maxHeight","borderColor","borderBottomWidth","textAlign","paddingVertical","paddingRight","paddingLeft","overflow","borderWidth","mapStateToProps","filter","folder","Public","Name","RowId","images","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, ScrollView, TouchableOpacity, Text, Platform, Linking, Modal, Dimensions, StyleSheet, ImageBackground } from 'react-native';\nimport { connect } from 'react-redux';\nimport { Icon } from 'react-native-elements';\nimport _ from 'lodash';\nimport { Camera } from 'expo-camera';\nimport * as MediaLibrary from 'expo-media-library';\nimport * as ImageManipulator from 'expo-image-manipulator';\nimport * as ImagePicker from 'expo-image-picker';\nimport ImageBrowser from './expo-image-picker-multiple/ImageBrowser';\nimport ExpoImageManipulator from './react-native-expo-image-cropper/ExpoImageManipulator';\nimport Header from './Header';\nimport { Popup } from './Popup';\nimport { PopupMenu } from './PopupMenu';\nimport { InlineButton } from './InlineButton';\nimport { getValueOrDefault, getThumb300, isVideo } from '../helper';\nimport { getMainBrandingColourFromState, BOXGREY, INACTIVE_BUTTON, TEXT_BLUEGREY, TEXT_DARK, LINEGREY } from '../colours';\nimport Config from '../config';\nimport { fileActions } from '../apis';\nimport { stockImagesLoaded, imageLibraryLoaded } from '../actions';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst DEFAULT_ASPECT = [1, 1];\nconst DEFAULT_ALLOWS_EDITING = true;\nconst DEFAULT_ALLOWS_IOS_CAMERA_EDITING = false;\nconst DEFAULT_EXIF = true;\nconst DEFULAT_IMAGE_TYPE = 'jpeg';\nconst DEFAULT_IMAGE_NAME = 'image';\nconst DEFAULT_VIDEO_NAME = 'video';\nconst DEFAULT_SIZE = {\n width: 1400,\n};\nconst DEFAULT_COMPRESSION = 0.8;\n\nclass ImageUploader extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n showUploadMenu: false,\n warning: null,\n showPhotos: false,\n showRemote: false,\n selected: [],\n selectedType: '',\n onAttach: null,\n selectedAlbumId: '',\n showSelectAlbum: false,\n showCropper: false,\n localAlbums: [],\n loadingLocalFolders: false,\n loadingRemoteFolders: false,\n };\n }\n\n componentDidMount() {\n this.loadLocalAlbums();\n this.loadRemoteAlbums();\n }\n\n loadLocalAlbums = async () => {\n const hasPermission = await MediaLibrary.getPermissionsAsync();\n if (!hasPermission.granted) return;\n\n this.setState({ loadingLocalFolders: true }, async () => {\n try {\n const localAlbums = await MediaLibrary.getAlbumsAsync({ includeSmartAlbums: true });\n this.setState({\n loadingLocalFolders: false,\n localAlbums: [\n {\n title: 'All Photos',\n id: '',\n },\n ...localAlbums,\n ],\n });\n } catch (error) {\n console.log('loadLocalAlbums - error', error);\n this.setState({ loadingLocalFolders: false });\n }\n });\n };\n\n loadRemoteAlbums = () => {\n this.setState({ loadingRemoteFolders: true }, async () => {\n try {\n const stockImages = await fileActions.getStockPhotos();\n this.props.stockImagesLoaded(stockImages);\n const libraryRes = await fileActions.getMediaFolders(this.props.user.site);\n this.props.imageLibraryLoaded(libraryRes.data);\n } catch (error) {\n console.log('loadRemoteAlbums - error', error);\n } finally {\n this.setState({ loadingRemoteFolders: false });\n }\n });\n };\n\n showUploadMenu() {\n this.setState({\n showUploadMenu: true,\n });\n }\n\n hideUploadMenu() {\n this.setState({\n showUploadMenu: false,\n });\n }\n\n retryUpload = async (mediaUri, uploadUri) => {\n try {\n const uri = isVideo(uploadUri) ? mediaUri : (await this.resizeImageAsync(mediaUri)).uri;\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload(retry) success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('retryUpload error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n resizeImageAsync = async uri => {\n const actions = [\n {\n resize: getValueOrDefault(this.props.size, DEFAULT_SIZE),\n },\n ];\n const saveOptions = {\n format: DEFULAT_IMAGE_TYPE,\n compress: getValueOrDefault(this.props.quality, DEFAULT_COMPRESSION),\n base64: true,\n };\n return await ImageManipulator.manipulateAsync(uri, actions, saveOptions);\n };\n\n handleImagePicked = async imageUri => {\n let uploadUri;\n try {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, imageUri);\n this.hideUploadMenu();\n\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n handleMultiImagePicked = async imagesSelected => {\n // Signal start of all images selected\n const imagesUploaded = imagesSelected.map(image => {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n const uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n if (!this.props.onlySelectImage) this.props.onUploadStarted(uploadUri, image.uri);\n return { imageUri: image.uri, uploadUri, fileName };\n });\n this.hideUploadMenu();\n\n // Sequentially upload all imagesUploaded\n for (let i = 0; i < imagesUploaded.length; i++) {\n const image = imagesUploaded[i];\n const { imageUri, uploadUri, fileName } = image;\n try {\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleMultiImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n }\n };\n\n handleVideoPicked = async uri => {\n let uploadUri;\n try {\n const fileType = uri.substring(uri.lastIndexOf('.') + 1);\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_VIDEO_NAME)}.${fileType}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, uri);\n this.hideUploadMenu();\n\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleVideoPicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n showWarningPopup(camera, roll) {\n if (Platform.OS !== 'ios') {\n return;\n }\n let innerWarning = '';\n if (camera && roll) {\n innerWarning = 'both your camera and photo library';\n } else if (camera) {\n innerWarning = 'your camera';\n } else if (roll) {\n innerWarning = 'your photo library';\n } else {\n // nothing to warn about\n return;\n }\n this.setState({\n warning: `You must grant access to ${innerWarning}. Tap Go to settings to change your permission settings.`,\n });\n }\n\n closeWarningPopup() {\n this.setState({\n warning: null,\n });\n }\n\n goToPermissionSettings() {\n Linking.openURL('app-settings:');\n this.setState({\n warning: null,\n });\n }\n\n askPermissionsAsync = async () => {\n const cameraPermission = await Camera.requestCameraPermissionsAsync();\n const rollPermission = await MediaLibrary.requestPermissionsAsync();\n if (cameraPermission.status !== 'granted' || rollPermission.status !== 'granted') {\n this.showWarningPopup(cameraPermission.status !== 'granted', rollPermission.status !== 'granted');\n return false;\n }\n if (this.state.localAlbums?.length <= 0) this.loadLocalAlbums();\n\n return true;\n };\n\n isEditingEnabled = () => {\n return !this.props.multiple && !this.props.allowVideo && getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_EDITING);\n };\n\n // NOTE: No longer used (replaced by openPhotos)\n openCameraRoll = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: this.isEditingEnabled(),\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: true,\n base64: true,\n });\n\n if (!result.cancelled) this.handleImagePicked(result.uri);\n };\n\n // NOTE: No longer used (replaced by openPhotos)\n openVideoRoll = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n allowsEditing: this.isEditingEnabled(),\n });\n\n if (!result.cancelled) this.handleVideoPicked(result.uri);\n };\n\n openCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n let editingAllowed = this.isEditingEnabled();\n if (Platform.OS === 'ios') {\n editingAllowed = getValueOrDefault(\n this.props.allowsEditingIOSCamera,\n getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_IOS_CAMERA_EDITING),\n );\n }\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: editingAllowed,\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: getValueOrDefault(this.props.exif, DEFAULT_EXIF),\n });\n\n if (!result.cancelled) this.handleImagePicked(result.uri);\n };\n\n openVideoCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: this.isEditingEnabled(),\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n });\n\n if (!result.cancelled) this.handleVideoPicked(result.uri);\n };\n\n openLibrary = async () => {\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: true,\n selectedAlbumId: '',\n });\n };\n\n openPhotos = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: false,\n selectedAlbumId: '',\n });\n };\n\n hidePhotos = () => {\n this.setState({ showPhotos: false });\n };\n\n openCropper = () => {\n this.setState({ showPhotos: false, showCropper: true });\n };\n\n toggleCropper = () => {\n this.setState({ showCropper: !this.state.showCropper });\n };\n\n onSelectAlbum = () => {\n this.setState({ showSelectAlbum: true });\n };\n\n onSelectAlbumClosed = () => {\n this.setState({ showSelectAlbum: false });\n };\n\n onAlbumSelected = selectedAlbumId => {\n this.setState({ showSelectAlbum: false, selectedAlbumId });\n };\n\n onSelectionChange = (selected, videoSelected, onAttach) => {\n this.setState({\n selected,\n selectedType: videoSelected ? 'video' : 'image',\n onAttach,\n });\n };\n\n onSelected = async callback => {\n if (this.isEditingEnabled()) {\n this.openCropper();\n } else {\n const mediaSelected = await callback;\n // console.log('mediaSelected', mediaSelected);\n if (this.state.showRemote) {\n if (this.props.onLibrarySelected) {\n mediaSelected.map(media => {\n this.props.onLibrarySelected(media.uri);\n });\n }\n } else {\n if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {\n this.handleVideoPicked(mediaSelected[0].localUri);\n } else {\n this.handleMultiImagePicked(mediaSelected);\n }\n }\n\n this.hidePhotos();\n }\n };\n\n onRemoveImage = uri => {\n const selected = [...this.state.selected];\n const deleteIndex = selected.indexOf(uri);\n selected.splice(deleteIndex, 1);\n this.setState({ selected });\n };\n\n buildOptions = () => {\n const options = [\n {\n text: 'Take photo',\n onPress: this.openCamera,\n },\n ];\n if (this.props.allowVideo)\n options.push({\n text: 'Record video',\n onPress: this.openVideoCamera,\n });\n options.push({\n text: 'Camera Roll',\n onPress: this.openPhotos,\n });\n if (!this.props.hideLibrary)\n options.push({\n text: 'Image Library',\n onPress: this.openLibrary,\n });\n\n return options;\n };\n\n renderSelectionPreview() {\n const { selected, showRemote } = this.state;\n\n return (\n <View>\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.selectionPreviewContainer}>\n {selected &&\n selected.map(uri => {\n const imageUri = showRemote ? getThumb300(uri) : uri;\n return (\n <View key={uri} style={styles.previewItemContainer}>\n <ImageBackground style={styles.previewItemImage} source={{ uri: imageUri }} />\n <TouchableOpacity style={styles.previewItemRemoveButton} onPress={() => this.onRemoveImage(uri)}>\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 </View>\n );\n }\n\n renderSelectedAlbum() {\n const { localAlbums, selectedAlbumId, showRemote } = this.state;\n const selectedAlbum = (showRemote ? this.props.imageLibrary : localAlbums).find(album => album.id === selectedAlbumId);\n const selectedAlbumText = selectedAlbum ? selectedAlbum.title : '';\n\n return (\n <TouchableOpacity onPress={this.onSelectAlbum}>\n <View style={styles.selectAlbumButton}>\n <Text style={styles.selectAlbumButtonText}>{selectedAlbumText}</Text>\n <Icon name=\"angle-down\" type=\"font-awesome\" iconStyle={styles.selectAlbumButtonIcon} />\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSelectedComponent = selectedItemNumber => {\n return (\n <View style={styles.selectedItemContainer}>\n <View style={[styles.selectedMarkerContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n {this.props.multiple ? (\n <Text style={styles.selectedItemText}>{selectedItemNumber}</Text>\n ) : (\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={styles.selectedItemIcon} />\n )}\n </View>\n </View>\n );\n };\n\n renderBrowser() {\n const { selected, selectedAlbumId, showRemote } = this.state;\n const { imagesLimit, multiple, allowVideo, imageLibrary } = this.props;\n const width = (SCREEN_WIDTH - 10 * 2) / 4;\n\n return (\n <ImageBrowser\n max={!multiple ? 1 : imagesLimit}\n loadCount={30}\n onChange={this.onSelectionChange}\n renderSelectedComponent={this.renderSelectedComponent}\n callback={this.onSelected}\n selected={selected}\n allowVideo={allowVideo}\n style={styles.browserContainer}\n itemStyle={styles.itemContainer}\n itemWidth={width}\n itemHeight={width}\n album={selectedAlbumId}\n remoteAlbums={showRemote ? imageLibrary : null}\n />\n );\n }\n\n renderAttachButton() {\n const { selected, selectedType } = this.state;\n const canAttach = selected.length > 0 && !_.isEmpty(selectedType);\n const attachText = `Attach ${canAttach ? selected.length : ''} ${canAttach ? selectedType : ''}${selected.length > 1 ? 's' : ''}`;\n\n return (\n <View style={styles.buttonContainer}>\n <InlineButton\n color={canAttach ? this.props.colourBrandingMain : INACTIVE_BUTTON}\n onPress={this.state.onAttach}\n fillTouchable\n large\n disabled={!canAttach}\n >\n {attachText}\n </InlineButton>\n </View>\n );\n }\n\n renderSelectAlbumPopup() {\n const { showSelectAlbum, localAlbums, showRemote } = this.state;\n if (!showSelectAlbum) return null;\n\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.onSelectAlbumClosed}>\n <View style={styles.selectAlbumModal}>\n <View style={styles.selectAlbumContainer}>\n <View style={styles.selectAlbumTitleContainer}>\n <Text style={styles.selectAlbumTitle}>Select Album</Text>\n </View>\n <ScrollView>\n {(showRemote ? this.props.imageLibrary : localAlbums).map((album, index) => {\n return (\n <TouchableOpacity key={album.id} onPress={() => this.onAlbumSelected(album.id)}>\n <View style={[styles.albumOptionContainer, index === 0 && { borderTopWidth: 0 }]}>\n <Text style={styles.albumOptionText}>{album.title}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n <TouchableOpacity onPress={this.onSelectAlbumClosed}>\n <View style={[styles.albumOptionContainer, { marginHorizontal: 0 }]}>\n <Text style={[styles.albumOptionText, { color: this.props.colourBrandingMain }]}>Cancel</Text>\n </View>\n </TouchableOpacity>\n </View>\n </View>\n </Modal>\n );\n }\n\n renderPhotos() {\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.hidePhotos}>\n <Header leftIcon=\"angle-left\" onPressLeft={this.hidePhotos} text={this.props.popupTitle || 'Attach image'} />\n <View style={styles.contentContainer}>\n {this.renderSelectionPreview()}\n {this.renderSelectedAlbum()}\n {this.renderBrowser()}\n </View>\n {this.renderAttachButton()}\n {this.renderSelectAlbumPopup()}\n </Modal>\n );\n }\n\n render() {\n const { warning, showUploadMenu, showPhotos, showCropper, selected } = this.state;\n\n if (warning != null) {\n return (\n <Popup\n title=\"Permissions missing\"\n text={warning}\n options={[\n {\n text: 'Go to settings',\n action: this.goToPermissionSettings.bind(this),\n bold: true,\n },\n {\n text: 'Ignore',\n action: this.closeWarningPopup.bind(this),\n },\n ]}\n />\n );\n }\n\n if (showUploadMenu) {\n const options = this.buildOptions();\n return <PopupMenu onClose={this.hideUploadMenu.bind(this)} options={options} title={this.props.popupTitle} cancelText=\"Cancel\" />;\n }\n\n if (showPhotos) return this.renderPhotos();\n\n if (showCropper) {\n return (\n <ExpoImageManipulator\n photo={{ uri: selected[0] }}\n onToggleModal={this.toggleCropper}\n isVisible={showCropper}\n onPictureChoosed={data => {\n this.handleImagePicked(data.uri);\n }}\n />\n );\n }\n\n return null;\n }\n}\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flex: 1,\n backgroundColor: BOXGREY,\n },\n browserContainer: {\n padding: 10,\n },\n itemContainer: {\n padding: 4,\n },\n selectedItemContainer: {\n flex: 1,\n backgroundColor: '#0008',\n },\n selectedMarkerContainer: {\n position: 'absolute',\n top: 6,\n right: 6,\n width: 20,\n height: 20,\n borderRadius: 10,\n alignItems: 'center',\n justifyContent: 'center',\n },\n selectedItemText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n selectedItemIcon: {\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n buttonContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n height: 60,\n paddingHorizontal: 14,\n backgroundColor: '#fff',\n },\n selectAlbumButton: {\n paddingTop: 13,\n paddingHorizontal: 14,\n flexDirection: 'row',\n alignItems: 'center',\n },\n selectAlbumButtonText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_BLUEGREY,\n marginRight: 6,\n },\n selectAlbumButtonIcon: {\n fontSize: 20,\n color: TEXT_BLUEGREY,\n },\n selectAlbumModal: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n },\n selectAlbumContainer: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: '#fff',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n maxHeight: SCREEN_HEIGHT / 2,\n },\n selectAlbumTitleContainer: {\n padding: 16,\n borderColor: LINEGREY,\n borderBottomWidth: 1,\n },\n selectAlbumTitle: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n albumOptionContainer: {\n marginHorizontal: 16,\n paddingVertical: 16,\n borderColor: LINEGREY,\n borderTopWidth: 1,\n },\n albumOptionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n selectionPreviewContainer: {\n paddingTop: 14,\n paddingRight: 2,\n paddingLeft: 14,\n },\n previewItemContainer: {\n marginRight: 12,\n },\n previewItemImage: {\n width: 50,\n height: 50,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n overflow: 'hidden',\n },\n previewItemRemoveButton: {\n position: 'absolute',\n top: -8,\n right: -8,\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});\n\nconst mapStateToProps = state => {\n const { user, media } = state;\n const imageLibrary = media.imageLibrary\n .filter(folder => !folder.Public)\n .map(album => {\n return {\n title: album.Name,\n id: album.RowId || '',\n images: album.RowId ? album.Images : media.stockImages,\n };\n });\n\n return {\n user,\n imageLibrary,\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, { stockImagesLoaded, imageLibraryLoaded }, null, { forwardRef: true })(ImageUploader);\n"]}
1
+ {"version":3,"sources":["ImageUploader.js"],"names":["React","Component","View","ScrollView","TouchableOpacity","Text","Platform","Linking","Modal","Dimensions","StyleSheet","ImageBackground","connect","Icon","_","Camera","MediaLibrary","ImageManipulator","ImagePicker","ImageBrowser","ExpoImageManipulator","Header","Popup","PopupMenu","InlineButton","getValueOrDefault","getThumb300","isVideo","getMainBrandingColourFromState","BOXGREY","INACTIVE_BUTTON","TEXT_BLUEGREY","TEXT_DARK","LINEGREY","Config","fileActions","stockImagesLoaded","imageLibraryLoaded","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","DEFAULT_ASPECT","DEFAULT_ALLOWS_EDITING","DEFAULT_ALLOWS_IOS_CAMERA_EDITING","DEFAULT_EXIF","DEFULAT_IMAGE_TYPE","DEFAULT_IMAGE_NAME","DEFAULT_VIDEO_NAME","DEFAULT_SIZE","DEFAULT_COMPRESSION","ImageUploader","constructor","props","hasPermission","getPermissionsAsync","granted","setState","loadingLocalFolders","localAlbums","getAlbumsAsync","includeSmartAlbums","title","id","error","console","log","loadingRemoteFolders","stockImages","getStockPhotos","libraryRes","getMediaFolders","user","site","data","mediaUri","uploadUri","uri","resizeImageAsync","res","uploadUserMediaWithProgress","progress","onUploadProgress","onUploadSuccess","env","baseUploadsUrl","key","e","onUploadFailed","actions","resize","size","saveOptions","format","compress","quality","base64","manipulateAsync","imageUri","fileName","getUploadUrl","userId","onUploadStarted","hideUploadMenu","resized","onlySelectImage","onImageSelected","imagesSelected","imagesUploaded","map","image","i","length","fileType","substring","lastIndexOf","cameraPermission","requestCameraPermissionsAsync","rollPermission","requestPermissionsAsync","status","showWarningPopup","state","loadLocalAlbums","multiple","allowVideo","allowsEditing","askPermissionsAsync","result","launchImageLibraryAsync","mediaTypes","MediaTypeOptions","Images","isEditingEnabled","aspect","exif","cancelled","handleImagePicked","Videos","handleVideoPicked","editingAllowed","OS","allowsEditingIOSCamera","launchCameraAsync","showUploadMenu","showPhotos","selected","showRemote","selectedAlbumId","showCropper","showSelectAlbum","videoSelected","onAttach","selectedType","callback","openCropper","mediaSelected","onLibrarySelected","media","mediaType","MediaType","video","localUri","handleMultiImagePicked","hidePhotos","deleteIndex","indexOf","splice","options","text","onPress","openCamera","push","openVideoCamera","openPhotos","hideLibrary","openLibrary","selectedItemNumber","styles","selectedItemContainer","selectedMarkerContainer","backgroundColor","colourBrandingMain","selectedItemText","selectedItemIcon","warning","componentDidMount","loadRemoteAlbums","camera","roll","innerWarning","closeWarningPopup","goToPermissionSettings","openURL","renderSelectionPreview","selectionPreviewContainer","previewItemContainer","previewItemImage","previewItemRemoveButton","onRemoveImage","previewItemRemoveContainer","previewItemRemoveIcon","renderSelectedAlbum","selectedAlbum","imageLibrary","find","album","selectedAlbumText","onSelectAlbum","selectAlbumButton","selectAlbumButtonText","selectAlbumButtonIcon","renderBrowser","imagesLimit","onSelectionChange","renderSelectedComponent","onSelected","browserContainer","itemContainer","renderAttachButton","canAttach","isEmpty","attachText","buttonContainer","renderSelectAlbumPopup","onSelectAlbumClosed","selectAlbumModal","selectAlbumContainer","selectAlbumTitleContainer","selectAlbumTitle","index","onAlbumSelected","albumOptionContainer","borderTopWidth","albumOptionText","marginHorizontal","color","renderPhotos","popupTitle","contentContainer","render","action","bind","bold","buildOptions","toggleCropper","create","flex","padding","position","top","right","borderRadius","alignItems","justifyContent","fontFamily","fontSize","marginBottom","paddingHorizontal","paddingTop","flexDirection","marginRight","bottom","left","zIndex","borderTopLeftRadius","borderTopRightRadius","maxHeight","borderColor","borderBottomWidth","textAlign","paddingVertical","paddingRight","paddingLeft","overflow","borderWidth","mapStateToProps","filter","folder","Public","Name","RowId","images","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, ScrollView, TouchableOpacity, Text, Platform, Linking, Modal, Dimensions, StyleSheet, ImageBackground } from 'react-native';\nimport { connect } from 'react-redux';\nimport { Icon } from 'react-native-elements';\nimport _ from 'lodash';\nimport { Camera } from 'expo-camera';\nimport * as MediaLibrary from 'expo-media-library';\nimport * as ImageManipulator from 'expo-image-manipulator';\nimport * as ImagePicker from 'expo-image-picker';\nimport ImageBrowser from './expo-image-picker-multiple/ImageBrowser';\nimport ExpoImageManipulator from './react-native-expo-image-cropper/ExpoImageManipulator';\nimport Header from './Header';\nimport { Popup } from './Popup';\nimport { PopupMenu } from './PopupMenu';\nimport { InlineButton } from './InlineButton';\nimport { getValueOrDefault, getThumb300, isVideo } from '../helper';\nimport { getMainBrandingColourFromState, BOXGREY, INACTIVE_BUTTON, TEXT_BLUEGREY, TEXT_DARK, LINEGREY } from '../colours';\nimport Config from '../config';\nimport { fileActions } from '../apis';\nimport { stockImagesLoaded, imageLibraryLoaded } from '../actions';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst DEFAULT_ASPECT = [1, 1];\nconst DEFAULT_ALLOWS_EDITING = true;\nconst DEFAULT_ALLOWS_IOS_CAMERA_EDITING = false;\nconst DEFAULT_EXIF = true;\nconst DEFULAT_IMAGE_TYPE = 'jpeg';\nconst DEFAULT_IMAGE_NAME = 'image';\nconst DEFAULT_VIDEO_NAME = 'video';\nconst DEFAULT_SIZE = {\n width: 1400,\n};\nconst DEFAULT_COMPRESSION = 0.8;\n\nclass ImageUploader extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n showUploadMenu: false,\n warning: null,\n showPhotos: false,\n showRemote: false,\n selected: [],\n selectedType: '',\n onAttach: null,\n selectedAlbumId: '',\n showSelectAlbum: false,\n showCropper: false,\n localAlbums: [],\n loadingLocalFolders: false,\n loadingRemoteFolders: false,\n };\n }\n\n componentDidMount() {\n this.loadLocalAlbums();\n this.loadRemoteAlbums();\n }\n\n loadLocalAlbums = async () => {\n const hasPermission = await MediaLibrary.getPermissionsAsync();\n if (!hasPermission.granted) return;\n\n this.setState({ loadingLocalFolders: true }, async () => {\n try {\n const localAlbums = await MediaLibrary.getAlbumsAsync({ includeSmartAlbums: true });\n this.setState({\n loadingLocalFolders: false,\n localAlbums: [\n {\n title: 'All Photos',\n id: '',\n },\n ...localAlbums,\n ],\n });\n } catch (error) {\n console.log('loadLocalAlbums - error', error);\n this.setState({ loadingLocalFolders: false });\n }\n });\n };\n\n loadRemoteAlbums = () => {\n this.setState({ loadingRemoteFolders: true }, async () => {\n try {\n const stockImages = await fileActions.getStockPhotos();\n this.props.stockImagesLoaded(stockImages);\n const libraryRes = await fileActions.getMediaFolders(this.props.user.site);\n this.props.imageLibraryLoaded(libraryRes.data);\n } catch (error) {\n console.log('loadRemoteAlbums - error', error);\n } finally {\n this.setState({ loadingRemoteFolders: false });\n }\n });\n };\n\n showUploadMenu() {\n this.setState({\n showUploadMenu: true,\n });\n }\n\n hideUploadMenu() {\n this.setState({\n showUploadMenu: false,\n });\n }\n\n retryUpload = async (mediaUri, uploadUri) => {\n try {\n const uri = isVideo(uploadUri) ? mediaUri : (await this.resizeImageAsync(mediaUri)).uri;\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload(retry) success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('retryUpload error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n resizeImageAsync = async uri => {\n const actions = [\n {\n resize: getValueOrDefault(this.props.size, DEFAULT_SIZE),\n },\n ];\n const saveOptions = {\n format: DEFULAT_IMAGE_TYPE,\n compress: getValueOrDefault(this.props.quality, DEFAULT_COMPRESSION),\n base64: true,\n };\n return await ImageManipulator.manipulateAsync(uri, actions, saveOptions);\n };\n\n handleImagePicked = async imageUri => {\n let uploadUri;\n try {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, imageUri);\n this.hideUploadMenu();\n\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n handleMultiImagePicked = async imagesSelected => {\n // Signal start of all images selected\n const imagesUploaded = imagesSelected.map(image => {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n const uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n if (!this.props.onlySelectImage) this.props.onUploadStarted(uploadUri, image.uri);\n return { imageUri: image.uri, uploadUri, fileName };\n });\n this.hideUploadMenu();\n\n // Sequentially upload all imagesUploaded\n for (let i = 0; i < imagesUploaded.length; i++) {\n const image = imagesUploaded[i];\n const { imageUri, uploadUri, fileName } = image;\n try {\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleMultiImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n }\n };\n\n handleVideoPicked = async uri => {\n let uploadUri;\n try {\n const fileType = uri.substring(uri.lastIndexOf('.') + 1);\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_VIDEO_NAME)}.${fileType}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, uri);\n this.hideUploadMenu();\n\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleVideoPicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n showWarningPopup(camera, roll) {\n if (Platform.OS !== 'ios') {\n return;\n }\n let innerWarning = '';\n if (camera && roll) {\n innerWarning = 'both your camera and photo library';\n } else if (camera) {\n innerWarning = 'your camera';\n } else if (roll) {\n innerWarning = 'your photo library';\n } else {\n // nothing to warn about\n return;\n }\n this.setState({\n warning: `You must grant access to ${innerWarning}. Tap Go to settings to change your permission settings.`,\n });\n }\n\n closeWarningPopup() {\n this.setState({\n warning: null,\n });\n }\n\n goToPermissionSettings() {\n Linking.openURL('app-settings:');\n this.setState({\n warning: null,\n });\n }\n\n askPermissionsAsync = async () => {\n const cameraPermission = await Camera.requestCameraPermissionsAsync();\n const rollPermission = await MediaLibrary.requestPermissionsAsync();\n if (cameraPermission.status !== 'granted' || rollPermission.status !== 'granted') {\n this.showWarningPopup(cameraPermission.status !== 'granted', rollPermission.status !== 'granted');\n return false;\n }\n if (this.state.localAlbums?.length <= 0) this.loadLocalAlbums();\n\n return true;\n };\n\n isEditingEnabled = () => {\n return !this.props.multiple && !this.props.allowVideo && getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_EDITING);\n };\n\n // NOTE: No longer used (replaced by openPhotos)\n openCameraRoll = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: this.isEditingEnabled(),\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: true,\n base64: true,\n });\n\n if (!result.cancelled) this.handleImagePicked(result.uri);\n };\n\n // NOTE: No longer used (replaced by openPhotos)\n openVideoRoll = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n allowsEditing: this.isEditingEnabled(),\n });\n\n if (!result.cancelled) this.handleVideoPicked(result.uri);\n };\n\n openCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n let editingAllowed = this.isEditingEnabled();\n if (Platform.OS === 'ios') {\n editingAllowed = getValueOrDefault(\n this.props.allowsEditingIOSCamera,\n getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_IOS_CAMERA_EDITING),\n );\n }\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: editingAllowed,\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: getValueOrDefault(this.props.exif, DEFAULT_EXIF),\n });\n\n if (!result.cancelled) this.handleImagePicked(result.uri);\n };\n\n openVideoCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: this.isEditingEnabled(),\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n });\n\n if (!result.cancelled) this.handleVideoPicked(result.uri);\n };\n\n openLibrary = async () => {\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: true,\n selectedAlbumId: '',\n });\n };\n\n openPhotos = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: false,\n selectedAlbumId: '',\n });\n };\n\n hidePhotos = () => {\n this.setState({ showPhotos: false });\n };\n\n openCropper = () => {\n this.setState({ showPhotos: false, showCropper: true });\n };\n\n toggleCropper = () => {\n this.setState({ showCropper: !this.state.showCropper });\n };\n\n onSelectAlbum = () => {\n this.setState({ showSelectAlbum: true });\n };\n\n onSelectAlbumClosed = () => {\n this.setState({ showSelectAlbum: false });\n };\n\n onAlbumSelected = selectedAlbumId => {\n this.setState({ showSelectAlbum: false, selectedAlbumId });\n };\n\n onSelectionChange = (selected, videoSelected, onAttach) => {\n this.setState({\n selected,\n selectedType: videoSelected ? 'video' : 'image',\n onAttach,\n });\n };\n\n onSelected = async callback => {\n if (this.isEditingEnabled()) {\n this.openCropper();\n } else {\n const mediaSelected = await callback;\n // console.log('mediaSelected', mediaSelected);\n if (this.state.showRemote) {\n if (this.props.onLibrarySelected) {\n mediaSelected.map(media => {\n this.props.onLibrarySelected(media.uri);\n });\n }\n } else {\n if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {\n const uri = mediaSelected[0].localUri || mediaSelected[0].uri;\n this.handleVideoPicked(uri);\n } else {\n this.handleMultiImagePicked(mediaSelected);\n }\n }\n\n this.hidePhotos();\n }\n };\n\n onRemoveImage = uri => {\n const selected = [...this.state.selected];\n const deleteIndex = selected.indexOf(uri);\n selected.splice(deleteIndex, 1);\n this.setState({ selected });\n };\n\n buildOptions = () => {\n const options = [\n {\n text: 'Take photo',\n onPress: this.openCamera,\n },\n ];\n if (this.props.allowVideo)\n options.push({\n text: 'Record video',\n onPress: this.openVideoCamera,\n });\n options.push({\n text: 'Camera Roll',\n onPress: this.openPhotos,\n });\n if (!this.props.hideLibrary)\n options.push({\n text: 'Image Library',\n onPress: this.openLibrary,\n });\n\n return options;\n };\n\n renderSelectionPreview() {\n const { selected, showRemote } = this.state;\n\n return (\n <View>\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.selectionPreviewContainer}>\n {selected &&\n selected.map(uri => {\n const imageUri = showRemote ? getThumb300(uri) : uri;\n return (\n <View key={uri} style={styles.previewItemContainer}>\n <ImageBackground style={styles.previewItemImage} source={{ uri: imageUri }} />\n <TouchableOpacity style={styles.previewItemRemoveButton} onPress={() => this.onRemoveImage(uri)}>\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 </View>\n );\n }\n\n renderSelectedAlbum() {\n const { localAlbums, selectedAlbumId, showRemote } = this.state;\n const selectedAlbum = (showRemote ? this.props.imageLibrary : localAlbums).find(album => album.id === selectedAlbumId);\n const selectedAlbumText = selectedAlbum ? selectedAlbum.title : '';\n\n return (\n <TouchableOpacity onPress={this.onSelectAlbum}>\n <View style={styles.selectAlbumButton}>\n <Text style={styles.selectAlbumButtonText}>{selectedAlbumText}</Text>\n <Icon name=\"angle-down\" type=\"font-awesome\" iconStyle={styles.selectAlbumButtonIcon} />\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSelectedComponent = selectedItemNumber => {\n return (\n <View style={styles.selectedItemContainer}>\n <View style={[styles.selectedMarkerContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n {this.props.multiple ? (\n <Text style={styles.selectedItemText}>{selectedItemNumber}</Text>\n ) : (\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={styles.selectedItemIcon} />\n )}\n </View>\n </View>\n );\n };\n\n renderBrowser() {\n const { selected, selectedAlbumId, showRemote } = this.state;\n const { imagesLimit, multiple, allowVideo, imageLibrary } = this.props;\n const width = (SCREEN_WIDTH - 10 * 2) / 4;\n\n return (\n <ImageBrowser\n max={!multiple ? 1 : imagesLimit}\n loadCount={30}\n onChange={this.onSelectionChange}\n renderSelectedComponent={this.renderSelectedComponent}\n callback={this.onSelected}\n selected={selected}\n allowVideo={allowVideo}\n style={styles.browserContainer}\n itemStyle={styles.itemContainer}\n itemWidth={width}\n itemHeight={width}\n album={selectedAlbumId}\n remoteAlbums={showRemote ? imageLibrary : null}\n />\n );\n }\n\n renderAttachButton() {\n const { selected, selectedType } = this.state;\n const canAttach = selected.length > 0 && !_.isEmpty(selectedType);\n const attachText = `Attach ${canAttach ? selected.length : ''} ${canAttach ? selectedType : ''}${selected.length > 1 ? 's' : ''}`;\n\n return (\n <View style={styles.buttonContainer}>\n <InlineButton\n color={canAttach ? this.props.colourBrandingMain : INACTIVE_BUTTON}\n onPress={this.state.onAttach}\n fillTouchable\n large\n disabled={!canAttach}\n >\n {attachText}\n </InlineButton>\n </View>\n );\n }\n\n renderSelectAlbumPopup() {\n const { showSelectAlbum, localAlbums, showRemote } = this.state;\n if (!showSelectAlbum) return null;\n\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.onSelectAlbumClosed}>\n <View style={styles.selectAlbumModal}>\n <View style={styles.selectAlbumContainer}>\n <View style={styles.selectAlbumTitleContainer}>\n <Text style={styles.selectAlbumTitle}>Select Album</Text>\n </View>\n <ScrollView>\n {(showRemote ? this.props.imageLibrary : localAlbums).map((album, index) => {\n return (\n <TouchableOpacity key={album.id} onPress={() => this.onAlbumSelected(album.id)}>\n <View style={[styles.albumOptionContainer, index === 0 && { borderTopWidth: 0 }]}>\n <Text style={styles.albumOptionText}>{album.title}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n <TouchableOpacity onPress={this.onSelectAlbumClosed}>\n <View style={[styles.albumOptionContainer, { marginHorizontal: 0 }]}>\n <Text style={[styles.albumOptionText, { color: this.props.colourBrandingMain }]}>Cancel</Text>\n </View>\n </TouchableOpacity>\n </View>\n </View>\n </Modal>\n );\n }\n\n renderPhotos() {\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.hidePhotos}>\n <Header leftIcon=\"angle-left\" onPressLeft={this.hidePhotos} text={this.props.popupTitle || 'Attach image'} />\n <View style={styles.contentContainer}>\n {this.renderSelectionPreview()}\n {this.renderSelectedAlbum()}\n {this.renderBrowser()}\n </View>\n {this.renderAttachButton()}\n {this.renderSelectAlbumPopup()}\n </Modal>\n );\n }\n\n render() {\n const { warning, showUploadMenu, showPhotos, showCropper, selected } = this.state;\n\n if (warning != null) {\n return (\n <Popup\n title=\"Permissions missing\"\n text={warning}\n options={[\n {\n text: 'Go to settings',\n action: this.goToPermissionSettings.bind(this),\n bold: true,\n },\n {\n text: 'Ignore',\n action: this.closeWarningPopup.bind(this),\n },\n ]}\n />\n );\n }\n\n if (showUploadMenu) {\n const options = this.buildOptions();\n return <PopupMenu onClose={this.hideUploadMenu.bind(this)} options={options} title={this.props.popupTitle} cancelText=\"Cancel\" />;\n }\n\n if (showPhotos) return this.renderPhotos();\n\n if (showCropper) {\n return (\n <ExpoImageManipulator\n photo={{ uri: selected[0] }}\n onToggleModal={this.toggleCropper}\n isVisible={showCropper}\n onPictureChoosed={data => {\n this.handleImagePicked(data.uri);\n }}\n />\n );\n }\n\n return null;\n }\n}\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flex: 1,\n backgroundColor: BOXGREY,\n },\n browserContainer: {\n padding: 10,\n },\n itemContainer: {\n padding: 4,\n },\n selectedItemContainer: {\n flex: 1,\n backgroundColor: '#0008',\n },\n selectedMarkerContainer: {\n position: 'absolute',\n top: 6,\n right: 6,\n width: 20,\n height: 20,\n borderRadius: 10,\n alignItems: 'center',\n justifyContent: 'center',\n },\n selectedItemText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n selectedItemIcon: {\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n buttonContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n height: 60,\n paddingHorizontal: 14,\n backgroundColor: '#fff',\n },\n selectAlbumButton: {\n paddingTop: 13,\n paddingHorizontal: 14,\n flexDirection: 'row',\n alignItems: 'center',\n },\n selectAlbumButtonText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_BLUEGREY,\n marginRight: 6,\n },\n selectAlbumButtonIcon: {\n fontSize: 20,\n color: TEXT_BLUEGREY,\n },\n selectAlbumModal: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n },\n selectAlbumContainer: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: '#fff',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n maxHeight: SCREEN_HEIGHT / 2,\n },\n selectAlbumTitleContainer: {\n padding: 16,\n borderColor: LINEGREY,\n borderBottomWidth: 1,\n },\n selectAlbumTitle: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n albumOptionContainer: {\n marginHorizontal: 16,\n paddingVertical: 16,\n borderColor: LINEGREY,\n borderTopWidth: 1,\n },\n albumOptionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n selectionPreviewContainer: {\n paddingTop: 14,\n paddingRight: 2,\n paddingLeft: 14,\n },\n previewItemContainer: {\n marginRight: 12,\n },\n previewItemImage: {\n width: 50,\n height: 50,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n overflow: 'hidden',\n },\n previewItemRemoveButton: {\n position: 'absolute',\n top: -8,\n right: -8,\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});\n\nconst mapStateToProps = state => {\n const { user, media } = state;\n const imageLibrary = media.imageLibrary\n .filter(folder => !folder.Public)\n .map(album => {\n return {\n title: album.Name,\n id: album.RowId || '',\n images: album.RowId ? album.Images : media.stockImages,\n };\n });\n\n return {\n user,\n imageLibrary,\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, { stockImagesLoaded, imageLibraryLoaded }, null, { forwardRef: true })(ImageUploader);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-core-app",
3
- "version": "1.5.3",
3
+ "version": "1.5.5",
4
4
  "description": "Core extension package for Pluss Communities platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
@@ -394,7 +394,8 @@ class ImageUploader extends Component {
394
394
  }
395
395
  } else {
396
396
  if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {
397
- this.handleVideoPicked(mediaSelected[0].localUri);
397
+ const uri = mediaSelected[0].localUri || mediaSelected[0].uri;
398
+ this.handleVideoPicked(uri);
398
399
  } else {
399
400
  this.handleMultiImagePicked(mediaSelected);
400
401
  }