Chore: Migrate ReadReceiptView to Typescript
* Chore: Migrate ReadReceiptView to Typescript * feat: minor tweak * refactor: minor tweak Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
This commit is contained in:
parent
8e4d47cf7b
commit
a54d568f2f
|
@ -1,9 +1,10 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import { FlatList, Text, View, RefreshControl } from 'react-native';
|
import { FlatList, Text, View, RefreshControl } from 'react-native';
|
||||||
import { dequal } from 'dequal';
|
import { dequal } from 'dequal';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
import { StackNavigationOptions, StackNavigationProp } from '@react-navigation/stack';
|
||||||
|
import { RouteProp } from '@react-navigation/core';
|
||||||
|
|
||||||
import * as List from '../../containers/List';
|
import * as List from '../../containers/List';
|
||||||
import Avatar from '../../containers/Avatar';
|
import Avatar from '../../containers/Avatar';
|
||||||
|
@ -16,9 +17,40 @@ import { themes } from '../../constants/colors';
|
||||||
import SafeAreaView from '../../containers/SafeAreaView';
|
import SafeAreaView from '../../containers/SafeAreaView';
|
||||||
import styles from './styles';
|
import styles from './styles';
|
||||||
|
|
||||||
class ReadReceiptView extends React.Component {
|
interface IReceipts {
|
||||||
static navigationOptions = ({ navigation, isMasterDetail }) => {
|
_id: string;
|
||||||
const options = {
|
roomId: string;
|
||||||
|
userId: string;
|
||||||
|
messageId: string;
|
||||||
|
ts: string;
|
||||||
|
user?: {
|
||||||
|
_id: string;
|
||||||
|
name: string;
|
||||||
|
username: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IReadReceiptViewState {
|
||||||
|
loading: boolean;
|
||||||
|
receipts: IReceipts[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface INavigationOption {
|
||||||
|
navigation: StackNavigationProp<any, 'ReadReceiptView'>;
|
||||||
|
route: RouteProp<{ ReadReceiptView: { messageId: string } }, 'ReadReceiptView'>;
|
||||||
|
isMasterDetail: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IReadReceiptViewProps extends INavigationOption {
|
||||||
|
Message_TimeAndDateFormat: string;
|
||||||
|
theme: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ReadReceiptView extends React.Component<IReadReceiptViewProps, IReadReceiptViewState> {
|
||||||
|
private messageId: string;
|
||||||
|
|
||||||
|
static navigationOptions = ({ navigation, isMasterDetail }: INavigationOption) => {
|
||||||
|
const options: StackNavigationOptions = {
|
||||||
title: I18n.t('Read_Receipt')
|
title: I18n.t('Read_Receipt')
|
||||||
};
|
};
|
||||||
if (isMasterDetail) {
|
if (isMasterDetail) {
|
||||||
|
@ -27,13 +59,7 @@ class ReadReceiptView extends React.Component {
|
||||||
return options;
|
return options;
|
||||||
};
|
};
|
||||||
|
|
||||||
static propTypes = {
|
constructor(props: IReadReceiptViewProps) {
|
||||||
route: PropTypes.object,
|
|
||||||
Message_TimeAndDateFormat: PropTypes.string,
|
|
||||||
theme: PropTypes.string
|
|
||||||
};
|
|
||||||
|
|
||||||
constructor(props) {
|
|
||||||
super(props);
|
super(props);
|
||||||
this.messageId = props.route.params?.messageId;
|
this.messageId = props.route.params?.messageId;
|
||||||
this.state = {
|
this.state = {
|
||||||
|
@ -46,7 +72,7 @@ class ReadReceiptView extends React.Component {
|
||||||
this.load();
|
this.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldComponentUpdate(nextProps, nextState) {
|
shouldComponentUpdate(nextProps: IReadReceiptViewProps, nextState: IReadReceiptViewState) {
|
||||||
const { loading, receipts } = this.state;
|
const { loading, receipts } = this.state;
|
||||||
const { theme } = this.props;
|
const { theme } = this.props;
|
||||||
if (nextProps.theme !== theme) {
|
if (nextProps.theme !== theme) {
|
||||||
|
@ -98,7 +124,7 @@ class ReadReceiptView extends React.Component {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
renderItem = ({ item }) => {
|
renderItem = ({ item }: { item: IReceipts }) => {
|
||||||
const { theme, Message_TimeAndDateFormat } = this.props;
|
const { theme, Message_TimeAndDateFormat } = this.props;
|
||||||
const time = moment(item.ts).format(Message_TimeAndDateFormat);
|
const time = moment(item.ts).format(Message_TimeAndDateFormat);
|
||||||
if (!item?.user?.username) {
|
if (!item?.user?.username) {
|
||||||
|
@ -152,7 +178,7 @@ class ReadReceiptView extends React.Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
const mapStateToProps = (state: any) => ({
|
||||||
Message_TimeAndDateFormat: state.settings.Message_TimeAndDateFormat
|
Message_TimeAndDateFormat: state.settings.Message_TimeAndDateFormat
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue