diff --git a/app/screens/image_preview/image_preview.js b/app/screens/image_preview/image_preview.js
index 8442b9a23..fbe370d36 100644
--- a/app/screens/image_preview/image_preview.js
+++ b/app/screens/image_preview/image_preview.js
@@ -4,6 +4,7 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {
+ Alert,
Animated,
InteractionManager,
PanResponder,
@@ -17,6 +18,7 @@ import {
} from 'react-native';
import Icon from 'react-native-vector-icons/Ionicons';
import LinearGradient from 'react-native-linear-gradient';
+import {intlShape} from 'react-intl';
import EventEmitter from 'mattermost-redux/utils/event_emitter';
@@ -53,6 +55,10 @@ export default class ImagePreview extends PureComponent {
theme: PropTypes.object.isRequired
};
+ static contextTypes = {
+ intl: intlShape
+ }
+
constructor(props) {
super(props);
@@ -63,6 +69,7 @@ export default class ImagePreview extends PureComponent {
this.state = {
currentFile,
drag: new Animated.ValueXY(),
+ files: props.files,
footerOpacity: new Animated.Value(1),
pagingEnabled: true,
showFileInfo: true,
@@ -98,6 +105,10 @@ export default class ImagePreview extends PureComponent {
this.scrollView.scrollTo({x: (this.state.currentFile * nextProps.deviceWidth), animated: false});
});
}
+
+ if (!nextProps.files.length) {
+ this.showDeletedFilesAlert();
+ }
}
componentWillUnmount() {
@@ -197,6 +208,28 @@ export default class ImagePreview extends PureComponent {
}
};
+ showDeletedFilesAlert = () => {
+ const {intl} = this.context;
+
+ Alert.alert(
+ intl.formatMessage({
+ id: 'mobile.image_preview.deleted_post_title',
+ defaultMessage: 'Post Deleted'
+ }),
+ intl.formatMessage({
+ id: 'mobile.image_preview.deleted_post_message',
+ defaultMessage: "This post and it's files have been deleted. The previewer will now be closed."
+ }),
+ [{
+ text: intl.formatMessage({
+ id: 'mobile.server_upgrade.button',
+ defaultMessage: 'OK'
+ }),
+ onPress: this.close
+ }]
+ );
+ }
+
showDownloadOptions = () => {
if (Platform.OS === 'android') {
if (this.state.showDownloader) {
@@ -213,7 +246,7 @@ export default class ImagePreview extends PureComponent {
this.setHeaderAndFileInfoVisible(false);
const options = {
- title: this.props.files[this.state.currentFile].name,
+ title: this.state.files[this.state.currentFile].name,
items: [{
action: this.showDownloader,
text: {
@@ -257,7 +290,9 @@ export default class ImagePreview extends PureComponent {
};
renderDownloadButton = () => {
- const {canDownloadFiles, files} = this.props;
+ const {canDownloadFiles} = this.props;
+ const {files} = this.state;
+
const file = files[this.state.currentFile];
let icon;
@@ -325,7 +360,7 @@ export default class ImagePreview extends PureComponent {
onScroll={this.handleScroll}
scrollEventThrottle={2}
>
- {this.props.files.map((file, index) => {
+ {this.state.files.map((file, index) => {
let component;
if (file.has_preview_image || file.mime_type === 'image/gif') {
component = (
@@ -387,7 +422,7 @@ export default class ImagePreview extends PureComponent {
/>
- {`${this.state.currentFile + 1}/${this.props.files.length}`}
+ {`${this.state.currentFile + 1}/${this.state.files.length}`}
{this.renderDownloadButton()}
@@ -400,14 +435,14 @@ export default class ImagePreview extends PureComponent {
pointerEvents='none'
>
- {this.props.files[this.state.currentFile].name}
+ {this.state.files[this.state.currentFile].name}