From 20d7b6a051ca4cdf77ef8a8539412afec3f50f89 Mon Sep 17 00:00:00 2001 From: Alex Junior Date: Sun, 1 Aug 2021 23:33:36 -0300 Subject: [PATCH] [IMPROVE] - creating an Message type file --- app/containers/message/Attachments.tsx | 12 +-- app/containers/message/Blocks.ts | 10 +-- app/containers/message/Broadcast.tsx | 11 +-- app/containers/message/CallButton.tsx | 8 +- app/containers/message/Content.tsx | 22 +---- app/containers/message/Discussion.tsx | 9 +- app/containers/message/Message.tsx | 41 +++------ app/containers/message/MessageAvatar.tsx | 17 +--- app/containers/message/RepliedThread.tsx | 12 +-- app/containers/message/Thread.tsx | 12 +-- app/containers/message/types.ts | 108 +++++++++++++++++++++++ 11 files changed, 137 insertions(+), 125 deletions(-) create mode 100644 app/containers/message/types.ts diff --git a/app/containers/message/Attachments.tsx b/app/containers/message/Attachments.tsx index 07d0c0547..cd31a4684 100644 --- a/app/containers/message/Attachments.tsx +++ b/app/containers/message/Attachments.tsx @@ -1,22 +1,16 @@ import React from 'react'; import { dequal } from 'dequal'; +import {TMessageAttachments} from "./types"; + import Image from './Image'; import Audio from './Audio'; import Video from './Video'; import Reply from './Reply'; -export interface IMessageAttachments { - attachments: any; - timeFormat: string; - showAttachment: Function; - getCustomEmoji: Function; - theme: string; -} - const Attachments = React.memo(({ attachments, timeFormat, showAttachment, getCustomEmoji, theme -}: IMessageAttachments) => { +}: TMessageAttachments) => { if (!attachments || attachments.length === 0) { return null; } diff --git a/app/containers/message/Blocks.ts b/app/containers/message/Blocks.ts index 5f22d9ca9..aed182439 100644 --- a/app/containers/message/Blocks.ts +++ b/app/containers/message/Blocks.ts @@ -1,14 +1,8 @@ import React from 'react'; import { messageBlockWithContext } from '../UIKit/MessageBlock'; +import {TMessageBlocks} from "./types"; -export interface IMessageBlocks { - blocks: any; - id: string; - rid: string; - blockAction: Function; -} - -const Blocks = React.memo(({ blocks, id: mid, rid, blockAction }: IMessageBlocks) => { +const Blocks = React.memo(({ blocks, id: mid, rid, blockAction }: TMessageBlocks) => { if (blocks && blocks.length > 0) { const appId = blocks[0]?.appId || ''; return React.createElement( diff --git a/app/containers/message/Broadcast.tsx b/app/containers/message/Broadcast.tsx index 106ed8058..1e9a8494b 100644 --- a/app/containers/message/Broadcast.tsx +++ b/app/containers/message/Broadcast.tsx @@ -8,16 +8,9 @@ import { BUTTON_HIT_SLOP } from './utils'; import I18n from '../../i18n'; import { themes } from '../../constants/colors'; import MessageContext from './Context'; +import {TMessageBroadcast} from "./types"; -export interface IMessageBroadcast { - author: { - _id: string - }; - broadcast: boolean; - theme: string -} - -const Broadcast = React.memo(({ author, broadcast, theme }: IMessageBroadcast) => { +const Broadcast = React.memo(({ author, broadcast, theme }: TMessageBroadcast) => { const { user, replyBroadcast } = useContext(MessageContext); const isOwn = author._id === user.id; if (broadcast && !isOwn) { diff --git a/app/containers/message/CallButton.tsx b/app/containers/message/CallButton.tsx index 19ee3ad95..b0c7f5048 100644 --- a/app/containers/message/CallButton.tsx +++ b/app/containers/message/CallButton.tsx @@ -7,13 +7,9 @@ import styles from './styles'; import I18n from '../../i18n'; import { CustomIcon } from '../../lib/Icons'; import { themes } from '../../constants/colors'; +import {TMessageCallButton} from "./types"; -export interface IMessageCallButton { - theme: string; - callJitsi: Function; -} - -const CallButton = React.memo(({ theme, callJitsi }: IMessageCallButton) => ( +const CallButton = React.memo(({ theme, callJitsi }: TMessageCallButton) => ( { +const Content = React.memo((props: TMessageContent) => { if (props.isInfo) { // @ts-ignore const infoMessage = getInfoMessage({ ...props }); diff --git a/app/containers/message/Discussion.tsx b/app/containers/message/Discussion.tsx index 34a88263d..8353c0e9f 100644 --- a/app/containers/message/Discussion.tsx +++ b/app/containers/message/Discussion.tsx @@ -10,15 +10,10 @@ import { DISCUSSION } from './constants'; import { themes } from '../../constants/colors'; import MessageContext from './Context'; import { formatDateThreads } from '../../utils/room'; +import {TMessageDiscussion} from "./types"; -export interface IMessageDiscussion { - msg: string; - dcount: number; - dlm: string; - theme: string; -} -const Discussion = React.memo(({ msg, dcount, dlm, theme }: IMessageDiscussion) => { +const Discussion = React.memo(({ msg, dcount, dlm, theme }: TMessageDiscussion) => { let time; if (dlm) { time = formatDateThreads(dlm); diff --git a/app/containers/message/Message.tsx b/app/containers/message/Message.tsx index 2870ff4a5..6f08f0fe8 100644 --- a/app/containers/message/Message.tsx +++ b/app/containers/message/Message.tsx @@ -6,41 +6,20 @@ import MessageContext from './Context'; import User from './User'; import styles from './styles'; -import RepliedThread, {IMessageRepliedThread} from './RepliedThread'; -import MessageAvatar, {IMessageAvatar} from './MessageAvatar'; -import Attachments, {IMessageAttachments} from './Attachments'; +import RepliedThread from './RepliedThread'; +import MessageAvatar from './MessageAvatar'; +import Attachments from './Attachments'; import Urls from './Urls'; -import Thread, {IMessageThread} from './Thread'; -import Blocks, {IMessageBlocks} from './Blocks'; +import Thread from './Thread'; +import Blocks from './Blocks'; import Reactions from './Reactions'; -import Broadcast, {IMessageBroadcast} from './Broadcast'; -import Discussion, {IMessageDiscussion} from './Discussion'; -import Content, {IMessageContent} from './Content'; +import Broadcast from './Broadcast'; +import Discussion from './Discussion'; +import Content from './Content'; import ReadReceipt from './ReadReceipt'; -import CallButton, {IMessageCallButton} from './CallButton'; +import CallButton from './CallButton'; import { themes } from '../../constants/colors'; - - -type TMessageInner = { - type: string; - blocks: []; -} & IMessageDiscussion & IMessageContent & IMessageCallButton & IMessageBlocks - & IMessageThread & IMessageAttachments & IMessageBroadcast; - -type TMessage = { - isThreadReply: boolean; - isThreadSequential: boolean; - isInfo: boolean; - isTemp: boolean; - isHeader: boolean; - hasError: boolean; - style: any; - onLongPress: Function; - isReadReceiptEnabled: boolean; - unread: boolean; - theme: string; - isIgnored: boolean; -} & IMessageRepliedThread & IMessageAvatar & IMessageContent & TMessageInner; +import {TMessage, TMessageInner} from "./types"; interface IMessageTouchable { hasError: boolean; diff --git a/app/containers/message/MessageAvatar.tsx b/app/containers/message/MessageAvatar.tsx index cb7f71800..ad0b3dc06 100644 --- a/app/containers/message/MessageAvatar.tsx +++ b/app/containers/message/MessageAvatar.tsx @@ -3,24 +3,11 @@ import React, { useContext } from 'react'; import Avatar from '../Avatar'; import styles from './styles'; import MessageContext from './Context'; - -export interface IMessageAvatar { - isHeader: boolean; - avatar: string; - emoji: string; - author: { - username: string - _id: string; - }; - small?: boolean; - navToRoomInfo: Function; - getCustomEmoji(): void; - theme: string; -} +import {TMessageAvatar} from "./types"; const MessageAvatar = React.memo(({ isHeader, avatar, author, small, navToRoomInfo, emoji, getCustomEmoji, theme -}: IMessageAvatar) => { +}: TMessageAvatar) => { const { user } = useContext(MessageContext); if (isHeader && author) { const navParam = { diff --git a/app/containers/message/RepliedThread.tsx b/app/containers/message/RepliedThread.tsx index 4e832a961..55ac8c6b9 100644 --- a/app/containers/message/RepliedThread.tsx +++ b/app/containers/message/RepliedThread.tsx @@ -6,20 +6,12 @@ import styles from './styles'; import { themes } from '../../constants/colors'; import I18n from '../../i18n'; import Markdown from '../markdown'; +import {TMessageRepliedThread} from "./types"; -export interface IMessageRepliedThread { - tmid: string; - tmsg: string; - id: string; - isHeader: boolean; - theme: string; - fetchThreadName: Function; - isEncrypted: boolean; -} const RepliedThread = memo(({ tmid, tmsg, isHeader, fetchThreadName, id, isEncrypted, theme -}: IMessageRepliedThread) => { +}: TMessageRepliedThread) => { if (!tmid || !isHeader) { return null; } diff --git a/app/containers/message/Thread.tsx b/app/containers/message/Thread.tsx index 361a51805..d87c6aef9 100644 --- a/app/containers/message/Thread.tsx +++ b/app/containers/message/Thread.tsx @@ -6,17 +6,9 @@ import { themes } from '../../constants/colors'; import MessageContext from './Context'; import ThreadDetails from '../ThreadDetails'; import I18n from '../../i18n'; +import {TMessageThread} from "./types"; -export interface IMessageThread { - msg: string; - tcount: number; - theme: string; - tlm: string; - isThreadRoom: boolean; - id: string; -} - -const Thread = React.memo(({ msg, tcount, tlm, isThreadRoom, theme, id }: IMessageThread) => { +const Thread = React.memo(({ msg, tcount, tlm, isThreadRoom, theme, id }: TMessageThread) => { if (!tlm || isThreadRoom || tcount === 0) { return null; } diff --git a/app/containers/message/types.ts b/app/containers/message/types.ts new file mode 100644 index 000000000..e45e424c6 --- /dev/null +++ b/app/containers/message/types.ts @@ -0,0 +1,108 @@ +import {TChannel} from "../markdown/Hashtag"; + +export type TMessageAttachments = { + attachments: any; + timeFormat: string; + showAttachment: Function; + getCustomEmoji: Function; + theme: string; +} + +export type TMessageAvatar = { + isHeader: boolean; + avatar: string; + emoji: string; + author: { + username: string + _id: string; + }; + small?: boolean; + navToRoomInfo: Function; + getCustomEmoji(): void; + theme: string; +} + +export type TMessageBlocks = { + blocks: any; + id: string; + rid: string; + blockAction: Function; +} + +export type TMessageBroadcast = { + author: { + _id: string + }; + broadcast: boolean; + theme: string +} + +export type TMessageCallButton = { + theme: string; + callJitsi: Function; +} + +export type TMessageContent = { + isTemp: boolean; + isInfo: boolean; + tmid: string; + isThreadRoom: boolean; + msg: string; + theme: string; + isEdited: boolean; + isEncrypted: boolean; + getCustomEmoji: Function; + channels: TChannel[]; + mentions: object[]; + navToRoomInfo: Function; + useRealName: boolean; + isIgnored: boolean; + type: string; +} + +export type TMessageDiscussion = { + msg: string; + dcount: number; + dlm: string; + theme: string; +} + +export type TMessageThread = { + msg: string; + tcount: number; + theme: string; + tlm: string; + isThreadRoom: boolean; + id: string; +} + +export type TMessageRepliedThread = { + tmid: string; + tmsg: string; + id: string; + isHeader: boolean; + theme: string; + fetchThreadName: Function; + isEncrypted: boolean; +} + +export type TMessageInner = { + type: string; + blocks: []; +} & TMessageDiscussion & TMessageContent & TMessageCallButton & TMessageBlocks + & TMessageThread & TMessageAttachments & TMessageBroadcast; + +export type TMessage = { + isThreadReply: boolean; + isThreadSequential: boolean; + isInfo: boolean; + isTemp: boolean; + isHeader: boolean; + hasError: boolean; + style: any; + onLongPress: Function; + isReadReceiptEnabled: boolean; + unread: boolean; + theme: string; + isIgnored: boolean; +} & TMessageRepliedThread & TMessageAvatar & TMessageContent & TMessageInner; \ No newline at end of file