MM-13083 - Removing refresh button from some pages (#3010)
* MM-13083 - Removing refresh button from some pages * Updating test * Removing unused component * Updating minor changes * Updating failed actions import * Updating post list error screen * Updating connection issue error message * Updating network connection messages * Updating terms of service page * Updating test * Updating animations and FailedNetwork component * Reverting some changes * Updating channel post list * Updating requestsed changes * Updating code changes * Removing error description
This commit is contained in:
parent
90ac092443
commit
06f3511222
12 changed files with 214 additions and 197 deletions
|
|
@ -15,7 +15,7 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
]
|
||||
}
|
||||
>
|
||||
<View
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -29,12 +29,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -42,8 +45,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -57,12 +60,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -70,8 +76,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -85,12 +91,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -98,8 +107,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -113,12 +122,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -126,8 +138,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -141,12 +153,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -154,8 +169,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -169,12 +184,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -182,8 +200,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -197,12 +215,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -210,8 +231,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -225,12 +246,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -238,8 +262,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -253,12 +277,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -266,8 +293,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -281,12 +308,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -294,8 +324,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -309,12 +339,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -322,8 +355,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -337,12 +370,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -350,8 +386,8 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
</AnimatedComponent>
|
||||
<AnimatedComponent
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
|
@ -365,12 +401,15 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
Object {
|
||||
"backgroundColor": "#ffffff",
|
||||
},
|
||||
Object {
|
||||
"opacity": 0.6,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<ImageContent
|
||||
animate="fade"
|
||||
color="rgba(61,60,64,0.2)"
|
||||
color="rgba(61,60,64,0.15)"
|
||||
firstLineWidth="80%"
|
||||
hasRadius={true}
|
||||
lineNumber={3}
|
||||
|
|
@ -378,6 +417,6 @@ exports[`ChannelLoader should match snapshot 1`] = `
|
|||
size={32}
|
||||
textSize={14}
|
||||
/>
|
||||
</View>
|
||||
</AnimatedComponent>
|
||||
</View>
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
import React, {PureComponent} from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import {
|
||||
Animated,
|
||||
Easing,
|
||||
View,
|
||||
Dimensions,
|
||||
} from 'react-native';
|
||||
|
|
@ -14,6 +16,8 @@ import EventEmitter from 'mattermost-redux/utils/event_emitter';
|
|||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import {changeOpacity, makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||
|
||||
const {View: AnimatedView} = Animated;
|
||||
|
||||
function calculateMaxRows(height) {
|
||||
return Math.round(height / 100);
|
||||
}
|
||||
|
|
@ -38,6 +42,7 @@ export default class ChannelLoader extends PureComponent {
|
|||
const maxRows = calculateMaxRows(height);
|
||||
|
||||
this.state = {
|
||||
barsOpacity: new Animated.Value(0.6),
|
||||
switch: false,
|
||||
maxRows,
|
||||
};
|
||||
|
|
@ -65,7 +70,38 @@ export default class ChannelLoader extends PureComponent {
|
|||
EventEmitter.off('switch_channel', this.handleChannelSwitch);
|
||||
}
|
||||
|
||||
componentDidUpdate() {
|
||||
startLoadingAnimation = () => {
|
||||
Animated.loop(
|
||||
Animated.sequence([
|
||||
Animated.timing(this.state.barsOpacity, {
|
||||
toValue: 1,
|
||||
duration: 750,
|
||||
easing: Easing.quad,
|
||||
useNativeDriver: true,
|
||||
}),
|
||||
Animated.timing(this.state.barsOpacity, {
|
||||
toValue: 0.6,
|
||||
duration: 750,
|
||||
easing: Easing.quad,
|
||||
useNativeDriver: true,
|
||||
}),
|
||||
]),
|
||||
).start();
|
||||
};
|
||||
|
||||
stopLoadingAnimation = () => {
|
||||
Animated.timing(
|
||||
this.state.barsOpacity
|
||||
).stop();
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
if (prevProps.channelIsLoading === false && this.props.channelIsLoading === true) {
|
||||
this.startLoadingAnimation();
|
||||
} else if (prevProps.channelIsLoading === true && this.props.channelIsLoading === false) {
|
||||
this.stopLoadingAnimation();
|
||||
}
|
||||
|
||||
if (this.state.switch) {
|
||||
const {
|
||||
handleSelectChannel,
|
||||
|
|
@ -83,9 +119,9 @@ export default class ChannelLoader extends PureComponent {
|
|||
|
||||
buildSections({key, style, bg, color}) {
|
||||
return (
|
||||
<View
|
||||
<AnimatedView
|
||||
key={key}
|
||||
style={[style.section, {backgroundColor: bg}]}
|
||||
style={[style.section, {backgroundColor: bg}, {opacity: this.state.barsOpacity}]}
|
||||
>
|
||||
<ImageContent
|
||||
size={32}
|
||||
|
|
@ -95,9 +131,9 @@ export default class ChannelLoader extends PureComponent {
|
|||
firstLineWidth='80%'
|
||||
hasRadius={true}
|
||||
textSize={14}
|
||||
color={changeOpacity(color, 0.2)}
|
||||
color={changeOpacity(color, 0.15)}
|
||||
/>
|
||||
</View>
|
||||
</AnimatedView>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import React, {PureComponent} from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import {TouchableOpacity, View} from 'react-native';
|
||||
import {View} from 'react-native';
|
||||
|
||||
import FormattedText from 'app/components/formatted_text';
|
||||
import {changeOpacity, makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||
|
|
@ -13,27 +13,30 @@ import Cloud from './cloud';
|
|||
|
||||
export default class FailedNetworkAction extends PureComponent {
|
||||
static propTypes = {
|
||||
onRetry: PropTypes.func,
|
||||
action: PropTypes.func,
|
||||
actionId: PropTypes.string,
|
||||
actionDefaultMessage: PropTypes.string,
|
||||
errorId: PropTypes.string,
|
||||
errorDefaultMessage: PropTypes.string,
|
||||
theme: PropTypes.object.isRequired,
|
||||
errorTitle: PropTypes.object,
|
||||
errorDescription: PropTypes.object,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
errorTitle: {
|
||||
id: t('mobile.failed_network_action.title'),
|
||||
defaultMessage: 'No internet connection',
|
||||
},
|
||||
errorDescription: {
|
||||
id: t('mobile.failed_network_action.description'),
|
||||
defaultMessage: 'There seems to be a problem with your internet connection. Make sure you have an active connection and try again.',
|
||||
},
|
||||
actionId: t('mobile.failed_network_action.retry'),
|
||||
actionDefaultMessage: 'try again',
|
||||
errorId: t('mobile.failed_network_action.shortDescription'),
|
||||
errorDefaultMessage: 'Messages will load when you have an internet connection or {refresh}.',
|
||||
};
|
||||
|
||||
render() {
|
||||
const {theme, onRetry} = this.props;
|
||||
const {action, actionId, actionDefaultMessage, errorId, errorDefaultMessage, theme} = this.props;
|
||||
const style = getStyleFromTheme(theme);
|
||||
|
||||
const errorTitle = {
|
||||
id: t('mobile.failed_network_action.title'),
|
||||
defaultMessage: 'No internet connection',
|
||||
};
|
||||
|
||||
return (
|
||||
<View style={style.container}>
|
||||
<Cloud
|
||||
|
|
@ -42,27 +45,25 @@ export default class FailedNetworkAction extends PureComponent {
|
|||
width={76}
|
||||
/>
|
||||
<FormattedText
|
||||
id={this.props.errorTitle.id}
|
||||
defaultMessage={this.props.errorTitle.defaultMessage}
|
||||
id={errorTitle.id}
|
||||
defaultMessage={errorTitle.defaultMessage}
|
||||
style={style.title}
|
||||
/>
|
||||
<FormattedText
|
||||
id={this.props.errorDescription.id}
|
||||
defaultMessage={this.props.errorDescription.message}
|
||||
id={errorId}
|
||||
defaultMessage={errorDefaultMessage}
|
||||
style={style.description}
|
||||
values={{
|
||||
refresh: (
|
||||
<FormattedText
|
||||
id={actionId}
|
||||
defaultMessage={actionDefaultMessage}
|
||||
style={style.link}
|
||||
onPress={action}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
{onRetry &&
|
||||
<TouchableOpacity
|
||||
onPress={onRetry}
|
||||
style={style.retryContainer}
|
||||
>
|
||||
<FormattedText
|
||||
id='mobile.failed_network_action.retry'
|
||||
defaultMessage='Try Again'
|
||||
style={style.retry}
|
||||
/>
|
||||
</TouchableOpacity>
|
||||
}
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
|
@ -75,25 +76,23 @@ const getStyleFromTheme = makeStyleSheetFromTheme((theme) => {
|
|||
flex: 1,
|
||||
justifyContent: 'center',
|
||||
paddingHorizontal: 15,
|
||||
paddingBottom: 100,
|
||||
},
|
||||
title: {
|
||||
color: changeOpacity(theme.centerChannelColor, 0.8),
|
||||
fontSize: 20,
|
||||
fontWeight: '600',
|
||||
marginBottom: 15,
|
||||
marginTop: 10,
|
||||
},
|
||||
description: {
|
||||
color: changeOpacity(theme.centerChannelColor, 0.4),
|
||||
fontSize: 17,
|
||||
lineHeight: 25,
|
||||
textAlign: 'center',
|
||||
},
|
||||
retryContainer: {
|
||||
marginTop: 30,
|
||||
},
|
||||
retry: {
|
||||
color: changeOpacity(theme.centerChannelColor, 0.7),
|
||||
fontSize: 16,
|
||||
fontWeight: '600',
|
||||
link: {
|
||||
color: theme.linkColor,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
|
|||
|
|
@ -257,12 +257,21 @@ export default class ChannelBase extends PureComponent {
|
|||
|
||||
if (!currentChannelId) {
|
||||
if (channelsRequestFailed) {
|
||||
const PostListRetry = require('app/components/post_list_retry').default;
|
||||
const FailedNetworkAction = require('app/components/failed_network_action').default;
|
||||
|
||||
return (
|
||||
<PostListRetry
|
||||
retry={this.retryLoadChannels}
|
||||
theme={theme}
|
||||
/>
|
||||
<SafeAreaView>
|
||||
<View style={style.flex}>
|
||||
<EmptyToolbar
|
||||
theme={theme}
|
||||
isLandscape={isLandscape}
|
||||
/>
|
||||
<FailedNetworkAction
|
||||
onRetry={this.retryLoadChannels}
|
||||
theme={theme}
|
||||
/>
|
||||
</View>
|
||||
</SafeAreaView>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ import EventEmitter from 'mattermost-redux/utils/event_emitter';
|
|||
|
||||
import AnnouncementBanner from 'app/components/announcement_banner';
|
||||
import PostList from 'app/components/post_list';
|
||||
import PostListRetry from 'app/components/post_list_retry';
|
||||
import RetryBarIndicator from 'app/components/retry_bar_indicator';
|
||||
import {ViewTypes} from 'app/constants';
|
||||
import tracker from 'app/utils/time_tracker';
|
||||
|
|
@ -188,9 +187,11 @@ export default class ChannelPostList extends PureComponent {
|
|||
let component;
|
||||
|
||||
if (visiblePostIds.length === 0 && channelRefreshingFailed) {
|
||||
const FailedNetworkAction = require('app/components/failed_network_action').default;
|
||||
|
||||
component = (
|
||||
<PostListRetry
|
||||
retry={this.loadPostsRetry}
|
||||
<FailedNetworkAction
|
||||
onRetry={this.loadPostsRetry}
|
||||
theme={theme}
|
||||
/>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -11,18 +11,10 @@ exports[`ErrorTeamsList should match snapshot 1`] = `
|
|||
>
|
||||
<Connect(StatusBar) />
|
||||
<FailedNetworkAction
|
||||
errorDescription={
|
||||
Object {
|
||||
"defaultMessage": "Make sure you have an active connection and try again.",
|
||||
"id": "mobile.failed_network_action.shortDescription",
|
||||
}
|
||||
}
|
||||
errorTitle={
|
||||
Object {
|
||||
"defaultMessage": "Team Not Found",
|
||||
"id": "error.team_not_found.title",
|
||||
}
|
||||
}
|
||||
actionDefaultMessage="try again"
|
||||
actionId="mobile.failed_network_action.retry"
|
||||
errorDefaultMessage="Messages will load when you have an internet connection or {refresh}."
|
||||
errorId="mobile.failed_network_action.shortDescription"
|
||||
onRetry={[Function]}
|
||||
theme={
|
||||
Object {
|
||||
|
|
|
|||
|
|
@ -13,17 +13,6 @@ import FailedNetworkAction from 'app/components/failed_network_action';
|
|||
import Loading from 'app/components/loading';
|
||||
import StatusBar from 'app/components/status_bar';
|
||||
import {makeStyleSheetFromTheme, setNavigatorStyles} from 'app/utils/theme';
|
||||
import {t} from 'app/utils/i18n';
|
||||
|
||||
const errorTitle = {
|
||||
id: t('error.team_not_found.title'),
|
||||
defaultMessage: 'Team Not Found',
|
||||
};
|
||||
|
||||
const errorDescription = {
|
||||
id: t('mobile.failed_network_action.shortDescription'),
|
||||
defaultMessage: 'Make sure you have an active connection and try again.',
|
||||
};
|
||||
|
||||
export default class ErrorTeamsList extends PureComponent {
|
||||
static propTypes = {
|
||||
|
|
@ -86,27 +75,25 @@ export default class ErrorTeamsList extends PureComponent {
|
|||
|
||||
render() {
|
||||
const {theme} = this.props;
|
||||
const styles = getStyleSheet(theme);
|
||||
const style = getStyleFromTheme(theme);
|
||||
|
||||
if (this.state.loading) {
|
||||
return <Loading/>;
|
||||
}
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<View style={style.container}>
|
||||
<StatusBar/>
|
||||
<FailedNetworkAction
|
||||
onRetry={this.getUserInfo}
|
||||
theme={theme}
|
||||
errorTitle={errorTitle}
|
||||
errorDescription={errorDescription}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const getStyleSheet = makeStyleSheetFromTheme((theme) => {
|
||||
const getStyleFromTheme = makeStyleSheetFromTheme((theme) => {
|
||||
return {
|
||||
container: {
|
||||
backgroundColor: theme.centerChannelBg,
|
||||
|
|
|
|||
|
|
@ -2,18 +2,10 @@
|
|||
|
||||
exports[`SelectTeam should match snapshot for fail of teams 1`] = `
|
||||
<FailedNetworkAction
|
||||
errorDescription={
|
||||
Object {
|
||||
"defaultMessage": "Make sure you have an active connection and try again.",
|
||||
"id": "mobile.failed_network_action.shortDescription",
|
||||
}
|
||||
}
|
||||
errorTitle={
|
||||
Object {
|
||||
"defaultMessage": "Team Not Found",
|
||||
"id": "error.team_not_found.title",
|
||||
}
|
||||
}
|
||||
actionDefaultMessage="try again"
|
||||
actionId="mobile.failed_network_action.retry"
|
||||
errorDefaultMessage="Messages will load when you have an internet connection or {refresh}."
|
||||
errorId="mobile.failed_network_action.shortDescription"
|
||||
onRetry={[Function]}
|
||||
theme={
|
||||
Object {
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ import {Navigation} from 'react-native-navigation';
|
|||
import {RequestStatus} from 'mattermost-redux/constants';
|
||||
import EventEmitter from 'mattermost-redux/utils/event_emitter';
|
||||
|
||||
import FailedNetworkAction from 'app/components/failed_network_action';
|
||||
import FormattedText from 'app/components/formatted_text';
|
||||
import Loading from 'app/components/loading';
|
||||
import StatusBar from 'app/components/status_bar';
|
||||
|
|
@ -28,16 +27,6 @@ import TeamIcon from 'app/components/team_icon';
|
|||
|
||||
const TEAMS_PER_PAGE = 50;
|
||||
|
||||
const errorTitle = {
|
||||
id: t('error.team_not_found.title'),
|
||||
defaultMessage: 'Team Not Found',
|
||||
};
|
||||
|
||||
const errorDescription = {
|
||||
id: t('mobile.failed_network_action.shortDescription'),
|
||||
defaultMessage: 'Make sure you have an active connection and try again.',
|
||||
};
|
||||
|
||||
export default class SelectTeam extends PureComponent {
|
||||
static propTypes = {
|
||||
actions: PropTypes.shape({
|
||||
|
|
@ -172,16 +161,16 @@ export default class SelectTeam extends PureComponent {
|
|||
|
||||
renderItem = ({item}) => {
|
||||
const {currentUrl, theme} = this.props;
|
||||
const styles = getStyleSheet(theme);
|
||||
const style = getStyleFromTheme(theme);
|
||||
|
||||
if (item.id === 'mobile.select_team.no_teams') {
|
||||
return (
|
||||
<View style={styles.teamWrapper}>
|
||||
<View style={styles.teamContainer}>
|
||||
<View style={style.teamWrapper}>
|
||||
<View style={style.teamContainer}>
|
||||
<FormattedText
|
||||
id={item.id}
|
||||
defaultMessage={item.defaultMessage}
|
||||
style={styles.noTeam}
|
||||
style={style.noTeam}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
|
|
@ -189,29 +178,29 @@ export default class SelectTeam extends PureComponent {
|
|||
}
|
||||
|
||||
return (
|
||||
<View style={styles.teamWrapper}>
|
||||
<View style={style.teamWrapper}>
|
||||
<TouchableOpacity
|
||||
onPress={preventDoubleTap(() => this.onSelectTeam(item))}
|
||||
>
|
||||
<View style={styles.teamContainer}>
|
||||
<View style={style.teamContainer}>
|
||||
<TeamIcon
|
||||
teamId={item.id}
|
||||
styleContainer={styles.teamIconContainer}
|
||||
styleText={styles.teamIconText}
|
||||
styleImage={styles.imageContainer}
|
||||
styleContainer={style.teamIconContainer}
|
||||
styleText={style.teamIconText}
|
||||
styleImage={style.imageContainer}
|
||||
/>
|
||||
<View style={styles.teamNameContainer}>
|
||||
<View style={style.teamNameContainer}>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
ellipsizeMode='tail'
|
||||
style={styles.teamName}
|
||||
style={style.teamName}
|
||||
>
|
||||
{item.display_name}
|
||||
</Text>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
ellipsizeMode='tail'
|
||||
style={styles.teamUrl}
|
||||
style={style.teamUrl}
|
||||
>
|
||||
{`${currentUrl}/${item.name}`}
|
||||
</Text>
|
||||
|
|
@ -225,32 +214,32 @@ export default class SelectTeam extends PureComponent {
|
|||
render() {
|
||||
const {theme} = this.props;
|
||||
const {teams} = this.state;
|
||||
const styles = getStyleSheet(theme);
|
||||
const style = getStyleFromTheme(theme);
|
||||
|
||||
if (this.state.joining) {
|
||||
return <Loading/>;
|
||||
}
|
||||
|
||||
if (this.props.teamsRequest.status === RequestStatus.FAILURE) {
|
||||
const FailedNetworkAction = require('app/components/failed_network_action').default;
|
||||
|
||||
return (
|
||||
<FailedNetworkAction
|
||||
onRetry={this.getTeams}
|
||||
theme={theme}
|
||||
errorTitle={errorTitle}
|
||||
errorDescription={errorDescription}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
if (this.props.currentUserIsGuest) {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<View style={style.container}>
|
||||
<StatusBar/>
|
||||
<View style={styles.headingContainer}>
|
||||
<View style={style.headingContainer}>
|
||||
<FormattedText
|
||||
id='mobile.select_team.guest_cant_join_team'
|
||||
defaultMessage='Your guest account has no teams or channels assigned. Please contact an administrator.'
|
||||
style={styles.heading}
|
||||
style={style.heading}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
|
|
@ -258,17 +247,17 @@ export default class SelectTeam extends PureComponent {
|
|||
}
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<View style={style.container}>
|
||||
<StatusBar/>
|
||||
<View style={styles.headingContainer}>
|
||||
<View style={styles.headingWrapper}>
|
||||
<View style={style.headingContainer}>
|
||||
<View style={style.headingWrapper}>
|
||||
<FormattedText
|
||||
id='mobile.select_team.join_open'
|
||||
defaultMessage='Open teams you can join'
|
||||
style={styles.heading}
|
||||
style={style.heading}
|
||||
/>
|
||||
</View>
|
||||
<View style={styles.line}/>
|
||||
<View style={style.line}/>
|
||||
</View>
|
||||
<CustomList
|
||||
data={teams}
|
||||
|
|
@ -287,7 +276,7 @@ export default class SelectTeam extends PureComponent {
|
|||
}
|
||||
}
|
||||
|
||||
const getStyleSheet = makeStyleSheetFromTheme((theme) => {
|
||||
const getStyleFromTheme = makeStyleSheetFromTheme((theme) => {
|
||||
return {
|
||||
container: {
|
||||
backgroundColor: theme.centerChannelBg,
|
||||
|
|
|
|||
|
|
@ -289,18 +289,10 @@ exports[`TermsOfService should match snapshot for fail of get terms 1`] = `
|
|||
>
|
||||
<Connect(StatusBar) />
|
||||
<FailedNetworkAction
|
||||
errorDescription={
|
||||
Object {
|
||||
"defaultMessage": "Make sure you have an active internet connection and try again. If this issue persists, contact your System Administrator.",
|
||||
"id": "mobile.terms_of_service.get_terms_error_description",
|
||||
}
|
||||
}
|
||||
errorTitle={
|
||||
Object {
|
||||
"defaultMessage": "Unable to load terms of service.",
|
||||
"id": "mobile.terms_of_service.get_terms_error_title",
|
||||
}
|
||||
}
|
||||
actionDefaultMessage="try again"
|
||||
actionId="mobile.failed_network_action.retry"
|
||||
errorDefaultMessage="Messages will load when you have an internet connection or {refresh}."
|
||||
errorId="mobile.failed_network_action.shortDescription"
|
||||
onRetry={[Function]}
|
||||
theme={
|
||||
Object {
|
||||
|
|
|
|||
|
|
@ -16,20 +16,9 @@ import Loading from 'app/components/loading';
|
|||
import Markdown from 'app/components/markdown';
|
||||
import StatusBar from 'app/components/status_bar';
|
||||
|
||||
import {t} from 'app/utils/i18n';
|
||||
import {getMarkdownTextStyles, getMarkdownBlockStyles} from 'app/utils/markdown';
|
||||
import {makeStyleSheetFromTheme, setNavigatorStyles} from 'app/utils/theme';
|
||||
|
||||
const errorTitle = {
|
||||
id: t('mobile.terms_of_service.get_terms_error_title'),
|
||||
defaultMessage: 'Unable to load terms of service.',
|
||||
};
|
||||
|
||||
const errorDescription = {
|
||||
id: t('mobile.terms_of_service.get_terms_error_description'),
|
||||
defaultMessage: 'Make sure you have an active internet connection and try again. If this issue persists, contact your System Administrator.',
|
||||
};
|
||||
|
||||
export default class TermsOfService extends PureComponent {
|
||||
static propTypes = {
|
||||
actions: PropTypes.shape({
|
||||
|
|
@ -252,8 +241,6 @@ export default class TermsOfService extends PureComponent {
|
|||
<FailedNetworkAction
|
||||
onRetry={this.getTerms}
|
||||
theme={theme}
|
||||
errorTitle={errorTitle}
|
||||
errorDescription={errorDescription}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
|
|
@ -292,9 +279,6 @@ const getStyleSheet = makeStyleSheetFromTheme((theme) => {
|
|||
backgroundColor: theme.centerChannelBg,
|
||||
flex: 1,
|
||||
},
|
||||
linkText: {
|
||||
color: theme.linkColor,
|
||||
},
|
||||
scrollView: {
|
||||
flex: 1,
|
||||
backgroundColor: theme.centerChannelBg,
|
||||
|
|
|
|||
|
|
@ -76,7 +76,6 @@
|
|||
"create_post.write": "Write to {channelDisplayName}",
|
||||
"edit_post.editPost": "Edit the post...",
|
||||
"edit_post.save": "Save",
|
||||
"error.team_not_found.title": "Team Not Found",
|
||||
"file_attachment.download": "Download",
|
||||
"file_upload.fileAbove": "File above {max}MB cannot be uploaded: {filename}",
|
||||
"get_post_link_modal.title": "Copy Permalink",
|
||||
|
|
@ -247,9 +246,8 @@
|
|||
"mobile.extension.max_file_size": "File attachments shared in Mattermost must be less than {size}.",
|
||||
"mobile.extension.permission": "Mattermost needs access to the device storage to share files.",
|
||||
"mobile.extension.title": "Share in Mattermost",
|
||||
"mobile.failed_network_action.description": "There seems to be a problem with your internet connection. Make sure you have an active connection and try again.",
|
||||
"mobile.failed_network_action.retry": "Try Again",
|
||||
"mobile.failed_network_action.shortDescription": "Make sure you have an active connection and try again.",
|
||||
"mobile.failed_network_action.retry": "try again",
|
||||
"mobile.failed_network_action.shortDescription": "Messages will load when you have an internet connection or {refresh}.",
|
||||
"mobile.failed_network_action.title": "No internet connection",
|
||||
"mobile.file_upload.browse": "Browse Files",
|
||||
"mobile.file_upload.camera_photo": "Take Photo",
|
||||
|
|
@ -441,8 +439,7 @@
|
|||
"mobile.terms_of_service.alert_cancel": "Cancel",
|
||||
"mobile.terms_of_service.alert_ok": "OK",
|
||||
"mobile.terms_of_service.alert_retry": "Try Again",
|
||||
"mobile.terms_of_service.get_terms_error_description": "Make sure you have an active internet connection and try again. If this issue persists, contact your System Administrator.",
|
||||
"mobile.terms_of_service.get_terms_error_title": "Unable to load terms of service.",
|
||||
"mobile.terms_of_service.get_terms_error_description": "Make sure you have an internet connection or {refresh}. If this issue persists, contact your System Administrator.",
|
||||
"mobile.terms_of_service.terms_rejected": "You must agree to the terms of service before accessing {siteName}. Please contact your System Administrator for more details.",
|
||||
"mobile.timezone_settings.automatically": "Set automatically",
|
||||
"mobile.timezone_settings.manual": "Change timezone",
|
||||
|
|
|
|||
Loading…
Reference in a new issue