Chore: Migrate SettingsView to TypeScript (#3430)
This commit is contained in:
parent
839645e42c
commit
30a84a9292
|
@ -1,9 +1,9 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Clipboard, Linking, Share } from 'react-native';
|
import { Clipboard, Linking, Share } from 'react-native';
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import FastImage from '@rocket.chat/react-native-fast-image';
|
import FastImage from '@rocket.chat/react-native-fast-image';
|
||||||
import CookieManager from '@react-native-cookies/cookies';
|
import CookieManager from '@react-native-cookies/cookies';
|
||||||
|
import { StackNavigationProp } from '@react-navigation/stack';
|
||||||
|
|
||||||
import { logout as logoutAction } from '../../actions/login';
|
import { logout as logoutAction } from '../../actions/login';
|
||||||
import { selectServerRequest as selectServerRequestAction } from '../../actions/server';
|
import { selectServerRequest as selectServerRequestAction } from '../../actions/server';
|
||||||
|
@ -29,8 +29,25 @@ import database from '../../lib/database';
|
||||||
import { isFDroidBuild } from '../../constants/environment';
|
import { isFDroidBuild } from '../../constants/environment';
|
||||||
import { getUserSelector } from '../../selectors/login';
|
import { getUserSelector } from '../../selectors/login';
|
||||||
|
|
||||||
class SettingsView extends React.Component {
|
interface IProps {
|
||||||
static navigationOptions = ({ navigation, isMasterDetail }) => ({
|
navigation: StackNavigationProp<any, 'SettingsView'>;
|
||||||
|
server: {
|
||||||
|
version: string;
|
||||||
|
server: string;
|
||||||
|
};
|
||||||
|
theme: string;
|
||||||
|
isMasterDetail: boolean;
|
||||||
|
logout: Function;
|
||||||
|
selectServerRequest: Function;
|
||||||
|
user: {
|
||||||
|
roles: [];
|
||||||
|
id: string;
|
||||||
|
};
|
||||||
|
appStart: Function;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SettingsView extends React.Component<IProps, any> {
|
||||||
|
static navigationOptions = ({ navigation, isMasterDetail }: Partial<IProps>) => ({
|
||||||
headerLeft: () =>
|
headerLeft: () =>
|
||||||
isMasterDetail ? (
|
isMasterDetail ? (
|
||||||
<HeaderButton.CloseModal navigation={navigation} testID='settings-view-close' />
|
<HeaderButton.CloseModal navigation={navigation} testID='settings-view-close' />
|
||||||
|
@ -40,26 +57,12 @@ class SettingsView extends React.Component {
|
||||||
title: I18n.t('Settings')
|
title: I18n.t('Settings')
|
||||||
});
|
});
|
||||||
|
|
||||||
static propTypes = {
|
|
||||||
navigation: PropTypes.object,
|
|
||||||
server: PropTypes.object,
|
|
||||||
theme: PropTypes.string,
|
|
||||||
isMasterDetail: PropTypes.bool,
|
|
||||||
logout: PropTypes.func.isRequired,
|
|
||||||
selectServerRequest: PropTypes.func,
|
|
||||||
user: PropTypes.shape({
|
|
||||||
roles: PropTypes.array,
|
|
||||||
id: PropTypes.string
|
|
||||||
}),
|
|
||||||
appStart: PropTypes.func
|
|
||||||
};
|
|
||||||
|
|
||||||
checkCookiesAndLogout = async () => {
|
checkCookiesAndLogout = async () => {
|
||||||
const { logout, user } = this.props;
|
const { logout, user } = this.props;
|
||||||
const db = database.servers;
|
const db = database.servers;
|
||||||
const usersCollection = db.get('users');
|
const usersCollection = db.get('users');
|
||||||
try {
|
try {
|
||||||
const userRecord = await usersCollection.find(user.id);
|
const userRecord: any = await usersCollection.find(user.id);
|
||||||
if (userRecord.isFromWebView) {
|
if (userRecord.isFromWebView) {
|
||||||
showConfirmationAlert({
|
showConfirmationAlert({
|
||||||
title: I18n.t('Clear_cookies_alert'),
|
title: I18n.t('Clear_cookies_alert'),
|
||||||
|
@ -84,6 +87,7 @@ class SettingsView extends React.Component {
|
||||||
|
|
||||||
handleLogout = () => {
|
handleLogout = () => {
|
||||||
logEvent(events.SE_LOG_OUT);
|
logEvent(events.SE_LOG_OUT);
|
||||||
|
// @ts-ignore
|
||||||
showConfirmationAlert({
|
showConfirmationAlert({
|
||||||
message: I18n.t('You_will_be_logged_out_of_this_application'),
|
message: I18n.t('You_will_be_logged_out_of_this_application'),
|
||||||
confirmationText: I18n.t('Logout'),
|
confirmationText: I18n.t('Logout'),
|
||||||
|
@ -93,6 +97,7 @@ class SettingsView extends React.Component {
|
||||||
|
|
||||||
handleClearCache = () => {
|
handleClearCache = () => {
|
||||||
logEvent(events.SE_CLEAR_LOCAL_SERVER_CACHE);
|
logEvent(events.SE_CLEAR_LOCAL_SERVER_CACHE);
|
||||||
|
/* @ts-ignore */
|
||||||
showConfirmationAlert({
|
showConfirmationAlert({
|
||||||
message: I18n.t('This_will_clear_all_your_offline_data'),
|
message: I18n.t('This_will_clear_all_your_offline_data'),
|
||||||
confirmationText: I18n.t('Clear'),
|
confirmationText: I18n.t('Clear'),
|
||||||
|
@ -112,7 +117,8 @@ class SettingsView extends React.Component {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
navigateToScreen = screen => {
|
navigateToScreen = (screen: string) => {
|
||||||
|
/* @ts-ignore */
|
||||||
logEvent(events[`SE_GO_${screen.replace('View', '').toUpperCase()}`]);
|
logEvent(events[`SE_GO_${screen.replace('View', '').toUpperCase()}`]);
|
||||||
const { navigation } = this.props;
|
const { navigation } = this.props;
|
||||||
navigation.navigate(screen);
|
navigation.navigate(screen);
|
||||||
|
@ -160,7 +166,7 @@ class SettingsView extends React.Component {
|
||||||
this.saveToClipboard(getReadableVersion);
|
this.saveToClipboard(getReadableVersion);
|
||||||
};
|
};
|
||||||
|
|
||||||
saveToClipboard = async content => {
|
saveToClipboard = async (content: string) => {
|
||||||
await Clipboard.setString(content);
|
await Clipboard.setString(content);
|
||||||
EventEmitter.emit(LISTENER, { message: I18n.t('Copied_to_clipboard') });
|
EventEmitter.emit(LISTENER, { message: I18n.t('Copied_to_clipboard') });
|
||||||
};
|
};
|
||||||
|
@ -293,16 +299,16 @@ class SettingsView extends React.Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
const mapStateToProps = (state: any) => ({
|
||||||
server: state.server,
|
server: state.server,
|
||||||
user: getUserSelector(state),
|
user: getUserSelector(state),
|
||||||
isMasterDetail: state.app.isMasterDetail
|
isMasterDetail: state.app.isMasterDetail
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapDispatchToProps = dispatch => ({
|
const mapDispatchToProps = (dispatch: any) => ({
|
||||||
logout: () => dispatch(logoutAction()),
|
logout: () => dispatch(logoutAction()),
|
||||||
selectServerRequest: params => dispatch(selectServerRequestAction(params)),
|
selectServerRequest: (params: any) => dispatch(selectServerRequestAction(params)),
|
||||||
appStart: params => dispatch(appStartAction(params))
|
appStart: (params: any) => dispatch(appStartAction(params))
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(withTheme(SettingsView));
|
export default connect(mapStateToProps, mapDispatchToProps)(withTheme(SettingsView));
|
Loading…
Reference in New Issue