[NEW] Confirm logout/clear cache (#1688)
This commit is contained in:
parent
b90cf9e486
commit
28b5821dae
|
@ -14,6 +14,7 @@ import Navigation from '../lib/Navigation';
|
||||||
import { getMessageTranslation } from './message/utils';
|
import { getMessageTranslation } from './message/utils';
|
||||||
import { LISTENER } from './Toast';
|
import { LISTENER } from './Toast';
|
||||||
import EventEmitter from '../utils/events';
|
import EventEmitter from '../utils/events';
|
||||||
|
import { showConfirmationAlert } from '../utils/info';
|
||||||
|
|
||||||
class MessageActions extends React.Component {
|
class MessageActions extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
|
@ -223,29 +224,18 @@ class MessageActions extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
handleDelete = () => {
|
handleDelete = () => {
|
||||||
const { message } = this.props;
|
showConfirmationAlert({
|
||||||
Alert.alert(
|
message: I18n.t('You_will_not_be_able_to_recover_this_message'),
|
||||||
I18n.t('Are_you_sure_question_mark'),
|
callToAction: I18n.t('Delete'),
|
||||||
I18n.t('You_will_not_be_able_to_recover_this_message'),
|
|
||||||
[
|
|
||||||
{
|
|
||||||
text: I18n.t('Cancel'),
|
|
||||||
style: 'cancel'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: I18n.t('Yes_action_it', { action: 'delete' }),
|
|
||||||
style: 'destructive',
|
|
||||||
onPress: async() => {
|
onPress: async() => {
|
||||||
|
const { message } = this.props;
|
||||||
try {
|
try {
|
||||||
await RocketChat.deleteMessage(message.id, message.subscription.id);
|
await RocketChat.deleteMessage(message.id, message.subscription.id);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log(e);
|
log(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
],
|
|
||||||
{ cancelable: false }
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
handleEdit = () => {
|
handleEdit = () => {
|
||||||
|
|
|
@ -491,5 +491,8 @@ export default {
|
||||||
Server_selection: 'Server selection',
|
Server_selection: 'Server selection',
|
||||||
Server_selection_numbers: 'Server selection 1...9',
|
Server_selection_numbers: 'Server selection 1...9',
|
||||||
Add_server: 'Add server',
|
Add_server: 'Add server',
|
||||||
New_line: 'New line'
|
New_line: 'New line',
|
||||||
|
You_will_be_logged_out_of_this_application: 'You will be logged out of this application.',
|
||||||
|
Clear: 'Clear',
|
||||||
|
This_will_clear_all_your_offline_data: 'This will clear all your offline data.'
|
||||||
};
|
};
|
||||||
|
|
|
@ -440,5 +440,8 @@ export default {
|
||||||
Server_selection: 'Seleção de servidor',
|
Server_selection: 'Seleção de servidor',
|
||||||
Server_selection_numbers: 'Selecionar servidor 1...9',
|
Server_selection_numbers: 'Selecionar servidor 1...9',
|
||||||
Add_server: 'Adicionar servidor',
|
Add_server: 'Adicionar servidor',
|
||||||
New_line: 'Nova linha'
|
New_line: 'Nova linha',
|
||||||
|
You_will_be_logged_out_of_this_application: 'Você sairá deste aplicativo.',
|
||||||
|
Clear: 'Limpar',
|
||||||
|
This_will_clear_all_your_offline_data: 'Isto limpará todos os seus dados offline.'
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,23 @@
|
||||||
import { Alert } from 'react-native';
|
import { Alert } from 'react-native';
|
||||||
|
import I18n from '../i18n';
|
||||||
|
|
||||||
export const showErrorAlert = (message, title, onPress = () => {}) => Alert.alert(title, message, [{ text: 'OK', onPress }], { cancelable: true });
|
export const showErrorAlert = (message, title, onPress = () => {}) => Alert.alert(title, message, [{ text: 'OK', onPress }], { cancelable: true });
|
||||||
|
|
||||||
|
export const showConfirmationAlert = ({ message, callToAction, onPress }) => (
|
||||||
|
Alert.alert(
|
||||||
|
I18n.t('Are_you_sure_question_mark'),
|
||||||
|
message,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
text: I18n.t('Cancel'),
|
||||||
|
style: 'cancel'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: callToAction,
|
||||||
|
style: 'destructive',
|
||||||
|
onPress
|
||||||
|
}
|
||||||
|
],
|
||||||
|
{ cancelable: false }
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
|
@ -22,7 +22,7 @@ import {
|
||||||
} from '../../utils/deviceInfo';
|
} from '../../utils/deviceInfo';
|
||||||
import openLink from '../../utils/openLink';
|
import openLink from '../../utils/openLink';
|
||||||
import scrollPersistTaps from '../../utils/scrollPersistTaps';
|
import scrollPersistTaps from '../../utils/scrollPersistTaps';
|
||||||
import { showErrorAlert } from '../../utils/info';
|
import { showErrorAlert, showConfirmationAlert } from '../../utils/info';
|
||||||
import styles from './styles';
|
import styles from './styles';
|
||||||
import sharedStyles from '../Styles';
|
import sharedStyles from '../Styles';
|
||||||
import { loggerConfig, analytics } from '../../utils/log';
|
import { loggerConfig, analytics } from '../../utils/log';
|
||||||
|
@ -88,15 +88,25 @@ class SettingsView extends React.Component {
|
||||||
appStart: PropTypes.func
|
appStart: PropTypes.func
|
||||||
}
|
}
|
||||||
|
|
||||||
logout = () => {
|
handleLogout = () => {
|
||||||
|
showConfirmationAlert({
|
||||||
|
message: I18n.t('You_will_be_logged_out_of_this_application'),
|
||||||
|
callToAction: I18n.t('Logout'),
|
||||||
|
onPress: () => {
|
||||||
const { logout, split } = this.props;
|
const { logout, split } = this.props;
|
||||||
if (split) {
|
if (split) {
|
||||||
Navigation.navigate('RoomView');
|
Navigation.navigate('RoomView');
|
||||||
}
|
}
|
||||||
logout();
|
logout();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
clearCache = async() => {
|
handleClearCache = () => {
|
||||||
|
showConfirmationAlert({
|
||||||
|
message: I18n.t('This_will_clear_all_your_offline_data'),
|
||||||
|
callToAction: I18n.t('Clear'),
|
||||||
|
onPress: async() => {
|
||||||
const {
|
const {
|
||||||
server: { server }, loginRequest, token, appStart
|
server: { server }, loginRequest, token, appStart
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
@ -104,6 +114,8 @@ class SettingsView extends React.Component {
|
||||||
await RocketChat.clearCache({ server });
|
await RocketChat.clearCache({ server });
|
||||||
await loginRequest({ resume: token }, true);
|
await loginRequest({ resume: token }, true);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
toggleMarkdown = (value) => {
|
toggleMarkdown = (value) => {
|
||||||
AsyncStorage.setItem(MARKDOWN_KEY, JSON.stringify(value));
|
AsyncStorage.setItem(MARKDOWN_KEY, JSON.stringify(value));
|
||||||
|
@ -329,7 +341,7 @@ class SettingsView extends React.Component {
|
||||||
<ListItem
|
<ListItem
|
||||||
title={I18n.t('Clear_cache')}
|
title={I18n.t('Clear_cache')}
|
||||||
testID='settings-clear-cache'
|
testID='settings-clear-cache'
|
||||||
onPress={this.clearCache}
|
onPress={this.handleClearCache}
|
||||||
right={this.renderDisclosure}
|
right={this.renderDisclosure}
|
||||||
color={themes[theme].dangerColor}
|
color={themes[theme].dangerColor}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
|
@ -338,7 +350,7 @@ class SettingsView extends React.Component {
|
||||||
<ListItem
|
<ListItem
|
||||||
title={I18n.t('Logout')}
|
title={I18n.t('Logout')}
|
||||||
testID='settings-logout'
|
testID='settings-logout'
|
||||||
onPress={this.logout}
|
onPress={this.handleLogout}
|
||||||
right={this.renderDisclosure}
|
right={this.renderDisclosure}
|
||||||
color={themes[theme].dangerColor}
|
color={themes[theme].dangerColor}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
|
|
Loading…
Reference in New Issue