2021-10-20 16:32:58 +00:00
|
|
|
import { MarkdownAST } from '@rocket.chat/message-parser';
|
2022-03-21 20:44:06 +00:00
|
|
|
import { StyleProp, TextStyle } from 'react-native';
|
2022-05-31 16:08:18 +00:00
|
|
|
import { ImageStyle } from 'react-native-fast-image';
|
2021-10-20 16:32:58 +00:00
|
|
|
|
2022-04-01 21:52:38 +00:00
|
|
|
import { IUserChannel } from '../markdown/interfaces';
|
2022-02-17 15:27:01 +00:00
|
|
|
import { TGetCustomEmoji } from '../../definitions/IEmoji';
|
2022-04-01 21:52:38 +00:00
|
|
|
import { IAttachment, IThread, IUrl, IUserMention, IUserMessage, MessageType, TAnyMessageModel } from '../../definitions';
|
|
|
|
import { IRoomInfoParam } from '../../views/SearchMessagesView';
|
2022-01-24 18:35:06 +00:00
|
|
|
|
2021-09-13 20:41:05 +00:00
|
|
|
export interface IMessageAttachments {
|
2022-03-21 20:44:06 +00:00
|
|
|
attachments?: IAttachment[];
|
2022-03-02 14:18:01 +00:00
|
|
|
timeFormat?: string;
|
2022-03-21 20:44:06 +00:00
|
|
|
style?: StyleProp<TextStyle>[];
|
|
|
|
isReply?: boolean;
|
2022-04-01 21:52:38 +00:00
|
|
|
showAttachment?: (file: IAttachment) => void;
|
2022-02-17 15:27:01 +00:00
|
|
|
getCustomEmoji: TGetCustomEmoji;
|
feat: add media auto-download (#5076)
* feat: media auto-download view
* media auto download view completed and saving the settings in mmkv
* audio download preference
* audio auto download when the user who sent the audio is the same logged on mobile
* creation of isAutoDownloadEnabled, evaluate hist hook, Image Full Size preload done
* minor tweak audio show play button after download
* refactor audioFile to handleMediaDownload and fixed the audio download
* desestructured params to download too
* image download and autoDownload, algo fix the formatAttachmentUrl to show the image from local
* add the possibility to cancel image download and clear local images
* refactor blur component
* video download and auto download, also keeped the behavior to download unsuportted videos to the gallery
* add the possibility to start downloading a video, then exit the room, back again to room and cancel the video previously downloading
* remove the custom hook for autoDownload
* remove blurcomponent, fix the blur style in image.tsx, minor tweak video function name
* send messageId to video
* introducing the reducer to keep the downloads in progress
* create a media download selector
* remove all the redux stuff and do the same as file upload
* video download behavior
* done for image and audio
* fix the try catch download media
* clean up
* image container uiKit
* fix lint
* change rn-fetch-blob to expo-filesystem
* add pt-br
* pass the correct message id when there is an attachment on reply
* refactor some changes requested
* fix audio and move the netInfo from autoDownloadPreference to redux
* variable isAutoDownloadEnable name and handleMediaDownload getExtension
* message/Image refactored, change the component to show the image from FastImage to Image
* refactor handleMediaDownload and deleteMedia
* minor tweak
* refactor audio
* refactor video
* fix the type on the messagesView(the view of files)
* minor tweak
* fix the name of searchMediaFIleAsync's result
* minor tweak, add the default behavior, add the OFF as label
* minor tweaks
* verify if the media auto download exists on settings view
* fix media auto download view layout and minor tweak wifi
* avoid auto download from reply
* minor tweak at comment
* tweak list.section
* change the name to netInfoState and Local_document_directory
* remove mediaType and refactor audio and image
* separate blurview
* thumbnail video and video behavior
* add Audio to i18n and minor tweak
* set the blur as always dark and add the possibility to overlay
* don't need to controle the filepath in the view
* fix the loading in image and video at begin
* save the file with a similar filename as expected
* removed the necessity of messageId or id
* minor tweak
* switch useLayoutEffect to useEffect
* avoid onpress do some edge case because of cached at video
* minor tweak
* tweak at audio comment extension
* minor tweak type userpreferences
* remove test id from mediaAutoDownloadView
* change action's name to SET_NET_INFO_STATE
* caching and deleting video's thumbnails
* remove generate thumbnail
* minor tweak in image
* update camera-roll and save the file from local url
* remove local_cache_directory and deleteThumbnail
* update blur to fix error on android
* fix blur is hiding the file description
* avoid download unsupported video
* return void when it is loading the audio
2023-08-07 14:02:30 +00:00
|
|
|
author?: IUserMessage;
|
2021-09-13 20:41:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface IMessageAvatar {
|
|
|
|
isHeader: boolean;
|
2022-04-01 21:52:38 +00:00
|
|
|
avatar?: string;
|
|
|
|
emoji?: string;
|
|
|
|
author?: IUserMessage;
|
2021-09-13 20:41:05 +00:00
|
|
|
small?: boolean;
|
2022-04-01 21:52:38 +00:00
|
|
|
navToRoomInfo: (navParam: IRoomInfoParam) => void;
|
2022-02-17 15:27:01 +00:00
|
|
|
getCustomEmoji: TGetCustomEmoji;
|
2021-09-13 20:41:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface IMessageBlocks {
|
2022-04-01 21:52:38 +00:00
|
|
|
blocks: { appId?: string }[];
|
2021-09-13 20:41:05 +00:00
|
|
|
id: string;
|
|
|
|
rid: string;
|
2022-04-01 21:52:38 +00:00
|
|
|
blockAction?: (params: { actionId: string; appId: string; value: string; blockId: string; rid: string; mid: string }) => void;
|
2021-09-13 20:41:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface IMessageBroadcast {
|
2022-04-01 21:52:38 +00:00
|
|
|
author?: IUserMessage;
|
|
|
|
broadcast?: boolean;
|
2021-09-13 20:41:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface IMessageCallButton {
|
2023-03-01 18:26:56 +00:00
|
|
|
handleEnterCall?: () => void;
|
2021-10-20 16:32:58 +00:00
|
|
|
}
|
|
|
|
|
2021-09-13 20:41:05 +00:00
|
|
|
export interface IMessageContent {
|
2021-11-10 17:56:19 +00:00
|
|
|
_id: string;
|
2021-09-13 20:41:05 +00:00
|
|
|
isTemp: boolean;
|
2022-05-03 14:27:20 +00:00
|
|
|
isInfo: string | boolean;
|
2022-03-02 14:18:01 +00:00
|
|
|
tmid?: string;
|
2021-09-13 20:41:05 +00:00
|
|
|
isThreadRoom: boolean;
|
2022-03-02 14:18:01 +00:00
|
|
|
msg?: string;
|
|
|
|
md?: MarkdownAST;
|
2021-09-13 20:41:05 +00:00
|
|
|
isEdited: boolean;
|
|
|
|
isEncrypted: boolean;
|
2022-02-17 15:27:01 +00:00
|
|
|
getCustomEmoji: TGetCustomEmoji;
|
2022-03-02 14:18:01 +00:00
|
|
|
channels?: IUserChannel[];
|
|
|
|
mentions?: IUserMention[];
|
2022-04-01 21:52:38 +00:00
|
|
|
navToRoomInfo: (navParam: IRoomInfoParam) => void;
|
2022-03-02 14:18:01 +00:00
|
|
|
useRealName?: boolean;
|
2021-09-13 20:41:05 +00:00
|
|
|
isIgnored: boolean;
|
2022-05-27 17:27:43 +00:00
|
|
|
type: MessageType;
|
2022-04-20 20:53:11 +00:00
|
|
|
comment?: string;
|
2022-05-10 17:40:08 +00:00
|
|
|
hasError: boolean;
|
|
|
|
isHeader: boolean;
|
2022-11-11 19:51:57 +00:00
|
|
|
isTranslated: boolean;
|
2021-09-13 20:41:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export interface IMessageEmoji {
|
2022-04-01 21:52:38 +00:00
|
|
|
content: string;
|
|
|
|
standardEmojiStyle: { fontSize: number };
|
|
|
|
customEmojiStyle: StyleProp<ImageStyle>;
|
2022-02-17 15:27:01 +00:00
|
|
|
getCustomEmoji: TGetCustomEmoji;
|
2021-09-13 20:41:05 +00:00
|
|
|
}
|
|
|
|
|
2022-04-01 21:52:38 +00:00
|
|
|
export interface IMessageThread extends Pick<IThread, 'msg' | 'tcount' | 'tlm' | 'id'> {
|
2021-09-13 20:41:05 +00:00
|
|
|
isThreadRoom: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface IMessageTouchable {
|
|
|
|
hasError: boolean;
|
2022-05-03 14:27:20 +00:00
|
|
|
isInfo: string | boolean;
|
2021-09-13 20:41:05 +00:00
|
|
|
isThreadReply: boolean;
|
|
|
|
isTemp: boolean;
|
2022-04-01 21:52:38 +00:00
|
|
|
archived?: boolean;
|
|
|
|
highlighted?: boolean;
|
|
|
|
ts?: string | Date;
|
|
|
|
urls?: IUrl[];
|
2021-09-13 20:41:05 +00:00
|
|
|
reactions?: any;
|
2022-04-01 21:52:38 +00:00
|
|
|
alias?: string;
|
|
|
|
role?: string;
|
|
|
|
drid?: string;
|
2024-01-25 14:11:07 +00:00
|
|
|
isBeingEdited?: boolean;
|
2021-09-13 20:41:05 +00:00
|
|
|
}
|
|
|
|
|
2022-04-01 21:52:38 +00:00
|
|
|
export interface IMessageRepliedThread extends Pick<IThread, 'tmid' | 'tmsg' | 'id'> {
|
2021-09-13 20:41:05 +00:00
|
|
|
isHeader: boolean;
|
2022-04-01 21:52:38 +00:00
|
|
|
fetchThreadName?: (tmid: string, id: string) => Promise<string | undefined>;
|
2021-09-13 20:41:05 +00:00
|
|
|
isEncrypted: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface IMessageInner
|
2022-04-01 21:52:38 +00:00
|
|
|
extends IMessageContent,
|
2021-09-13 20:41:05 +00:00
|
|
|
IMessageCallButton,
|
|
|
|
IMessageBlocks,
|
|
|
|
IMessageThread,
|
|
|
|
IMessageAttachments,
|
|
|
|
IMessageBroadcast {
|
2022-04-01 21:52:38 +00:00
|
|
|
type: MessageType;
|
2021-09-13 20:41:05 +00:00
|
|
|
blocks: [];
|
2022-04-01 21:52:38 +00:00
|
|
|
urls?: IUrl[];
|
2023-08-04 14:09:36 +00:00
|
|
|
isPreview?: boolean;
|
2021-09-13 20:41:05 +00:00
|
|
|
}
|
|
|
|
|
2022-04-01 21:52:38 +00:00
|
|
|
export interface IMessage extends IMessageRepliedThread, IMessageInner, IMessageAvatar {
|
2021-09-13 20:41:05 +00:00
|
|
|
isThreadReply: boolean;
|
|
|
|
isThreadSequential: boolean;
|
2022-05-03 14:27:20 +00:00
|
|
|
isInfo: string | boolean;
|
2021-09-13 20:41:05 +00:00
|
|
|
isTemp: boolean;
|
|
|
|
isHeader: boolean;
|
|
|
|
hasError: boolean;
|
|
|
|
style: any;
|
2022-04-01 21:52:38 +00:00
|
|
|
// style: ViewStyle;
|
|
|
|
onLongPress?: (item: TAnyMessageModel) => void;
|
|
|
|
isReadReceiptEnabled?: boolean;
|
2022-03-02 14:18:01 +00:00
|
|
|
unread?: boolean;
|
2021-09-13 20:41:05 +00:00
|
|
|
isIgnored: boolean;
|
2022-04-01 21:52:38 +00:00
|
|
|
dcount: number | undefined;
|
|
|
|
dlm: string | Date | undefined;
|
2021-09-13 20:41:05 +00:00
|
|
|
}
|