Skip to content

Commit

Permalink
Revert "Merge pull request Expensify#12648 from margelo/@thomas/fast-…
Browse files Browse the repository at this point in the history
…image-caching"

This reverts commit 360a167, reversing
changes made to 39a68d1.
  • Loading branch information
thomas-coldwell committed Nov 24, 2022
1 parent 159f8ec commit 94a90e1
Show file tree
Hide file tree
Showing 11 changed files with 149 additions and 253 deletions.
2 changes: 0 additions & 2 deletions src/CONST.js
Original file line number Diff line number Diff line change
Expand Up @@ -862,8 +862,6 @@ const CONST = {
},

TFA_CODE_LENGTH: 6,

CHAT_ATTACHMENT_TOKEN_KEY: 'X-Chat-Attachment-Token',
};

export default CONST;
7 changes: 4 additions & 3 deletions src/components/AttachmentModal.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ class AttachmentModal extends PureComponent {
* @param {String} sourceURL
*/
downloadAttachment(sourceURL) {
fileDownload(this.props.isAuthTokenRequired ? addEncryptedAuthTokenToURL(sourceURL) : sourceURL, this.props.originalFileName);
fileDownload(sourceURL, this.props.originalFileName);

// At ios, if the keyboard is open while opening the attachment, then after downloading
// the attachment keyboard will show up. So, to fix it we need to dismiss the keyboard.
Expand Down Expand Up @@ -229,7 +229,9 @@ class AttachmentModal extends PureComponent {
}

render() {
const sourceURL = this.state.sourceURL;
const sourceURL = this.props.isAuthTokenRequired
? addEncryptedAuthTokenToURL(this.state.sourceURL)
: this.state.sourceURL;

const {fileName, fileExtension} = FileUtils.splitExtensionFromFileName(this.props.originalFileName || lodashGet(this.state, 'file.name', ''));

Expand Down Expand Up @@ -264,7 +266,6 @@ class AttachmentModal extends PureComponent {
<View style={styles.imageModalImageCenterContainer}>
{this.state.sourceURL && (
<AttachmentView
isAuthTokenRequired={this.props.isAuthTokenRequired}
sourceURL={sourceURL}
file={this.state.file}
onToggleKeyboard={this.updateConfirmButtonVisibility}
Expand Down
13 changes: 2 additions & 11 deletions src/components/AttachmentView.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,8 @@ import compose from '../libs/compose';
import Text from './Text';
import Tooltip from './Tooltip';
import themeColors from '../styles/themes/default';
import addEncryptedAuthTokenToURL from '../libs/addEncryptedAuthTokenToURL';

const propTypes = {

/** Do the urls require an authToken? */
isAuthTokenRequired: PropTypes.bool,

/** URL to full-sized attachment */
sourceURL: PropTypes.string.isRequired,

Expand All @@ -40,7 +35,6 @@ const propTypes = {
};

const defaultProps = {
isAuthTokenRequired: false,
file: {
name: '',
},
Expand All @@ -54,12 +48,9 @@ const AttachmentView = (props) => {
// will appear with a sourceURL that is a blob
if (Str.isPDF(props.sourceURL)
|| (props.file && Str.isPDF(props.file.name || props.translate('attachmentView.unknownFilename')))) {
const sourceURL = props.isAuthTokenRequired
? addEncryptedAuthTokenToURL(props.sourceURL)
: props.sourceURL;
return (
<PDFView
sourceURL={sourceURL}
sourceURL={props.sourceURL}
style={styles.imageModalPDF}
onToggleKeyboard={props.onToggleKeyboard}
/>
Expand All @@ -70,7 +61,7 @@ const AttachmentView = (props) => {
// both PDFs and images will appear as images when pasted into the the text field
if (Str.isImage(props.sourceURL) || (props.file && Str.isImage(props.file.name))) {
return (
<ImageView url={props.sourceURL} isAuthTokenRequired={props.isAuthTokenRequired} />
<ImageView url={props.sourceURL} />
);
}

Expand Down
5 changes: 2 additions & 3 deletions src/components/Avatar.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, {PureComponent} from 'react';
import {View} from 'react-native';
import {Image, View} from 'react-native';
import PropTypes from 'prop-types';
import _ from 'underscore';
import stylePropTypes from '../styles/stylePropTypes';
Expand All @@ -10,7 +10,6 @@ import * as StyleUtils from '../styles/StyleUtils';
import * as Expensicons from './Icon/Expensicons';
import getAvatarDefaultSource from '../libs/getAvatarDefaultSource';
import styles from '../styles/styles';
import FastImage from './FastImage';

const propTypes = {
/** Source for the avatar. Can be a URL or an icon. */
Expand Down Expand Up @@ -81,7 +80,7 @@ class Avatar extends PureComponent {
</View>
)
: (
<FastImage
<Image
source={{uri: this.props.source}}
defaultSource={getAvatarDefaultSource(this.props.source)}
style={imageStyle}
Expand Down
61 changes: 0 additions & 61 deletions src/components/FastImage/index.js

This file was deleted.

9 changes: 0 additions & 9 deletions src/components/FastImage/index.native.js

This file was deleted.

49 changes: 11 additions & 38 deletions src/components/ImageView/index.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,20 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {
View, Pressable,
View, Image, Pressable,
} from 'react-native';
import {withOnyx} from 'react-native-onyx';
import FastImage from '../FastImage';
import styles from '../../styles/styles';
import * as StyleUtils from '../../styles/StyleUtils';
import canUseTouchScreen from '../../libs/canUseTouchscreen';
import withWindowDimensions, {windowDimensionsPropTypes} from '../withWindowDimensions';
import FullscreenLoadingIndicator from '../FullscreenLoadingIndicator';
import compose from '../../libs/compose';
import ONYXKEYS from '../../ONYXKEYS';
import chatAttachmentTokenHeaders from '../../libs/chatAttachmentTokenHeaders';

const propTypes = {

/** Do the urls require an authToken? */
isAuthTokenRequired: PropTypes.bool,

/** URL to full-sized image */
url: PropTypes.string.isRequired,
...windowDimensionsPropTypes,
};

const defaultProps = {
isAuthTokenRequired: false,
};

class ImageView extends PureComponent {
constructor(props) {
super(props);
Expand All @@ -36,7 +23,6 @@ class ImageView extends PureComponent {
this.onContainerLayoutChanged = this.onContainerLayoutChanged.bind(this);
this.onContainerPressIn = this.onContainerPressIn.bind(this);
this.onContainerPress = this.onContainerPress.bind(this);
this.imageLoad = this.imageLoad.bind(this);
this.imageLoadingStart = this.imageLoadingStart.bind(this);
this.imageLoadingEnd = this.imageLoadingEnd.bind(this);
this.trackMovement = this.trackMovement.bind(this);
Expand All @@ -60,6 +46,9 @@ class ImageView extends PureComponent {
}

componentDidMount() {
Image.getSize(this.props.url, (width, height) => {
this.setImageRegion(width, height);
});
if (this.canUseTouchScreen) {
return;
}
Expand Down Expand Up @@ -218,10 +207,6 @@ class ImageView extends PureComponent {
this.setState(prevState => ({isDragging: prevState.isMouseDown}));
}

imageLoad({nativeEvent}) {
this.setImageRegion(nativeEvent.width, nativeEvent.height);
}

imageLoadingStart() {
this.setState({isLoading: true});
}
Expand All @@ -231,29 +216,24 @@ class ImageView extends PureComponent {
}

render() {
const headers = this.props.isAuthTokenRequired ? chatAttachmentTokenHeaders() : undefined;
if (this.canUseTouchScreen) {
return (
<View
style={[styles.imageViewContainer, styles.overflowHidden]}
onLayout={this.onContainerLayoutChanged}
>
<FastImage
source={{
uri: this.props.url,
headers,
}}
<Image
source={{uri: this.props.url}}
style={this.state.zoomScale === 0 ? undefined : [
styles.w100,
styles.h100,
]} // Hide image until zoomScale calculated to prevent showing preview with wrong dimensions.

// When Image dimensions are lower than the container boundary(zoomscale <= 1), use `contain` to render the image with natural dimensions.
// Both `center` and `contain` keeps the image centered on both x and y axis.
resizeMode={this.state.zoomScale > 1 ? FastImage.resizeMode.center : FastImage.resizeMode.contain}
resizeMode={this.state.zoomScale > 1 ? 'center' : 'contain'}
onLoadStart={this.imageLoadingStart}
onLoadEnd={this.imageLoadingEnd}
onLoad={this.imageLoad}
/>
{this.state.isLoading && (
<FullscreenLoadingIndicator
Expand Down Expand Up @@ -285,19 +265,15 @@ class ImageView extends PureComponent {
onPressIn={this.onContainerPressIn}
onPress={this.onContainerPress}
>
<FastImage
source={{
uri: this.props.url,
headers,
}}
<Image
source={{uri: this.props.url}}
style={this.state.zoomScale === 0 ? undefined : [
styles.h100,
styles.w100,
]} // Hide image until zoomScale calculated to prevent showing preview with wrong dimensions.
resizeMode={FastImage.resizeMode.contain}
resizeMode="contain"
onLoadStart={this.imageLoadingStart}
onLoadEnd={this.imageLoadingEnd}
onLoad={this.imageLoad}
/>
</Pressable>

Expand All @@ -312,7 +288,4 @@ class ImageView extends PureComponent {
}

ImageView.propTypes = propTypes;
ImageView.defaultProps = defaultProps;
export default compose(withWindowDimensions, withOnyx({
session: {key: ONYXKEYS.SESSION},
}))(ImageView);
export default withWindowDimensions(ImageView);
Loading

0 comments on commit 94a90e1

Please sign in to comment.