// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import React, {PropTypes, PureComponent} from 'react';
import {
Dimensions,
Platform,
ScrollView,
StyleSheet,
TouchableOpacity,
View
} from 'react-native';
import Font from 'react-native-vector-icons/Ionicons';
import {RequestStatus} from 'mattermost-redux/constants';
import FileAttachmentImage from 'app/components/file_attachment_list/file_attachment_image';
import KeyboardLayout from 'app/components/layout/keyboard_layout';
const {height: deviceHeight} = Dimensions.get('window');
export default class FileUploadPreview extends PureComponent {
static propTypes = {
actions: PropTypes.shape({
addFileToFetchCache: PropTypes.func.isRequired,
handleClearFiles: PropTypes.func.isRequired,
handleRemoveFile: PropTypes.func.isRequired
}).isRequired,
channelId: PropTypes.string.isRequired,
channelIsLoading: PropTypes.bool,
createPostRequestStatus: PropTypes.string.isRequired,
fetchCache: PropTypes.object.isRequired,
files: PropTypes.array.isRequired,
inputHeight: PropTypes.number.isRequired,
rootId: PropTypes.string,
uploadFileRequestStatus: PropTypes.string.isRequired
};
componentWillReceiveProps(nextProps) {
if (this.props.createPostRequestStatus === RequestStatus.STARTED && nextProps.createPostRequestStatus === RequestStatus.SUCCESS) {
this.props.actions.handleClearFiles(this.props.channelId, this.props.rootId);
}
}
buildFilePreviews = () => {
return this.props.files.map((file) => {
return (
this.props.actions.handleRemoveFile(file.clientId, this.props.channelId, this.props.rootId)}
>
);
});
}
render() {
if (this.props.channelIsLoading || (!this.props.files.length && this.props.uploadFileRequestStatus !== RequestStatus.STARTED)) {
return null;
}
return (
{this.buildFilePreviews()}
);
}
}
const style = StyleSheet.create({
container: {
backgroundColor: 'rgba(0, 0, 0, 0.5)',
height: deviceHeight,
left: 0,
bottom: 0,
position: 'absolute',
width: '100%'
},
preview: {
justifyContent: 'flex-end',
height: 115,
width: 115,
elevation: 10,
shadowColor: '#000',
shadowOpacity: 1,
shadowRadius: 8,
shadowOffset: {
width: 0,
height: 0
}
},
removeButtonWrapper: {
alignItems: 'center',
justifyContent: 'center',
position: 'absolute',
top: 7,
right: 7,
width: 20,
height: 20,
borderRadius: 10,
...Platform.select({
android: {
backgroundColor: '#000'
}
})
},
scrollView: {
flex: 1,
marginBottom: 24
},
scrollViewContent: {
alignItems: 'flex-end',
marginLeft: 16
}
});