2021-10-01 18:12:19 +00:00
|
|
|
import React, { forwardRef, useImperativeHandle } from 'react';
|
2022-03-31 13:04:21 +00:00
|
|
|
import { Alert, Share } from 'react-native';
|
|
|
|
import Clipboard from '@react-native-clipboard/clipboard';
|
2021-10-01 18:12:19 +00:00
|
|
|
import { connect } from 'react-redux';
|
|
|
|
import moment from 'moment';
|
|
|
|
|
|
|
|
import RocketChat from '../../lib/rocketchat';
|
|
|
|
import database from '../../lib/database';
|
|
|
|
import I18n from '../../i18n';
|
|
|
|
import log, { logEvent } from '../../utils/log';
|
2022-04-28 18:44:40 +00:00
|
|
|
import Navigation from '../../lib/navigation/appNavigation';
|
2021-10-01 18:12:19 +00:00
|
|
|
import { getMessageTranslation } from '../message/utils';
|
|
|
|
import { LISTENER } from '../Toast';
|
|
|
|
import EventEmitter from '../../utils/events';
|
|
|
|
import { showConfirmationAlert } from '../../utils/info';
|
2022-04-28 18:44:40 +00:00
|
|
|
import { TActionSheetOptionsItem, useActionSheet } from '../ActionSheet';
|
|
|
|
import Header, { HEADER_HEIGHT, IHeader } from './Header';
|
2021-10-01 18:12:19 +00:00
|
|
|
import events from '../../utils/log/events';
|
2022-04-28 18:44:40 +00:00
|
|
|
import { IApplicationState, ILoggedUser, TAnyMessageModel, TSubscriptionModel } from '../../definitions';
|
2022-03-29 18:53:27 +00:00
|
|
|
|
|
|
|
export interface IMessageActions {
|
|
|
|
room: TSubscriptionModel;
|
|
|
|
tmid?: string;
|
|
|
|
user: Pick<ILoggedUser, 'id'>;
|
2022-04-28 18:44:40 +00:00
|
|
|
editInit: (message: TAnyMessageModel) => void;
|
|
|
|
reactionInit: (message: TAnyMessageModel) => void;
|
|
|
|
onReactionPress: (shortname: string, messageId: string) => void;
|
|
|
|
replyInit: (message: TAnyMessageModel, mention: boolean) => void;
|
2021-10-01 18:12:19 +00:00
|
|
|
isMasterDetail: boolean;
|
|
|
|
isReadOnly: boolean;
|
2022-04-28 18:44:40 +00:00
|
|
|
Message_AllowDeleting?: boolean;
|
|
|
|
Message_AllowDeleting_BlockDeleteInMinutes?: number;
|
|
|
|
Message_AllowEditing?: boolean;
|
|
|
|
Message_AllowEditing_BlockEditInMinutes?: number;
|
|
|
|
Message_AllowPinning?: boolean;
|
|
|
|
Message_AllowStarring?: boolean;
|
|
|
|
Message_Read_Receipt_Store_Users?: boolean;
|
2021-10-01 18:12:19 +00:00
|
|
|
server: string;
|
2022-04-28 18:44:40 +00:00
|
|
|
editMessagePermission?: string[];
|
|
|
|
deleteMessagePermission?: string[];
|
|
|
|
forceDeleteMessagePermission?: string[];
|
|
|
|
pinMessagePermission?: string[];
|
2021-10-01 18:12:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
const MessageActions = React.memo(
|
|
|
|
forwardRef(
|
|
|
|
(
|
|
|
|
{
|
|
|
|
room,
|
|
|
|
tmid,
|
|
|
|
user,
|
|
|
|
editInit,
|
|
|
|
reactionInit,
|
|
|
|
onReactionPress,
|
|
|
|
replyInit,
|
|
|
|
isReadOnly,
|
|
|
|
server,
|
|
|
|
Message_AllowDeleting,
|
|
|
|
Message_AllowDeleting_BlockDeleteInMinutes,
|
|
|
|
Message_AllowEditing,
|
|
|
|
Message_AllowEditing_BlockEditInMinutes,
|
|
|
|
Message_AllowPinning,
|
|
|
|
Message_AllowStarring,
|
|
|
|
Message_Read_Receipt_Store_Users,
|
|
|
|
isMasterDetail,
|
|
|
|
editMessagePermission,
|
|
|
|
deleteMessagePermission,
|
|
|
|
forceDeleteMessagePermission,
|
|
|
|
pinMessagePermission
|
|
|
|
}: IMessageActions,
|
|
|
|
ref
|
2022-04-28 18:44:40 +00:00
|
|
|
) => {
|
|
|
|
let permissions = {
|
|
|
|
hasEditPermission: false,
|
|
|
|
hasDeletePermission: false,
|
|
|
|
hasForceDeletePermission: false,
|
|
|
|
hasPinPermission: false
|
|
|
|
};
|
|
|
|
const { showActionSheet, hideActionSheet } = useActionSheet();
|
2021-10-01 18:12:19 +00:00
|
|
|
|
|
|
|
const getPermissions = async () => {
|
|
|
|
try {
|
|
|
|
const permission = [editMessagePermission, deleteMessagePermission, forceDeleteMessagePermission, pinMessagePermission];
|
|
|
|
const result = await RocketChat.hasPermission(permission, room.rid);
|
|
|
|
permissions = {
|
|
|
|
hasEditPermission: result[0],
|
|
|
|
hasDeletePermission: result[1],
|
|
|
|
hasForceDeletePermission: result[2],
|
|
|
|
hasPinPermission: result[3]
|
|
|
|
};
|
|
|
|
} catch {
|
|
|
|
// Do nothing
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const isOwn = (message: TAnyMessageModel) => message.u && message.u._id === user.id;
|
2021-10-01 18:12:19 +00:00
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const allowEdit = (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
if (isReadOnly) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
const editOwn = isOwn(message);
|
|
|
|
|
|
|
|
if (!(permissions.hasEditPermission || (Message_AllowEditing && editOwn))) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
const blockEditInMinutes = Message_AllowEditing_BlockEditInMinutes;
|
|
|
|
if (blockEditInMinutes) {
|
|
|
|
let msgTs;
|
|
|
|
if (message.ts != null) {
|
|
|
|
msgTs = moment(message.ts);
|
|
|
|
}
|
2022-04-28 18:44:40 +00:00
|
|
|
let currentTsDiff = 0;
|
2021-10-01 18:12:19 +00:00
|
|
|
if (msgTs != null) {
|
|
|
|
currentTsDiff = moment().diff(msgTs, 'minutes');
|
|
|
|
}
|
|
|
|
return currentTsDiff < blockEditInMinutes;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const allowDelete = (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
if (isReadOnly) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Prevent from deleting thread start message when positioned inside the thread
|
|
|
|
if (tmid === message.id) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
const deleteOwn = isOwn(message);
|
|
|
|
if (!(permissions.hasDeletePermission || (Message_AllowDeleting && deleteOwn) || permissions.hasForceDeletePermission)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (permissions.hasForceDeletePermission) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
const blockDeleteInMinutes = Message_AllowDeleting_BlockDeleteInMinutes;
|
|
|
|
if (blockDeleteInMinutes != null && blockDeleteInMinutes !== 0) {
|
|
|
|
let msgTs;
|
|
|
|
if (message.ts != null) {
|
|
|
|
msgTs = moment(message.ts);
|
|
|
|
}
|
2022-04-28 18:44:40 +00:00
|
|
|
let currentTsDiff = 0;
|
2021-10-01 18:12:19 +00:00
|
|
|
if (msgTs != null) {
|
|
|
|
currentTsDiff = moment().diff(msgTs, 'minutes');
|
|
|
|
}
|
|
|
|
return currentTsDiff < blockDeleteInMinutes;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const getPermalink = (message: TAnyMessageModel) => RocketChat.getPermalinkMessage(message);
|
2021-10-01 18:12:19 +00:00
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleReply = (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_REPLY);
|
|
|
|
replyInit(message, true);
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleEdit = (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_EDIT);
|
|
|
|
editInit(message);
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleCreateDiscussion = (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_DISCUSSION);
|
|
|
|
const params = { message, channel: room, showCloseModal: true };
|
|
|
|
if (isMasterDetail) {
|
|
|
|
Navigation.navigate('ModalStackNavigator', { screen: 'CreateDiscussionView', params });
|
|
|
|
} else {
|
|
|
|
Navigation.navigate('NewMessageStackNavigator', { screen: 'CreateDiscussionView', params });
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleUnread = async (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_UNREAD);
|
|
|
|
const { id: messageId, ts } = message;
|
|
|
|
const { rid } = room;
|
|
|
|
try {
|
|
|
|
const db = database.active;
|
|
|
|
const result = await RocketChat.markAsUnread({ messageId });
|
|
|
|
if (result.success) {
|
|
|
|
const subCollection = db.get('subscriptions');
|
|
|
|
const subRecord = await subCollection.find(rid);
|
Merge 4.25.0 into single-server (#3790)
* Chore: Migrate DefaultBrowserView to Typescript (#3488)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate PickerView to Typescript (#3501)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate AttachmentView to Typescript (#3483)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate MarkdownTableView to Typescript (#3500)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2EEncryptionSecurityView to Typescript (#3489)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2EEnterYourPasswordView to Typescript (#3490)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2EHowItWorksView to Typescript (#3492)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2ESaveYourPasswordView to Typescript (#3493)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ForgotPasswordView to Typescript (#3496)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ForwardLivechatView to Typescript (#3497)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate JitsiMeetView to Typescript (#3498)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] Push notifications user preference not syncing correctly (#3494)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] Display prefs showing wrong header icon on tablet (#3510)
* Merge 4.22.0 into master (#3523)
* Tests: Make Detox work on Android (#3051)
* Chore: Migrate NewMessageView to Typescript (#3502)
* Chore: Migrate ScreenLockConfigView to Typescript (#3517)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ScreenLockedView to Typescript (#3515)
* Chore: Migrate SecurityPrivacyView to Typescript (#3518)
* Chore: Migrate SelectListView to Typescript (#3519)
* Chore: Migrate SelectServerView to Typescript (#3521)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate SetUsernameView to Typescript (#3526)
* Chore: Migrate ThemeView to Typescript (#3522)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate StatusView to Typescript (#3527)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate ShareListView to Typescript (#3459)
Co-authored-by: Gerzon Z <gerzonc@icloud.com>
* Chore: Migrate TeamChannelsView to Typescript (#3532)
Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com>
* Language update from LingoHub 🤖 (#3529)
Project Name: Rocket.Chat.ReactNative
Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative
User: Robot LingoHub
Easy language translations with LingoHub 🚀
Co-authored-by: Robot LingoHub <robot@lingohub.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate react-navigation to TypeScript (#3480)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Bump version to 4.23.0 (#3546)
* [FIX] Certificate stops working after app update on iOS (#3537)
* [IMPROVE] Connection stability (#3531)
* [NEW] Permission for uploading files (#3505)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] Files screen stopped listing content on server 4.2 (#3541)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ModalBlockView to Typescript (#3503)
* Chore: Migrate ModalBlockView to Typescript
* minor tweaks
* update the navigator
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate SelectedUsersView to Typescript (#3520)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [IMPROVE] Remove Omnichannel visitor's navigation history (#3534)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Merge 4.23.0 into master (#3574)
* [FIX] Download video/quicktime in iOS (#3581)
* Chore: Migrate Redux to Typescript PoC (#3565)
* Chore: Migrate Model's folder to Typescript (#3564)
* Chore: Migrate lib user preferences to Typescript (#3578)
* Chore: Update React Native Device Info to 8.4.8 (#3560)
* [FIX] Roles rendering on dark theme (#3589)
* fix: Add height verification to fix modal dimension (#3573)
* chore: Change the lib `@types/url-parse` to devDependencies (#3585)
* [FIX] teams.removeMembers mobile usage (#3557)
* Chore: Migrate DisplayPrefsView to Typescript (#3555)
* Chore: Migrate Utils Folder to Typescript (#3544)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate ThreadMessagesView to Typescript (#3538)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* [FIX] RoomInfoView displaying different info depending on the origin (#3586)
Co-authored-by: GleidsonDaniel <gleidson10daniel@hotmail.com>
* [FIX] Message parser switch not updating field properly (#3576)
* [FIX] Lint not ignoring Markdown props (#3600)
* Bump version to 4.24.0 (#3601)
* Chore: Migrate notification/push to Typescript (#3587)
* chore: migrate connect to ts and add tests
* chore: add more tests
* Chore: Update react-native-device-info patch-package and pods (#3605)
* [FIX] App crashes when entering server after applying certificate (Android) (#3579)
* chore: migrate redux module encryption to typescript
* chore: migrate customEmoji to typescript and add tests
* chore: create IPreferences interface
* chore: migrate redux module sortPreferences to typescript
* chore: fix IPreference interface and organize import
* chore: migrate to typescript
* chore: migrate usersTyping to typescript
* Add DiscussionDetails and Item for DiscussionsView; update ThreadDetails, BackgroundContainer and DiscussionsView
* chore: migrate settings to typescript
* chore: add interface to IStateAplication
* chore: migrate redux module room to typescript
* update definitions
* chore: fix error on error interface
* [FIX] Joining and leaving messages in teams (#3591)
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* minor tweak
* [FIX] TypeScript's errors raised by HOCs (#3535)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* chore: migrate redux module roles to typescript
* wip: add IRoles to IAplicationState interface
* add storybooks, update snapshots and DiscussionsView
* Minor tweaks
* Fix lint
* Remove unused import
* chore: migrate redux module inviteUsers to typescript
* chore: migrate messages action to typescript
* chore: fix any interface and change null to empty string
* chore: implements IAplicationState on type
* chore: remove mapDispatchToProps and continue ts migration
* chore: fix types and apply IAplicationState to types
* Migrate redux server action/reducer to ts
* add tests
* [FIX] App crashes when opening a notification while app is closed (#3629)
* [FIX] makeThreadName asserting undefined as non-null (#3628)
* [FIX] Threads' pagination not working (#3631)
* update tests
* chore: update settings value types
* Send missing params to selectServerRequest
* [IMPROVE] Convert HEIC images to JPG and remove compression (#3633)
* update interface
* update action definition
* Move onDiscussionpress logic on message, update SearchHeader and DiscussionDetails component, add useLayoutEffect at DiscussionsView
* Update interfaces and minor tweaks to DiscussionsView screen and components
* Fix navigation logic and update interfaces
* Minor tweaks
* Undo change on project.pbxproj
* Update project.pbxproj
* Update project.pbxproj
* Remove style.ts
* Minor tweak
* update snapshots
* Merge 4.24.0 into master (#3648)
* Chore: Change console.log to console.error when logging error
* chore: add as string to fix type
* Fix lint
* fix types
* test
* Remove console.log
* test
* [FIX] StoryShots not working for async rendered components (#3677)
* remove console.log
* Add missing DiscussionsView snapshot
* fix build and useless done and async generator
* update snapshot
* Chore: fix build and useless done and async generator (#3678)
* fix build and useless done and async generator
* update snapshot
* Chore: Migrate Database to Typescript (#3580)
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate redux module permissions to typescript (#3630)
* Chore: Migrate redux module share to typescript (#3612)
* chore: migrate redux module share to typescript
* chore: fix types
* chore: update types
* chore: migrate redux module share to typescript
* remove double import
* chore: fix import
* Chore: Migrate redux module createChannel to typescript (#3602)
* chore: migrate createChannel to ts and add tests
* chore: fix naming
* chore: add more types and remove mapDispatchToProps from components
* remove todo
* update tests
* chore: migrate interface to reducer and fix errors on return
* chore: insert IApplicationState to mapStateToProps state type
* Remove spread
* fix type
* fix import and state type
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate redux module app to typescript (#3598)
* chore: migrate activeUsers reducer and action to TS
* chore: init types folder and set redux and BaseScreen interface
* chore: remove mapDispatchToProps to use dispatch prop and clear some types
* chore: type selectedUsers action and reducer and improvement in the code of other files
* chore: move IUser to base types
* chore: move state props to ISelectedUsersViewProps
* chore: create mocketStore
* chore: remove applyAppStateMiddleware
* test: create activeUser and selectedUser tests
* test: add more selectedUsers tests
* chore: fix action type
* chore: move types to definition folder and fix imports
* chore: remove unused const
* chore: migrate redux tests to reducer folder and add eslint jest plugin
* chore: exprot initial state and then import on tests
* chore: move interfaces to reducer and import on screen
* chore: set eslint-plugin-jest version to 24.7.0
* chore: fix IUser import
* chore: update interfaces and types names
* chore: update definitions
* chore: update IBaseScreen definitions
* chore: init reducer/app migration to ts
* chore: add tests and migrate RootEnum
* wip: migrate fixed consts to RootEnum
* chore: remove redux action inferences
* fix types
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate redux module createDiscussion to typescript (#3604)
* chore: migrate createDiscussion to ts and add tests
* chore: add TActionCreateDiscussion to TApplicationActions
* fix types
* update types
* fix types
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] ios-testflight-experimental unable to find cache (#3684)
* Chore: Remove Non-null assertion operator in ThreadMessagesView (#3632)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate CannedResponsesListView to Typescript (#3553)
* Chore: Migrate CannedResponsesListView to TS
* Moved IcannedResponse to definitions and fixed the index
* Chore: Migrate CannedResponseDetail to TS
* minor tweaks
* refactor: update new types and interfaces for use ISubscription
* fix lint error and canned responses's dropdown
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate LivechatEditView to Typescript (#3499)
* Chore: Migrate LivechatEditView to Typescript
* refactor: minor tweak
* refactor: fix the interfaces for input
* refactor: fix lint erros
* minor tweak with new navigation types
* function
* iroom tweak
* livechateditview tweak
* TextInput tweak
* refactor: update new types and interfaces for use ISubscription
* refactor to default useState type
* change the component name in SearchBox
* changed state type
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Gerzon Z <gerzonc@icloud.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Regression: Message press navigating to empty RoomView (#3680)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Regression: Prevent duplicated .jpg on file upload (#3658)
* [FIX] Regression: Prevent duplicated .jpg on file upload
* refactor to all files typed as image/jpeg
* isolate regexp to function
* refactor forceJpgExtension
* clean
* minor tweak
* [FIX] Regression: Prevent duplicated .jpg on file upload
* refactor to all files typed as image/jpeg
* isolate regexp to function
* refactor forceJpgExtension
* clean
* minor tweak
* refactored comment
* Chore: Migrate lib/utils to TypeScript (#3637)
* Migrate utils to TypeScript
* Add @types/semver
* Refactor compareServerVersion(currentVersion, oldVersion, func) to compareServerVersion(current, func, oldVersion)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate readMessages to TS (#3669)
* Migrate readMessages to TS
* Update IRocketChat interface
* [FIX] Unnecessary login dispatch on adding new server (#3693)
* [FIX] Disable tap gesture on call messages (#3694)
* [IMPROVE] Keep biometry option from last session (#3668)
Co-authored-by: GleidsonDaniel <gleidson10daniel@hotmail.com>
Co-authored-by: Reinaldo Neto <reinaldonetof@hotmail.com>
* Fix reactotron multiple connections (#3622)
* Chore: Fix rocketchat interface (#3705)
* Chore: Migrate logout to Typescript (#3688)
* [NEW] Stream to get individual presence updates (#3606)
Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com>
* [FIX] Inject Redux store to prevent/remove require cycles (#3691)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate lib/rocketchat.js to TS - structure PoC (#3661)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
* [FIX] #3606 merged using wrong JS SDK branch (#3709)
* [FIX] Remove deprecated database methods and other database operations (#3686)
* Fix PK error on subscriptions/room
* Instead of checking for pending update, wrap the call on a try catch and return null in case of error
* Generate delete operations before create/update to prevent errors
* Apply same logic on encryption
* Fix database operations on getRoles
* Fix a few database issues found on Bugsnag on ThreadMessagesView
* Run prettier :(
* Chore: Add REST API definitions from server (#3721)
* create first definitions
* chore: implements get and post types
* fix lint
* add ts-ignore
* add teams.removeRoom method
* Remove unused endpoints
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Move some methods to SDK (#3736)
* [IMPROVE] Add support for ephemeral messages inside threads (#3687)
* Chore: dehydrate small server requests away from rocketchat.js (#3740)
* Bump version to 4.25.0 (#3745)
* [Snyk] Security upgrade url-parse from 1.5.1 to 1.5.6 (#3746)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-URLPARSE-2401205
* Language update from LingoHub 🤖 on 2022-02-14Z (#3730)
* Language update from LingoHub 🤖
Project Name: Rocket.Chat.ReactNative
Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative
User: Robot LingoHub
Easy language translations with LingoHub 🚀
* remove draft gl
Co-authored-by: Robot LingoHub <robot@lingohub.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/getSingleMessage to TS (#3700)
* migrate getSingleMessage to TS
* minor tweak
* Chore: Migrate methods/getRooms to TS (#3702)
* migrate getRooms to TS
* add sdk and set any types
* Moved the new variable around and added ts-ignore to follow the pattern from /services/restApi.ts
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate updateMessages to Typescript (#3715)
* Chore: Migrate selector/login to TS (#3731)
* migrate selector/login to TS
* Fix lint errors
* set aliases for returns
* Chore: Migrate helpers/parseUrls to Typescript (#3735)
* Chore: Migrate methods/helpers/parseQuery to Typescript (#3742)
* Chore: Migrate methods/helpers/parseQuery to Typescript
* tweak in example
* Chore: Migrate app/commands to typescript (#3697)
* Chore: Migrate lib/encryption folder to TypeScript (#3639)
* Initial commit
* add types/bytebuffer, add type definitions to params and update interfaces
* add more types and type assertions
* update types
* change bang operator by type assertion and update class variables definitions
* add types for deferred class
* minor tweaks on types definitions
* add ts-ignore
* Update encryption.ts
* update deferred and encryption
* update encryption.ts
* Update room.ts
* update toDecrypt type
* initialize sessionKeyExportedString
* remove return types
* Chore: Migrate redux actions/enterpriseModules to TS (#3698)
* migrate enterpriseModules to TS
* update test file
* Chore: Migrate database/services and database/utils to TS (#3708)
* migrate database services and utils to ts
* Migrate tests
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate buildMessage to TS (#3732)
* migrate buildMessage to TS
* Fix lint
* minor tweak
* minor tweaks
* Chore: Migrate getPermissions to Typescript (#3720)
* Migrating...
* Fix IPermission
* Playing with types
* Remove `as const`
* Fix lint
* Fix test
* Apply sdk
* Fix lint and autocomplete
* [FIX] Add search and fix pagination for omnichannels departments (#3621)
* [FIX] Search and pagination for omnichannels departments
* pagination complete
* minor tweak
* renamed a param and workaround for a ux bug
* fix style of flatlist and search as header scrollable
* stick the header
* Merge branch 'fix.forward-department-list' of https://github.com/RocketChat/Rocket.Chat.ReactNative into fix.forward-department-list
* refactor pagination
* fix value type
* refactor render search
* refactor layout
* make ts happy
* Chore: Migrate Markdown to Typescript (#3558)
* Chore: Migrate Markdown to TS
* Chore: Migrate Markdown to TS
* minor tweak
* added preview where markdown was preview and fixed params within markdown
* removed ts-ignore
* fix lint
* removed numbersofline={0} and default value to numberOfLines=1
* change how to import markdown preview and remove numberOfLines
* using useTheme inside markdownPreview and remove theme from components
* minor tweak on interfaces
* isNewMarkdown return as boolean
* minor tweaks
* minor tweaks
* removed unused component
* fixed markdown stories
* updated snapshot because removed numberOfLines={0} from message/content
* create IEmoji.ts in definitions and refactor all places where getCustomEmoji was called
* onLinkPress typed
* todo: refactor navtoroominfo
* formatText.test.ts
* markdown stories to typescript too
* minor tweak
* IMessage definition
* refactor: update new types and interfaces for use ISubscription
* refactor: update threadItem for use new MarkdownPreview
* refactor: rollback wrong file commited
* formatHyperlink
* fix lint
* updated item story shot
* refactor and refactor some types
* Remove non-null assertion
* Minor change on useRealName
* tweak
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/callJitsi to typescript (#3660)
* chore: migrate callJitsi to typescript
* change fixed string to type
* wip
* wip
* back to old times :)
* back to typescript
* Chore: Migrate redux module room to typescript (#3636)
* chore: migrate redux module room to typescript and remove dispatch on dependencies
* chore: add tests to redux module room
* chore: create ERoomType and use on implemention
* chore: update enum name
* fix test id
* Chore: Migrate redux module login to typescript (#3647)
* chore: migrate redux module login to typescript
chore: update redux module login tests
* update workers
* wip
* fix type
* remove partial
* add more status
* migrate the rest of the stuff to typescript
* fix tests and types
* fix types and tests
* Chore: Migrate method getSettings to typescript (#3703)
* chore: migrate getSettings to typescript and and some types
* chore: remove this and add current to code
* chore: add current
* Chore: Migrate getCustomEmojis to TS (#3724)
* update customEmoji interface and getCustomEmoji
* add sdk
* updated emojiCustom rest definition
* minor refactor
* update params object
* [FIX] getRooms request using param with wrong name (#3761)
* Chore: Migrate methods/getRoomInfo to TS (#3695)
* migrate getRoomInfo to TS
* update room type
* update types
* Fix lint error
* Chore: Migrate getSlashCommands to TS (#3711)
* migrate getSlashCommands to TS
* use sdk and update getSlashCommands
* minor tweak
* Remove implicit anys
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate getUsersPresence to TS (#3717)
* migrate getUsersPresence to ts
* use sdk and remove this context from getUsersPresence
* Chore: Migrate loadMissedMessages to typescript (#3704)
* chore: migrate loadMissedMessages to typescript
* remove loaderItem
* remove this from functions
* Chore: Migrate methods/getRoles to Typescript (#3741)
* chore: migrate getRoles to ts
* chore: removing unused const
* chore: minor tweak
* Type batch
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/loadMessagesForRoom to Typescript (#3701)
* chore: change loadMessagesForRoom to typescript
* minor tweak
* chore: minor tweaks after merge with developer
* chore: minor tweaks after merge with developer
* chore: minor tweak
* chore: minor tweaks
* Fix return
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
* Chore: Migrate methods/sendFileMessage to typescript (#3683)
* chore: start the migration
* chore: update sendFileMessage to ts
* chore: removing an `any` from uploadQueue
* chore: minor tweak
* chore: minor tweak
* chore: minor tweaks after merge with developer
* chore: minor tweak after merge develop into current
* [FIX] Differ to Last Session Authenticated (#3667)
* [FIX] Differ to Last Session Authenticated
* Added timesync
* [FIX] Differ to Last Session Authenticated
* Added timesync
* timesync tweaks
* refactor diffLastLocalSession and saveLastLocalAuthentication
* did a race
* Update comment in app/utils/localAuthentication.ts
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* refactor getServerTimeSync and when use this route
* tweak
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/loadNextMessages to typescript (#3719)
* feat: update loadNextMessages to ts
* minor tweak
* chore: minor tweaks after merge with developer
* chore: migrate getFileUrlFromMessage to ts (#3734)
* [IMPROVE] Team system messages feedback (#3771) (#3772)
* almost there
* Update stories
Co-authored-by: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com>
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com>
Co-authored-by: Gerzon Z <gerzonc@icloud.com>
Co-authored-by: Anant Bhasin <38764067+aKn1ghtOut@users.noreply.github.com>
Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com>
Co-authored-by: lingohub[bot] <69908207+lingohub[bot]@users.noreply.github.com>
Co-authored-by: Robot LingoHub <robot@lingohub.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
Co-authored-by: Danish Ahmed Mirza <77742477+try-catch-stack@users.noreply.github.com>
Co-authored-by: Reinaldo Neto <reinaldonetof@hotmail.com>
Co-authored-by: Snyk bot <snyk-bot@snyk.io>
2022-02-28 19:03:42 +00:00
|
|
|
await db.write(async () => {
|
2021-10-01 18:12:19 +00:00
|
|
|
try {
|
2022-04-28 18:44:40 +00:00
|
|
|
await subRecord.update(sub => (sub.lastOpen = ts as Date)); // TODO: reevaluate IMessage
|
2021-10-01 18:12:19 +00:00
|
|
|
} catch {
|
|
|
|
// do nothing
|
|
|
|
}
|
|
|
|
});
|
|
|
|
Navigation.navigate('RoomsListView');
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
logEvent(events.ROOM_MSG_ACTION_UNREAD_F);
|
|
|
|
log(e);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handlePermalink = async (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_PERMALINK);
|
|
|
|
try {
|
2022-04-28 18:44:40 +00:00
|
|
|
const permalink = await getPermalink(message);
|
|
|
|
Clipboard.setString(permalink ?? '');
|
2021-10-01 18:12:19 +00:00
|
|
|
EventEmitter.emit(LISTENER, { message: I18n.t('Permalink_copied_to_clipboard') });
|
|
|
|
} catch {
|
|
|
|
logEvent(events.ROOM_MSG_ACTION_PERMALINK_F);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleCopy = async (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_COPY);
|
2022-04-28 18:44:40 +00:00
|
|
|
await Clipboard.setString((message?.attachments?.[0]?.description || message.msg) ?? '');
|
2021-10-01 18:12:19 +00:00
|
|
|
EventEmitter.emit(LISTENER, { message: I18n.t('Copied_to_clipboard') });
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleShare = async (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_SHARE);
|
|
|
|
try {
|
2022-04-28 18:44:40 +00:00
|
|
|
const permalink = await getPermalink(message);
|
|
|
|
if (permalink) {
|
|
|
|
Share.share({ message: permalink });
|
|
|
|
}
|
2021-10-01 18:12:19 +00:00
|
|
|
} catch {
|
|
|
|
logEvent(events.ROOM_MSG_ACTION_SHARE_F);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleQuote = (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_QUOTE);
|
|
|
|
replyInit(message, false);
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleStar = async (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(message.starred ? events.ROOM_MSG_ACTION_UNSTAR : events.ROOM_MSG_ACTION_STAR);
|
|
|
|
try {
|
2022-04-28 18:44:40 +00:00
|
|
|
await RocketChat.toggleStarMessage(message.id, message.starred as boolean); // TODO: reevaluate `message.starred` type on IMessage
|
2021-10-01 18:12:19 +00:00
|
|
|
EventEmitter.emit(LISTENER, { message: message.starred ? I18n.t('Message_unstarred') : I18n.t('Message_starred') });
|
|
|
|
} catch (e) {
|
|
|
|
logEvent(events.ROOM_MSG_ACTION_STAR_F);
|
|
|
|
log(e);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handlePin = async (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_PIN);
|
|
|
|
try {
|
2022-04-28 18:44:40 +00:00
|
|
|
await RocketChat.togglePinMessage(message.id, message.pinned as boolean); // TODO: reevaluate `message.pinned` type on IMessage
|
2021-10-01 18:12:19 +00:00
|
|
|
} catch (e) {
|
|
|
|
logEvent(events.ROOM_MSG_ACTION_PIN_F);
|
|
|
|
log(e);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleReaction: IHeader['handleReaction'] = (shortname, message) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_REACTION);
|
|
|
|
if (shortname) {
|
2022-04-28 18:44:40 +00:00
|
|
|
// TODO: evaluate unification with IEmoji
|
|
|
|
onReactionPress(shortname as any, message.id);
|
2021-10-01 18:12:19 +00:00
|
|
|
} else {
|
|
|
|
reactionInit(message);
|
|
|
|
}
|
|
|
|
// close actionSheet when click at header
|
|
|
|
hideActionSheet();
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleReadReceipt = (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
if (isMasterDetail) {
|
|
|
|
Navigation.navigate('ModalStackNavigator', { screen: 'ReadReceiptsView', params: { messageId: message.id } });
|
|
|
|
} else {
|
|
|
|
Navigation.navigate('ReadReceiptsView', { messageId: message.id });
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-03-29 18:53:27 +00:00
|
|
|
const handleToggleTranslation = async (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
try {
|
2022-03-29 18:53:27 +00:00
|
|
|
if (!room.autoTranslateLanguage) {
|
|
|
|
return;
|
|
|
|
}
|
2021-10-01 18:12:19 +00:00
|
|
|
const db = database.active;
|
Merge 4.25.0 into single-server (#3790)
* Chore: Migrate DefaultBrowserView to Typescript (#3488)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate PickerView to Typescript (#3501)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate AttachmentView to Typescript (#3483)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate MarkdownTableView to Typescript (#3500)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2EEncryptionSecurityView to Typescript (#3489)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2EEnterYourPasswordView to Typescript (#3490)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2EHowItWorksView to Typescript (#3492)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2ESaveYourPasswordView to Typescript (#3493)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ForgotPasswordView to Typescript (#3496)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ForwardLivechatView to Typescript (#3497)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate JitsiMeetView to Typescript (#3498)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] Push notifications user preference not syncing correctly (#3494)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] Display prefs showing wrong header icon on tablet (#3510)
* Merge 4.22.0 into master (#3523)
* Tests: Make Detox work on Android (#3051)
* Chore: Migrate NewMessageView to Typescript (#3502)
* Chore: Migrate ScreenLockConfigView to Typescript (#3517)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ScreenLockedView to Typescript (#3515)
* Chore: Migrate SecurityPrivacyView to Typescript (#3518)
* Chore: Migrate SelectListView to Typescript (#3519)
* Chore: Migrate SelectServerView to Typescript (#3521)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate SetUsernameView to Typescript (#3526)
* Chore: Migrate ThemeView to Typescript (#3522)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate StatusView to Typescript (#3527)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate ShareListView to Typescript (#3459)
Co-authored-by: Gerzon Z <gerzonc@icloud.com>
* Chore: Migrate TeamChannelsView to Typescript (#3532)
Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com>
* Language update from LingoHub 🤖 (#3529)
Project Name: Rocket.Chat.ReactNative
Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative
User: Robot LingoHub
Easy language translations with LingoHub 🚀
Co-authored-by: Robot LingoHub <robot@lingohub.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate react-navigation to TypeScript (#3480)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Bump version to 4.23.0 (#3546)
* [FIX] Certificate stops working after app update on iOS (#3537)
* [IMPROVE] Connection stability (#3531)
* [NEW] Permission for uploading files (#3505)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] Files screen stopped listing content on server 4.2 (#3541)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ModalBlockView to Typescript (#3503)
* Chore: Migrate ModalBlockView to Typescript
* minor tweaks
* update the navigator
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate SelectedUsersView to Typescript (#3520)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [IMPROVE] Remove Omnichannel visitor's navigation history (#3534)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Merge 4.23.0 into master (#3574)
* [FIX] Download video/quicktime in iOS (#3581)
* Chore: Migrate Redux to Typescript PoC (#3565)
* Chore: Migrate Model's folder to Typescript (#3564)
* Chore: Migrate lib user preferences to Typescript (#3578)
* Chore: Update React Native Device Info to 8.4.8 (#3560)
* [FIX] Roles rendering on dark theme (#3589)
* fix: Add height verification to fix modal dimension (#3573)
* chore: Change the lib `@types/url-parse` to devDependencies (#3585)
* [FIX] teams.removeMembers mobile usage (#3557)
* Chore: Migrate DisplayPrefsView to Typescript (#3555)
* Chore: Migrate Utils Folder to Typescript (#3544)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate ThreadMessagesView to Typescript (#3538)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* [FIX] RoomInfoView displaying different info depending on the origin (#3586)
Co-authored-by: GleidsonDaniel <gleidson10daniel@hotmail.com>
* [FIX] Message parser switch not updating field properly (#3576)
* [FIX] Lint not ignoring Markdown props (#3600)
* Bump version to 4.24.0 (#3601)
* Chore: Migrate notification/push to Typescript (#3587)
* chore: migrate connect to ts and add tests
* chore: add more tests
* Chore: Update react-native-device-info patch-package and pods (#3605)
* [FIX] App crashes when entering server after applying certificate (Android) (#3579)
* chore: migrate redux module encryption to typescript
* chore: migrate customEmoji to typescript and add tests
* chore: create IPreferences interface
* chore: migrate redux module sortPreferences to typescript
* chore: fix IPreference interface and organize import
* chore: migrate to typescript
* chore: migrate usersTyping to typescript
* Add DiscussionDetails and Item for DiscussionsView; update ThreadDetails, BackgroundContainer and DiscussionsView
* chore: migrate settings to typescript
* chore: add interface to IStateAplication
* chore: migrate redux module room to typescript
* update definitions
* chore: fix error on error interface
* [FIX] Joining and leaving messages in teams (#3591)
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* minor tweak
* [FIX] TypeScript's errors raised by HOCs (#3535)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* chore: migrate redux module roles to typescript
* wip: add IRoles to IAplicationState interface
* add storybooks, update snapshots and DiscussionsView
* Minor tweaks
* Fix lint
* Remove unused import
* chore: migrate redux module inviteUsers to typescript
* chore: migrate messages action to typescript
* chore: fix any interface and change null to empty string
* chore: implements IAplicationState on type
* chore: remove mapDispatchToProps and continue ts migration
* chore: fix types and apply IAplicationState to types
* Migrate redux server action/reducer to ts
* add tests
* [FIX] App crashes when opening a notification while app is closed (#3629)
* [FIX] makeThreadName asserting undefined as non-null (#3628)
* [FIX] Threads' pagination not working (#3631)
* update tests
* chore: update settings value types
* Send missing params to selectServerRequest
* [IMPROVE] Convert HEIC images to JPG and remove compression (#3633)
* update interface
* update action definition
* Move onDiscussionpress logic on message, update SearchHeader and DiscussionDetails component, add useLayoutEffect at DiscussionsView
* Update interfaces and minor tweaks to DiscussionsView screen and components
* Fix navigation logic and update interfaces
* Minor tweaks
* Undo change on project.pbxproj
* Update project.pbxproj
* Update project.pbxproj
* Remove style.ts
* Minor tweak
* update snapshots
* Merge 4.24.0 into master (#3648)
* Chore: Change console.log to console.error when logging error
* chore: add as string to fix type
* Fix lint
* fix types
* test
* Remove console.log
* test
* [FIX] StoryShots not working for async rendered components (#3677)
* remove console.log
* Add missing DiscussionsView snapshot
* fix build and useless done and async generator
* update snapshot
* Chore: fix build and useless done and async generator (#3678)
* fix build and useless done and async generator
* update snapshot
* Chore: Migrate Database to Typescript (#3580)
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate redux module permissions to typescript (#3630)
* Chore: Migrate redux module share to typescript (#3612)
* chore: migrate redux module share to typescript
* chore: fix types
* chore: update types
* chore: migrate redux module share to typescript
* remove double import
* chore: fix import
* Chore: Migrate redux module createChannel to typescript (#3602)
* chore: migrate createChannel to ts and add tests
* chore: fix naming
* chore: add more types and remove mapDispatchToProps from components
* remove todo
* update tests
* chore: migrate interface to reducer and fix errors on return
* chore: insert IApplicationState to mapStateToProps state type
* Remove spread
* fix type
* fix import and state type
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate redux module app to typescript (#3598)
* chore: migrate activeUsers reducer and action to TS
* chore: init types folder and set redux and BaseScreen interface
* chore: remove mapDispatchToProps to use dispatch prop and clear some types
* chore: type selectedUsers action and reducer and improvement in the code of other files
* chore: move IUser to base types
* chore: move state props to ISelectedUsersViewProps
* chore: create mocketStore
* chore: remove applyAppStateMiddleware
* test: create activeUser and selectedUser tests
* test: add more selectedUsers tests
* chore: fix action type
* chore: move types to definition folder and fix imports
* chore: remove unused const
* chore: migrate redux tests to reducer folder and add eslint jest plugin
* chore: exprot initial state and then import on tests
* chore: move interfaces to reducer and import on screen
* chore: set eslint-plugin-jest version to 24.7.0
* chore: fix IUser import
* chore: update interfaces and types names
* chore: update definitions
* chore: update IBaseScreen definitions
* chore: init reducer/app migration to ts
* chore: add tests and migrate RootEnum
* wip: migrate fixed consts to RootEnum
* chore: remove redux action inferences
* fix types
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate redux module createDiscussion to typescript (#3604)
* chore: migrate createDiscussion to ts and add tests
* chore: add TActionCreateDiscussion to TApplicationActions
* fix types
* update types
* fix types
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] ios-testflight-experimental unable to find cache (#3684)
* Chore: Remove Non-null assertion operator in ThreadMessagesView (#3632)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate CannedResponsesListView to Typescript (#3553)
* Chore: Migrate CannedResponsesListView to TS
* Moved IcannedResponse to definitions and fixed the index
* Chore: Migrate CannedResponseDetail to TS
* minor tweaks
* refactor: update new types and interfaces for use ISubscription
* fix lint error and canned responses's dropdown
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate LivechatEditView to Typescript (#3499)
* Chore: Migrate LivechatEditView to Typescript
* refactor: minor tweak
* refactor: fix the interfaces for input
* refactor: fix lint erros
* minor tweak with new navigation types
* function
* iroom tweak
* livechateditview tweak
* TextInput tweak
* refactor: update new types and interfaces for use ISubscription
* refactor to default useState type
* change the component name in SearchBox
* changed state type
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Gerzon Z <gerzonc@icloud.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Regression: Message press navigating to empty RoomView (#3680)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Regression: Prevent duplicated .jpg on file upload (#3658)
* [FIX] Regression: Prevent duplicated .jpg on file upload
* refactor to all files typed as image/jpeg
* isolate regexp to function
* refactor forceJpgExtension
* clean
* minor tweak
* [FIX] Regression: Prevent duplicated .jpg on file upload
* refactor to all files typed as image/jpeg
* isolate regexp to function
* refactor forceJpgExtension
* clean
* minor tweak
* refactored comment
* Chore: Migrate lib/utils to TypeScript (#3637)
* Migrate utils to TypeScript
* Add @types/semver
* Refactor compareServerVersion(currentVersion, oldVersion, func) to compareServerVersion(current, func, oldVersion)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate readMessages to TS (#3669)
* Migrate readMessages to TS
* Update IRocketChat interface
* [FIX] Unnecessary login dispatch on adding new server (#3693)
* [FIX] Disable tap gesture on call messages (#3694)
* [IMPROVE] Keep biometry option from last session (#3668)
Co-authored-by: GleidsonDaniel <gleidson10daniel@hotmail.com>
Co-authored-by: Reinaldo Neto <reinaldonetof@hotmail.com>
* Fix reactotron multiple connections (#3622)
* Chore: Fix rocketchat interface (#3705)
* Chore: Migrate logout to Typescript (#3688)
* [NEW] Stream to get individual presence updates (#3606)
Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com>
* [FIX] Inject Redux store to prevent/remove require cycles (#3691)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate lib/rocketchat.js to TS - structure PoC (#3661)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
* [FIX] #3606 merged using wrong JS SDK branch (#3709)
* [FIX] Remove deprecated database methods and other database operations (#3686)
* Fix PK error on subscriptions/room
* Instead of checking for pending update, wrap the call on a try catch and return null in case of error
* Generate delete operations before create/update to prevent errors
* Apply same logic on encryption
* Fix database operations on getRoles
* Fix a few database issues found on Bugsnag on ThreadMessagesView
* Run prettier :(
* Chore: Add REST API definitions from server (#3721)
* create first definitions
* chore: implements get and post types
* fix lint
* add ts-ignore
* add teams.removeRoom method
* Remove unused endpoints
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Move some methods to SDK (#3736)
* [IMPROVE] Add support for ephemeral messages inside threads (#3687)
* Chore: dehydrate small server requests away from rocketchat.js (#3740)
* Bump version to 4.25.0 (#3745)
* [Snyk] Security upgrade url-parse from 1.5.1 to 1.5.6 (#3746)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-URLPARSE-2401205
* Language update from LingoHub 🤖 on 2022-02-14Z (#3730)
* Language update from LingoHub 🤖
Project Name: Rocket.Chat.ReactNative
Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative
User: Robot LingoHub
Easy language translations with LingoHub 🚀
* remove draft gl
Co-authored-by: Robot LingoHub <robot@lingohub.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/getSingleMessage to TS (#3700)
* migrate getSingleMessage to TS
* minor tweak
* Chore: Migrate methods/getRooms to TS (#3702)
* migrate getRooms to TS
* add sdk and set any types
* Moved the new variable around and added ts-ignore to follow the pattern from /services/restApi.ts
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate updateMessages to Typescript (#3715)
* Chore: Migrate selector/login to TS (#3731)
* migrate selector/login to TS
* Fix lint errors
* set aliases for returns
* Chore: Migrate helpers/parseUrls to Typescript (#3735)
* Chore: Migrate methods/helpers/parseQuery to Typescript (#3742)
* Chore: Migrate methods/helpers/parseQuery to Typescript
* tweak in example
* Chore: Migrate app/commands to typescript (#3697)
* Chore: Migrate lib/encryption folder to TypeScript (#3639)
* Initial commit
* add types/bytebuffer, add type definitions to params and update interfaces
* add more types and type assertions
* update types
* change bang operator by type assertion and update class variables definitions
* add types for deferred class
* minor tweaks on types definitions
* add ts-ignore
* Update encryption.ts
* update deferred and encryption
* update encryption.ts
* Update room.ts
* update toDecrypt type
* initialize sessionKeyExportedString
* remove return types
* Chore: Migrate redux actions/enterpriseModules to TS (#3698)
* migrate enterpriseModules to TS
* update test file
* Chore: Migrate database/services and database/utils to TS (#3708)
* migrate database services and utils to ts
* Migrate tests
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate buildMessage to TS (#3732)
* migrate buildMessage to TS
* Fix lint
* minor tweak
* minor tweaks
* Chore: Migrate getPermissions to Typescript (#3720)
* Migrating...
* Fix IPermission
* Playing with types
* Remove `as const`
* Fix lint
* Fix test
* Apply sdk
* Fix lint and autocomplete
* [FIX] Add search and fix pagination for omnichannels departments (#3621)
* [FIX] Search and pagination for omnichannels departments
* pagination complete
* minor tweak
* renamed a param and workaround for a ux bug
* fix style of flatlist and search as header scrollable
* stick the header
* Merge branch 'fix.forward-department-list' of https://github.com/RocketChat/Rocket.Chat.ReactNative into fix.forward-department-list
* refactor pagination
* fix value type
* refactor render search
* refactor layout
* make ts happy
* Chore: Migrate Markdown to Typescript (#3558)
* Chore: Migrate Markdown to TS
* Chore: Migrate Markdown to TS
* minor tweak
* added preview where markdown was preview and fixed params within markdown
* removed ts-ignore
* fix lint
* removed numbersofline={0} and default value to numberOfLines=1
* change how to import markdown preview and remove numberOfLines
* using useTheme inside markdownPreview and remove theme from components
* minor tweak on interfaces
* isNewMarkdown return as boolean
* minor tweaks
* minor tweaks
* removed unused component
* fixed markdown stories
* updated snapshot because removed numberOfLines={0} from message/content
* create IEmoji.ts in definitions and refactor all places where getCustomEmoji was called
* onLinkPress typed
* todo: refactor navtoroominfo
* formatText.test.ts
* markdown stories to typescript too
* minor tweak
* IMessage definition
* refactor: update new types and interfaces for use ISubscription
* refactor: update threadItem for use new MarkdownPreview
* refactor: rollback wrong file commited
* formatHyperlink
* fix lint
* updated item story shot
* refactor and refactor some types
* Remove non-null assertion
* Minor change on useRealName
* tweak
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/callJitsi to typescript (#3660)
* chore: migrate callJitsi to typescript
* change fixed string to type
* wip
* wip
* back to old times :)
* back to typescript
* Chore: Migrate redux module room to typescript (#3636)
* chore: migrate redux module room to typescript and remove dispatch on dependencies
* chore: add tests to redux module room
* chore: create ERoomType and use on implemention
* chore: update enum name
* fix test id
* Chore: Migrate redux module login to typescript (#3647)
* chore: migrate redux module login to typescript
chore: update redux module login tests
* update workers
* wip
* fix type
* remove partial
* add more status
* migrate the rest of the stuff to typescript
* fix tests and types
* fix types and tests
* Chore: Migrate method getSettings to typescript (#3703)
* chore: migrate getSettings to typescript and and some types
* chore: remove this and add current to code
* chore: add current
* Chore: Migrate getCustomEmojis to TS (#3724)
* update customEmoji interface and getCustomEmoji
* add sdk
* updated emojiCustom rest definition
* minor refactor
* update params object
* [FIX] getRooms request using param with wrong name (#3761)
* Chore: Migrate methods/getRoomInfo to TS (#3695)
* migrate getRoomInfo to TS
* update room type
* update types
* Fix lint error
* Chore: Migrate getSlashCommands to TS (#3711)
* migrate getSlashCommands to TS
* use sdk and update getSlashCommands
* minor tweak
* Remove implicit anys
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate getUsersPresence to TS (#3717)
* migrate getUsersPresence to ts
* use sdk and remove this context from getUsersPresence
* Chore: Migrate loadMissedMessages to typescript (#3704)
* chore: migrate loadMissedMessages to typescript
* remove loaderItem
* remove this from functions
* Chore: Migrate methods/getRoles to Typescript (#3741)
* chore: migrate getRoles to ts
* chore: removing unused const
* chore: minor tweak
* Type batch
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/loadMessagesForRoom to Typescript (#3701)
* chore: change loadMessagesForRoom to typescript
* minor tweak
* chore: minor tweaks after merge with developer
* chore: minor tweaks after merge with developer
* chore: minor tweak
* chore: minor tweaks
* Fix return
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
* Chore: Migrate methods/sendFileMessage to typescript (#3683)
* chore: start the migration
* chore: update sendFileMessage to ts
* chore: removing an `any` from uploadQueue
* chore: minor tweak
* chore: minor tweak
* chore: minor tweaks after merge with developer
* chore: minor tweak after merge develop into current
* [FIX] Differ to Last Session Authenticated (#3667)
* [FIX] Differ to Last Session Authenticated
* Added timesync
* [FIX] Differ to Last Session Authenticated
* Added timesync
* timesync tweaks
* refactor diffLastLocalSession and saveLastLocalAuthentication
* did a race
* Update comment in app/utils/localAuthentication.ts
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* refactor getServerTimeSync and when use this route
* tweak
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/loadNextMessages to typescript (#3719)
* feat: update loadNextMessages to ts
* minor tweak
* chore: minor tweaks after merge with developer
* chore: migrate getFileUrlFromMessage to ts (#3734)
* [IMPROVE] Team system messages feedback (#3771) (#3772)
* almost there
* Update stories
Co-authored-by: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com>
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com>
Co-authored-by: Gerzon Z <gerzonc@icloud.com>
Co-authored-by: Anant Bhasin <38764067+aKn1ghtOut@users.noreply.github.com>
Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com>
Co-authored-by: lingohub[bot] <69908207+lingohub[bot]@users.noreply.github.com>
Co-authored-by: Robot LingoHub <robot@lingohub.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
Co-authored-by: Danish Ahmed Mirza <77742477+try-catch-stack@users.noreply.github.com>
Co-authored-by: Reinaldo Neto <reinaldonetof@hotmail.com>
Co-authored-by: Snyk bot <snyk-bot@snyk.io>
2022-02-28 19:03:42 +00:00
|
|
|
await db.write(async () => {
|
|
|
|
await message.update(m => {
|
2021-10-01 18:12:19 +00:00
|
|
|
m.autoTranslate = !m.autoTranslate;
|
|
|
|
m._updatedAt = new Date();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
const translatedMessage = getMessageTranslation(message, room.autoTranslateLanguage);
|
|
|
|
if (!translatedMessage) {
|
|
|
|
const m = {
|
|
|
|
_id: message.id,
|
Merge 4.25.0 into single-server (#3790)
* Chore: Migrate DefaultBrowserView to Typescript (#3488)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate PickerView to Typescript (#3501)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate AttachmentView to Typescript (#3483)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate MarkdownTableView to Typescript (#3500)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2EEncryptionSecurityView to Typescript (#3489)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2EEnterYourPasswordView to Typescript (#3490)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2EHowItWorksView to Typescript (#3492)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate E2ESaveYourPasswordView to Typescript (#3493)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ForgotPasswordView to Typescript (#3496)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ForwardLivechatView to Typescript (#3497)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate JitsiMeetView to Typescript (#3498)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] Push notifications user preference not syncing correctly (#3494)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] Display prefs showing wrong header icon on tablet (#3510)
* Merge 4.22.0 into master (#3523)
* Tests: Make Detox work on Android (#3051)
* Chore: Migrate NewMessageView to Typescript (#3502)
* Chore: Migrate ScreenLockConfigView to Typescript (#3517)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ScreenLockedView to Typescript (#3515)
* Chore: Migrate SecurityPrivacyView to Typescript (#3518)
* Chore: Migrate SelectListView to Typescript (#3519)
* Chore: Migrate SelectServerView to Typescript (#3521)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate SetUsernameView to Typescript (#3526)
* Chore: Migrate ThemeView to Typescript (#3522)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate StatusView to Typescript (#3527)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate ShareListView to Typescript (#3459)
Co-authored-by: Gerzon Z <gerzonc@icloud.com>
* Chore: Migrate TeamChannelsView to Typescript (#3532)
Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com>
* Language update from LingoHub 🤖 (#3529)
Project Name: Rocket.Chat.ReactNative
Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative
User: Robot LingoHub
Easy language translations with LingoHub 🚀
Co-authored-by: Robot LingoHub <robot@lingohub.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate react-navigation to TypeScript (#3480)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Bump version to 4.23.0 (#3546)
* [FIX] Certificate stops working after app update on iOS (#3537)
* [IMPROVE] Connection stability (#3531)
* [NEW] Permission for uploading files (#3505)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] Files screen stopped listing content on server 4.2 (#3541)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate ModalBlockView to Typescript (#3503)
* Chore: Migrate ModalBlockView to Typescript
* minor tweaks
* update the navigator
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate SelectedUsersView to Typescript (#3520)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [IMPROVE] Remove Omnichannel visitor's navigation history (#3534)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Merge 4.23.0 into master (#3574)
* [FIX] Download video/quicktime in iOS (#3581)
* Chore: Migrate Redux to Typescript PoC (#3565)
* Chore: Migrate Model's folder to Typescript (#3564)
* Chore: Migrate lib user preferences to Typescript (#3578)
* Chore: Update React Native Device Info to 8.4.8 (#3560)
* [FIX] Roles rendering on dark theme (#3589)
* fix: Add height verification to fix modal dimension (#3573)
* chore: Change the lib `@types/url-parse` to devDependencies (#3585)
* [FIX] teams.removeMembers mobile usage (#3557)
* Chore: Migrate DisplayPrefsView to Typescript (#3555)
* Chore: Migrate Utils Folder to Typescript (#3544)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* Chore: Migrate ThreadMessagesView to Typescript (#3538)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
* [FIX] RoomInfoView displaying different info depending on the origin (#3586)
Co-authored-by: GleidsonDaniel <gleidson10daniel@hotmail.com>
* [FIX] Message parser switch not updating field properly (#3576)
* [FIX] Lint not ignoring Markdown props (#3600)
* Bump version to 4.24.0 (#3601)
* Chore: Migrate notification/push to Typescript (#3587)
* chore: migrate connect to ts and add tests
* chore: add more tests
* Chore: Update react-native-device-info patch-package and pods (#3605)
* [FIX] App crashes when entering server after applying certificate (Android) (#3579)
* chore: migrate redux module encryption to typescript
* chore: migrate customEmoji to typescript and add tests
* chore: create IPreferences interface
* chore: migrate redux module sortPreferences to typescript
* chore: fix IPreference interface and organize import
* chore: migrate to typescript
* chore: migrate usersTyping to typescript
* Add DiscussionDetails and Item for DiscussionsView; update ThreadDetails, BackgroundContainer and DiscussionsView
* chore: migrate settings to typescript
* chore: add interface to IStateAplication
* chore: migrate redux module room to typescript
* update definitions
* chore: fix error on error interface
* [FIX] Joining and leaving messages in teams (#3591)
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* minor tweak
* [FIX] TypeScript's errors raised by HOCs (#3535)
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* chore: migrate redux module roles to typescript
* wip: add IRoles to IAplicationState interface
* add storybooks, update snapshots and DiscussionsView
* Minor tweaks
* Fix lint
* Remove unused import
* chore: migrate redux module inviteUsers to typescript
* chore: migrate messages action to typescript
* chore: fix any interface and change null to empty string
* chore: implements IAplicationState on type
* chore: remove mapDispatchToProps and continue ts migration
* chore: fix types and apply IAplicationState to types
* Migrate redux server action/reducer to ts
* add tests
* [FIX] App crashes when opening a notification while app is closed (#3629)
* [FIX] makeThreadName asserting undefined as non-null (#3628)
* [FIX] Threads' pagination not working (#3631)
* update tests
* chore: update settings value types
* Send missing params to selectServerRequest
* [IMPROVE] Convert HEIC images to JPG and remove compression (#3633)
* update interface
* update action definition
* Move onDiscussionpress logic on message, update SearchHeader and DiscussionDetails component, add useLayoutEffect at DiscussionsView
* Update interfaces and minor tweaks to DiscussionsView screen and components
* Fix navigation logic and update interfaces
* Minor tweaks
* Undo change on project.pbxproj
* Update project.pbxproj
* Update project.pbxproj
* Remove style.ts
* Minor tweak
* update snapshots
* Merge 4.24.0 into master (#3648)
* Chore: Change console.log to console.error when logging error
* chore: add as string to fix type
* Fix lint
* fix types
* test
* Remove console.log
* test
* [FIX] StoryShots not working for async rendered components (#3677)
* remove console.log
* Add missing DiscussionsView snapshot
* fix build and useless done and async generator
* update snapshot
* Chore: fix build and useless done and async generator (#3678)
* fix build and useless done and async generator
* update snapshot
* Chore: Migrate Database to Typescript (#3580)
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate redux module permissions to typescript (#3630)
* Chore: Migrate redux module share to typescript (#3612)
* chore: migrate redux module share to typescript
* chore: fix types
* chore: update types
* chore: migrate redux module share to typescript
* remove double import
* chore: fix import
* Chore: Migrate redux module createChannel to typescript (#3602)
* chore: migrate createChannel to ts and add tests
* chore: fix naming
* chore: add more types and remove mapDispatchToProps from components
* remove todo
* update tests
* chore: migrate interface to reducer and fix errors on return
* chore: insert IApplicationState to mapStateToProps state type
* Remove spread
* fix type
* fix import and state type
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate redux module app to typescript (#3598)
* chore: migrate activeUsers reducer and action to TS
* chore: init types folder and set redux and BaseScreen interface
* chore: remove mapDispatchToProps to use dispatch prop and clear some types
* chore: type selectedUsers action and reducer and improvement in the code of other files
* chore: move IUser to base types
* chore: move state props to ISelectedUsersViewProps
* chore: create mocketStore
* chore: remove applyAppStateMiddleware
* test: create activeUser and selectedUser tests
* test: add more selectedUsers tests
* chore: fix action type
* chore: move types to definition folder and fix imports
* chore: remove unused const
* chore: migrate redux tests to reducer folder and add eslint jest plugin
* chore: exprot initial state and then import on tests
* chore: move interfaces to reducer and import on screen
* chore: set eslint-plugin-jest version to 24.7.0
* chore: fix IUser import
* chore: update interfaces and types names
* chore: update definitions
* chore: update IBaseScreen definitions
* chore: init reducer/app migration to ts
* chore: add tests and migrate RootEnum
* wip: migrate fixed consts to RootEnum
* chore: remove redux action inferences
* fix types
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate redux module createDiscussion to typescript (#3604)
* chore: migrate createDiscussion to ts and add tests
* chore: add TActionCreateDiscussion to TApplicationActions
* fix types
* update types
* fix types
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [FIX] ios-testflight-experimental unable to find cache (#3684)
* Chore: Remove Non-null assertion operator in ThreadMessagesView (#3632)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate CannedResponsesListView to Typescript (#3553)
* Chore: Migrate CannedResponsesListView to TS
* Moved IcannedResponse to definitions and fixed the index
* Chore: Migrate CannedResponseDetail to TS
* minor tweaks
* refactor: update new types and interfaces for use ISubscription
* fix lint error and canned responses's dropdown
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate LivechatEditView to Typescript (#3499)
* Chore: Migrate LivechatEditView to Typescript
* refactor: minor tweak
* refactor: fix the interfaces for input
* refactor: fix lint erros
* minor tweak with new navigation types
* function
* iroom tweak
* livechateditview tweak
* TextInput tweak
* refactor: update new types and interfaces for use ISubscription
* refactor to default useState type
* change the component name in SearchBox
* changed state type
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Gerzon Z <gerzonc@icloud.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Regression: Message press navigating to empty RoomView (#3680)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Regression: Prevent duplicated .jpg on file upload (#3658)
* [FIX] Regression: Prevent duplicated .jpg on file upload
* refactor to all files typed as image/jpeg
* isolate regexp to function
* refactor forceJpgExtension
* clean
* minor tweak
* [FIX] Regression: Prevent duplicated .jpg on file upload
* refactor to all files typed as image/jpeg
* isolate regexp to function
* refactor forceJpgExtension
* clean
* minor tweak
* refactored comment
* Chore: Migrate lib/utils to TypeScript (#3637)
* Migrate utils to TypeScript
* Add @types/semver
* Refactor compareServerVersion(currentVersion, oldVersion, func) to compareServerVersion(current, func, oldVersion)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate readMessages to TS (#3669)
* Migrate readMessages to TS
* Update IRocketChat interface
* [FIX] Unnecessary login dispatch on adding new server (#3693)
* [FIX] Disable tap gesture on call messages (#3694)
* [IMPROVE] Keep biometry option from last session (#3668)
Co-authored-by: GleidsonDaniel <gleidson10daniel@hotmail.com>
Co-authored-by: Reinaldo Neto <reinaldonetof@hotmail.com>
* Fix reactotron multiple connections (#3622)
* Chore: Fix rocketchat interface (#3705)
* Chore: Migrate logout to Typescript (#3688)
* [NEW] Stream to get individual presence updates (#3606)
Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com>
* [FIX] Inject Redux store to prevent/remove require cycles (#3691)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate lib/rocketchat.js to TS - structure PoC (#3661)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
* [FIX] #3606 merged using wrong JS SDK branch (#3709)
* [FIX] Remove deprecated database methods and other database operations (#3686)
* Fix PK error on subscriptions/room
* Instead of checking for pending update, wrap the call on a try catch and return null in case of error
* Generate delete operations before create/update to prevent errors
* Apply same logic on encryption
* Fix database operations on getRoles
* Fix a few database issues found on Bugsnag on ThreadMessagesView
* Run prettier :(
* Chore: Add REST API definitions from server (#3721)
* create first definitions
* chore: implements get and post types
* fix lint
* add ts-ignore
* add teams.removeRoom method
* Remove unused endpoints
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Move some methods to SDK (#3736)
* [IMPROVE] Add support for ephemeral messages inside threads (#3687)
* Chore: dehydrate small server requests away from rocketchat.js (#3740)
* Bump version to 4.25.0 (#3745)
* [Snyk] Security upgrade url-parse from 1.5.1 to 1.5.6 (#3746)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-URLPARSE-2401205
* Language update from LingoHub 🤖 on 2022-02-14Z (#3730)
* Language update from LingoHub 🤖
Project Name: Rocket.Chat.ReactNative
Project Link: https://translate.lingohub.com/rocketchat/dashboard/rocket-dot-chat-dot-reactnative
User: Robot LingoHub
Easy language translations with LingoHub 🚀
* remove draft gl
Co-authored-by: Robot LingoHub <robot@lingohub.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/getSingleMessage to TS (#3700)
* migrate getSingleMessage to TS
* minor tweak
* Chore: Migrate methods/getRooms to TS (#3702)
* migrate getRooms to TS
* add sdk and set any types
* Moved the new variable around and added ts-ignore to follow the pattern from /services/restApi.ts
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate updateMessages to Typescript (#3715)
* Chore: Migrate selector/login to TS (#3731)
* migrate selector/login to TS
* Fix lint errors
* set aliases for returns
* Chore: Migrate helpers/parseUrls to Typescript (#3735)
* Chore: Migrate methods/helpers/parseQuery to Typescript (#3742)
* Chore: Migrate methods/helpers/parseQuery to Typescript
* tweak in example
* Chore: Migrate app/commands to typescript (#3697)
* Chore: Migrate lib/encryption folder to TypeScript (#3639)
* Initial commit
* add types/bytebuffer, add type definitions to params and update interfaces
* add more types and type assertions
* update types
* change bang operator by type assertion and update class variables definitions
* add types for deferred class
* minor tweaks on types definitions
* add ts-ignore
* Update encryption.ts
* update deferred and encryption
* update encryption.ts
* Update room.ts
* update toDecrypt type
* initialize sessionKeyExportedString
* remove return types
* Chore: Migrate redux actions/enterpriseModules to TS (#3698)
* migrate enterpriseModules to TS
* update test file
* Chore: Migrate database/services and database/utils to TS (#3708)
* migrate database services and utils to ts
* Migrate tests
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate buildMessage to TS (#3732)
* migrate buildMessage to TS
* Fix lint
* minor tweak
* minor tweaks
* Chore: Migrate getPermissions to Typescript (#3720)
* Migrating...
* Fix IPermission
* Playing with types
* Remove `as const`
* Fix lint
* Fix test
* Apply sdk
* Fix lint and autocomplete
* [FIX] Add search and fix pagination for omnichannels departments (#3621)
* [FIX] Search and pagination for omnichannels departments
* pagination complete
* minor tweak
* renamed a param and workaround for a ux bug
* fix style of flatlist and search as header scrollable
* stick the header
* Merge branch 'fix.forward-department-list' of https://github.com/RocketChat/Rocket.Chat.ReactNative into fix.forward-department-list
* refactor pagination
* fix value type
* refactor render search
* refactor layout
* make ts happy
* Chore: Migrate Markdown to Typescript (#3558)
* Chore: Migrate Markdown to TS
* Chore: Migrate Markdown to TS
* minor tweak
* added preview where markdown was preview and fixed params within markdown
* removed ts-ignore
* fix lint
* removed numbersofline={0} and default value to numberOfLines=1
* change how to import markdown preview and remove numberOfLines
* using useTheme inside markdownPreview and remove theme from components
* minor tweak on interfaces
* isNewMarkdown return as boolean
* minor tweaks
* minor tweaks
* removed unused component
* fixed markdown stories
* updated snapshot because removed numberOfLines={0} from message/content
* create IEmoji.ts in definitions and refactor all places where getCustomEmoji was called
* onLinkPress typed
* todo: refactor navtoroominfo
* formatText.test.ts
* markdown stories to typescript too
* minor tweak
* IMessage definition
* refactor: update new types and interfaces for use ISubscription
* refactor: update threadItem for use new MarkdownPreview
* refactor: rollback wrong file commited
* formatHyperlink
* fix lint
* updated item story shot
* refactor and refactor some types
* Remove non-null assertion
* Minor change on useRealName
* tweak
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/callJitsi to typescript (#3660)
* chore: migrate callJitsi to typescript
* change fixed string to type
* wip
* wip
* back to old times :)
* back to typescript
* Chore: Migrate redux module room to typescript (#3636)
* chore: migrate redux module room to typescript and remove dispatch on dependencies
* chore: add tests to redux module room
* chore: create ERoomType and use on implemention
* chore: update enum name
* fix test id
* Chore: Migrate redux module login to typescript (#3647)
* chore: migrate redux module login to typescript
chore: update redux module login tests
* update workers
* wip
* fix type
* remove partial
* add more status
* migrate the rest of the stuff to typescript
* fix tests and types
* fix types and tests
* Chore: Migrate method getSettings to typescript (#3703)
* chore: migrate getSettings to typescript and and some types
* chore: remove this and add current to code
* chore: add current
* Chore: Migrate getCustomEmojis to TS (#3724)
* update customEmoji interface and getCustomEmoji
* add sdk
* updated emojiCustom rest definition
* minor refactor
* update params object
* [FIX] getRooms request using param with wrong name (#3761)
* Chore: Migrate methods/getRoomInfo to TS (#3695)
* migrate getRoomInfo to TS
* update room type
* update types
* Fix lint error
* Chore: Migrate getSlashCommands to TS (#3711)
* migrate getSlashCommands to TS
* use sdk and update getSlashCommands
* minor tweak
* Remove implicit anys
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate getUsersPresence to TS (#3717)
* migrate getUsersPresence to ts
* use sdk and remove this context from getUsersPresence
* Chore: Migrate loadMissedMessages to typescript (#3704)
* chore: migrate loadMissedMessages to typescript
* remove loaderItem
* remove this from functions
* Chore: Migrate methods/getRoles to Typescript (#3741)
* chore: migrate getRoles to ts
* chore: removing unused const
* chore: minor tweak
* Type batch
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/loadMessagesForRoom to Typescript (#3701)
* chore: change loadMessagesForRoom to typescript
* minor tweak
* chore: minor tweaks after merge with developer
* chore: minor tweaks after merge with developer
* chore: minor tweak
* chore: minor tweaks
* Fix return
Co-authored-by: Diego Mello <diegolmello@gmail.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
* Chore: Migrate methods/sendFileMessage to typescript (#3683)
* chore: start the migration
* chore: update sendFileMessage to ts
* chore: removing an `any` from uploadQueue
* chore: minor tweak
* chore: minor tweak
* chore: minor tweaks after merge with developer
* chore: minor tweak after merge develop into current
* [FIX] Differ to Last Session Authenticated (#3667)
* [FIX] Differ to Last Session Authenticated
* Added timesync
* [FIX] Differ to Last Session Authenticated
* Added timesync
* timesync tweaks
* refactor diffLastLocalSession and saveLastLocalAuthentication
* did a race
* Update comment in app/utils/localAuthentication.ts
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* refactor getServerTimeSync and when use this route
* tweak
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Chore: Migrate methods/loadNextMessages to typescript (#3719)
* feat: update loadNextMessages to ts
* minor tweak
* chore: minor tweaks after merge with developer
* chore: migrate getFileUrlFromMessage to ts (#3734)
* [IMPROVE] Team system messages feedback (#3771) (#3772)
* almost there
* Update stories
Co-authored-by: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com>
Co-authored-by: AlexAlexandre <alexalexandrejr@gmail.com>
Co-authored-by: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com>
Co-authored-by: Gerzon Z <gerzonc@icloud.com>
Co-authored-by: Anant Bhasin <38764067+aKn1ghtOut@users.noreply.github.com>
Co-authored-by: Gerzon Z <gerzonzcanario@gmail.com>
Co-authored-by: lingohub[bot] <69908207+lingohub[bot]@users.noreply.github.com>
Co-authored-by: Robot LingoHub <robot@lingohub.com>
Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
Co-authored-by: Danish Ahmed Mirza <77742477+try-catch-stack@users.noreply.github.com>
Co-authored-by: Reinaldo Neto <reinaldonetof@hotmail.com>
Co-authored-by: Snyk bot <snyk-bot@snyk.io>
2022-02-28 19:03:42 +00:00
|
|
|
rid: message.subscription ? message.subscription.id : '',
|
2021-10-01 18:12:19 +00:00
|
|
|
u: message.u,
|
|
|
|
msg: message.msg
|
|
|
|
};
|
|
|
|
await RocketChat.translateMessage(m, room.autoTranslateLanguage);
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
log(e);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleReport = async (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_MSG_ACTION_REPORT);
|
|
|
|
try {
|
|
|
|
await RocketChat.reportMessage(message.id);
|
|
|
|
Alert.alert(I18n.t('Message_Reported'));
|
|
|
|
} catch (e) {
|
|
|
|
logEvent(events.ROOM_MSG_ACTION_REPORT_F);
|
|
|
|
log(e);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-28 18:44:40 +00:00
|
|
|
const handleDelete = (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
showConfirmationAlert({
|
|
|
|
message: I18n.t('You_will_not_be_able_to_recover_this_message'),
|
|
|
|
confirmationText: I18n.t('Delete'),
|
|
|
|
onPress: async () => {
|
|
|
|
try {
|
|
|
|
logEvent(events.ROOM_MSG_ACTION_DELETE);
|
2022-04-28 18:44:40 +00:00
|
|
|
await RocketChat.deleteMessage(message.id, message.subscription ? message.subscription.id : '');
|
2021-10-01 18:12:19 +00:00
|
|
|
} catch (e) {
|
|
|
|
logEvent(events.ROOM_MSG_ACTION_DELETE_F);
|
|
|
|
log(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
2022-03-29 18:53:27 +00:00
|
|
|
const getOptions = (message: TAnyMessageModel) => {
|
2022-04-28 18:44:40 +00:00
|
|
|
let options: TActionSheetOptionsItem[] = [];
|
2021-10-01 18:12:19 +00:00
|
|
|
|
|
|
|
// Reply
|
|
|
|
if (!isReadOnly) {
|
|
|
|
options = [
|
|
|
|
{
|
|
|
|
title: I18n.t('Reply_in_Thread'),
|
|
|
|
icon: 'threads',
|
|
|
|
onPress: () => handleReply(message)
|
|
|
|
}
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
// Quote
|
|
|
|
if (!isReadOnly) {
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Quote'),
|
|
|
|
icon: 'quote',
|
|
|
|
onPress: () => handleQuote(message)
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Edit
|
|
|
|
if (allowEdit(message)) {
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Edit'),
|
|
|
|
icon: 'edit',
|
|
|
|
onPress: () => handleEdit(message)
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Permalink
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Permalink'),
|
|
|
|
icon: 'link',
|
|
|
|
onPress: () => handlePermalink(message)
|
|
|
|
});
|
|
|
|
|
|
|
|
// Create Discussion
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Start_a_Discussion'),
|
|
|
|
icon: 'discussions',
|
|
|
|
onPress: () => handleCreateDiscussion(message)
|
|
|
|
});
|
|
|
|
|
|
|
|
// Mark as unread
|
|
|
|
if (message.u && message.u._id !== user.id) {
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Mark_unread'),
|
|
|
|
icon: 'flag',
|
|
|
|
onPress: () => handleUnread(message)
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Copy
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Copy'),
|
|
|
|
icon: 'copy',
|
|
|
|
onPress: () => handleCopy(message)
|
|
|
|
});
|
|
|
|
|
|
|
|
// Share
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Share'),
|
|
|
|
icon: 'share',
|
|
|
|
onPress: () => handleShare(message)
|
|
|
|
});
|
|
|
|
|
|
|
|
// Star
|
|
|
|
if (Message_AllowStarring) {
|
|
|
|
options.push({
|
|
|
|
title: I18n.t(message.starred ? 'Unstar' : 'Star'),
|
|
|
|
icon: message.starred ? 'star-filled' : 'star',
|
|
|
|
onPress: () => handleStar(message)
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Pin
|
|
|
|
if (Message_AllowPinning && permissions?.hasPinPermission) {
|
|
|
|
options.push({
|
|
|
|
title: I18n.t(message.pinned ? 'Unpin' : 'Pin'),
|
|
|
|
icon: 'pin',
|
|
|
|
onPress: () => handlePin(message)
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Read Receipts
|
|
|
|
if (Message_Read_Receipt_Store_Users) {
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Read_Receipt'),
|
|
|
|
icon: 'info',
|
|
|
|
onPress: () => handleReadReceipt(message)
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Toggle Auto-translate
|
|
|
|
if (room.autoTranslate && message.u && message.u._id !== user.id) {
|
|
|
|
options.push({
|
|
|
|
title: I18n.t(message.autoTranslate ? 'View_Original' : 'Translate'),
|
|
|
|
icon: 'language',
|
|
|
|
onPress: () => handleToggleTranslation(message)
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Report
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Report'),
|
|
|
|
icon: 'warning',
|
|
|
|
danger: true,
|
|
|
|
onPress: () => handleReport(message)
|
|
|
|
});
|
|
|
|
|
|
|
|
// Delete
|
|
|
|
if (allowDelete(message)) {
|
|
|
|
options.push({
|
|
|
|
title: I18n.t('Delete'),
|
|
|
|
icon: 'delete',
|
|
|
|
danger: true,
|
|
|
|
onPress: () => handleDelete(message)
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
return options;
|
|
|
|
};
|
|
|
|
|
2022-03-29 18:53:27 +00:00
|
|
|
const showMessageActions = async (message: TAnyMessageModel) => {
|
2021-10-01 18:12:19 +00:00
|
|
|
logEvent(events.ROOM_SHOW_MSG_ACTIONS);
|
|
|
|
await getPermissions();
|
|
|
|
showActionSheet({
|
|
|
|
options: getOptions(message),
|
|
|
|
headerHeight: HEADER_HEIGHT,
|
|
|
|
customHeader:
|
|
|
|
!isReadOnly || room.reactWhenReadOnly ? (
|
|
|
|
<Header server={server} handleReaction={handleReaction} isMasterDetail={isMasterDetail} message={message} />
|
|
|
|
) : null
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
useImperativeHandle(ref, () => ({ showMessageActions }));
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
)
|
|
|
|
);
|
2022-04-28 18:44:40 +00:00
|
|
|
const mapStateToProps = (state: IApplicationState) => ({
|
2021-10-01 18:12:19 +00:00
|
|
|
server: state.server.server,
|
2022-04-28 18:44:40 +00:00
|
|
|
Message_AllowDeleting: state.settings.Message_AllowDeleting as boolean,
|
|
|
|
Message_AllowDeleting_BlockDeleteInMinutes: state.settings.Message_AllowDeleting_BlockDeleteInMinutes as number,
|
|
|
|
Message_AllowEditing: state.settings.Message_AllowEditing as boolean,
|
|
|
|
Message_AllowEditing_BlockEditInMinutes: state.settings.Message_AllowEditing_BlockEditInMinutes as number,
|
|
|
|
Message_AllowPinning: state.settings.Message_AllowPinning as boolean,
|
|
|
|
Message_AllowStarring: state.settings.Message_AllowStarring as boolean,
|
|
|
|
Message_Read_Receipt_Store_Users: state.settings.Message_Read_Receipt_Store_Users as boolean,
|
2021-10-01 18:12:19 +00:00
|
|
|
isMasterDetail: state.app.isMasterDetail,
|
|
|
|
editMessagePermission: state.permissions['edit-message'],
|
|
|
|
deleteMessagePermission: state.permissions['delete-message'],
|
|
|
|
forceDeleteMessagePermission: state.permissions['force-delete-message'],
|
|
|
|
pinMessagePermission: state.permissions['pin-message']
|
|
|
|
});
|
|
|
|
|
|
|
|
export default connect(mapStateToProps, null, null, { forwardRef: true })(MessageActions);
|