Commit Graph

25 Commits

Author SHA1 Message Date
Reinaldo Neto 88144441fd
feat: quotes on E2EE Messages (#4880)
* [NEW] Quotes on E2EE Messages

* parser inside the model

* refactor and tweaks

* minor tweak

* add e2e tests to test the e2e quotes

* update storyshot

* added the test for quoted message

---------

Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2023-03-23 19:47:05 -03:00
Diego Mello a1580811ed
[IMPROVE] E2EE improvements (#4763) 2023-01-12 10:32:33 -03:00
Alex Junior 614d9afe65
Chore: Evaluate helpers and utils - Typescript (#4146) 2022-06-06 11:17:51 -03:00
Gleidson Daniel Silva 89e0a40d95
Chore: remove lib/rocketchat step 2 (#4035)
* create index file

* remove roomTypeToApiType from rocketchat and fix imports

* move TOKEN_KEY to const file

* move CURRENT_SERVER to const file

* move CERTIFICATE_KEY to const file

* getRoom

* rename getSlashCommands

* getSlashCommands

* readMessages

* getRooms

* loadThreadMessages

* loadNextMessages

* loadSurroundingMessages

* loadMessagesForRoom

* loadMissedMessages

* clearCache

* canOpenRoom

* setUser

* userPreferencesMethods

* getCustomEmojis

* callJtisi

* triggerActions

* getPermissions

* getRoles

* getSettings

* getUsersPresence

* logout

* sendFileMessage

* shareExtension

* sendMessage

* enterpriseModules

* getPermalinks

* search

* change RocketChat.metodo to direct call

* fix types

* Fix login

* Fix createChannel

* migrate service methods to Service.method call

* change call directly to RocketChat because the use of this

* rollback

* rollback

* fix create discussion

* fix import

Co-authored-by: Diego Mello <diegolmello@gmail.com>
2022-04-28 17:37:25 -03:00
Gleidson Daniel Silva d38c17bcd8
Chore: Create app/lib/store folder (#4028)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
2022-04-07 11:19:54 -03:00
Gleidson Daniel Silva bdf83e546e
Chore: Move constants away from rocketchat folder - Typescript (#4022)
* create keys file and export all consts

* fix import E2E_MESSAGE_TYPE

* fix constants import

* fix constants import

* fix E2E_BANNER_TYPE import

* fix E2E_ROOM_TYPES import

* fix THEME_PREFERENCES_KEY import

* fix CRASH_REPORT_KEY and ANALYTICS_EVENTS_KEY import

* fix MIN_ROCKETCHAT_VERSION import

* fix constantDisplayMode import

* fix environment imports

* fix links imports

* fix localAuthentication imports

* fix localPath imports

* fix messagesStatus imports

* fix messageTypeLoad imports

* fix defaultSettings imports

* fix tablet imports

* update with todo for colors

* move to lib folder

* change constant/colors to constant
2022-04-07 11:10:03 -03:00
Gleidson Daniel Silva 7d2ae5ea7c
Chore: Evaluate helpers and methods - Typescript (#4030)
* move userPreferences to methods folder

* create formatAttachmentUrl file

* create compareServerVersion file

* create generateLoadMoreId file
2022-04-07 10:13:19 -03:00
Gleidson Daniel Silva 2eba327396
Chore: Evaluate lib/rocketchat structure and files (#3986)
* create TSubscription type

* move logoutOtherLocations to restApis

* mvoe getUserInfo to restApi

* move constants to lib folder

* change Rocketchat methods to sdk methods

* move toggleFavorite to restApis

* move functions to rocketchat folder

* delete old rocketchat file :)

* fix imports

* fix lint and return types

* Fix subscribe to rooms not getting called

Co-authored-by: Diego Mello <diegolmello@gmail.com>
2022-04-04 16:15:29 -03:00
Alex Junior cd00366613
Chore: Update react-native-mmkv-storage to 0.6.12 (#3634)
* chore: updating mmkv library

* feat: updating android ejson to use the getSecureKey new version

* feat: updating IOS files to use the getSecureKey new version

* feat: changing all mmkv methods to use sync calls

* feat: changing mmkv methods from Screen lock

* feat: changing all mmkv methods from login, ssl certificate and change/add server

* feat: changing all mmkv methods from login, ssl certificate and change/add server

* feat: changing all mmkv methods from logout

* feat: changing all mmkv methods from e2e

* fix: small fix at encryption and server drop down

* feat: changing all mmkv methods from set theme

* feat: changing all mmkv methods from openLink

* fix: setting up mmkv to works property on Android

* fix: fix an error to set the theme when open the app

* refactor: change the react-native branch (temporary)

* refactor: removing all `Async` from mmkv functions name

* refactor: removing await from unnecessary functions, removing console.log and update cocoapods

* refactor: removing unnecessary undefined from methods

* feat: creating a custom hook for mmkv

* refactor: changing the fetchPasscode to use the useUserPreferences hook

* refactor: changing setTheme from app/index

* refactor: small fix on setTheme

* chore: update mmkv to 0.6.11

* chore: update mmkv to 0.6.11

* chore: minor tweak

* chore: update mmkv to 0.6.12

* chore: mock NativeModules

* chore: fix test mmkv

* chore: removing custom MMKV JSI module, since is no more necessary after 0.6.11 version

* feat: removing some async calls from mmkv after update from develop

* feat: creating a function to get the initialTheme

* feat: removing unnecessary try/catch

* fix: fixing the blink white when open the app

* feat: changing useMMKVStorage to create from mmkv lib

* test: creating a mock for mmkv create function

* chore: fix errors on tablet

* minor tweak
2022-03-09 16:41:26 -03:00
Reinaldo Neto d506de9f23
Chore: Migrate REST API - e2eGetUsersOfRoomWithoutKey to Typescript (#3793)
* Chore: Migrate REST API - e2eGetUsersOfRoomWithoutKey to Typescript

* Update app/definitions/rest/v1/e2e.ts

Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>

Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2022-03-02 16:53:41 -03:00
Diego Mello 6626510f50
Chore: Migrate RoomActionsView to Typescript (#3750) 2022-03-02 11:49:43 -03:00
Gleidson Daniel Silva 4172d563b7
Chore: Server API types POC - loadMessagesForRoom (#3765)
* create interface and implements base types

* fix some types

* Update app/lib/methods/updateMessages.ts

Co-authored-by: Diego Mello <diegolmello@gmail.com>

* fix date type

* apply types changes

* fix type

* fix date value

* fix types

* typescript things...

Co-authored-by: Diego Mello <diegolmello@gmail.com>
2022-02-25 18:32:03 -03:00
Alex Junior cbfca132c5
Chore: Migrate methods/getThreadName to typescript (#3707)
* chore: change getThreadName to typescript

* chore: change types after merge develop into current

* chore: minor tweak
2022-02-22 13:01:35 -03:00
Gerzon Z 86cc8a7d16
Chore: Migrate buildMessage to TS (#3732)
* migrate buildMessage to TS

* Fix lint

* minor tweak

* minor tweaks
2022-02-16 20:07:24 -04:00
Gerzon Z 352a718631
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
2022-02-16 17:14:28 -04:00
Diego Mello 88d33b42c2
[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 :(
2022-02-10 17:16:10 -03:00
Gleidson Daniel Silva 977cfd2863
[FIX] Inject Redux store to prevent/remove require cycles (#3691)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
2022-02-09 18:16:20 -03:00
Alex Junior 69a67ea998
Chore: Start Typescript migration (#3279) 2021-09-13 17:41:05 -03:00
Gung Wah 98890df773
[CHORE] Use shortcut syntax for get collections (#2932)
Co-authored-by: Diego Mello <diegolmello@gmail.com>
2021-02-26 13:25:51 -03:00
Diego Mello db5074ab70
[NEW] Encrypted Discussions (#2813)
* I18n key fix

* Add encrypted switch

* Remove unused i18n keys

* Add enabled to encryption reducer

* Show encrypted option on CreateDiscussionView only when e2e encryption is properly set

* Add localSearch and use it on search

* Use encrypted from parent channel

* Fix method calls as rest api with 2fa enabled

* Fix logout after reset keys

* Use encryption reducer instead of lib directly to check render

* Check for room type logic to display encryption option on create discussion

* Check toggle-room-e2e-encryption permission on RoomActionsView

* Check for encryption status instead of setting on server

* Fix

* Disable switch instead of hide it

* Fix spotlight for DMs

* Fix server test
2021-01-20 14:34:01 -03:00
Diego Mello 645754674d
[CHORE] Remove some migrations (#2792)
* Remove force rooms refresh

* Remove MMKV migration
2021-01-14 14:06:38 -03:00
Diego Mello fade17d0de
[IMPROVEMENT] Add `Change Encryption Password` and `Reset E2E Key` (#2542)
* init

* Basic tests passing

* Add SecurityPrivacyView

* List.Item

* section

* Start removing theme as prop

* Remove StatusBar theme prop

* SafeAreaView theme prop

* Minor fixes

* List.Container

* Add translateTitle and translateSubtitle props

* Storybook

* Show action indicator

* Header

* Info

* Theme stories

* FlatList

* DisplayName

* Fix settings

* FlatList tweaks

* ThemeView

* Screen Lock Config

* DefaultBrowserView

* PickerView and User Prefs

* Notification Prefs

* StatusView

* Auto Translate

* InviteUsersEdit

* Visitor

* Minor fixes

* Remove Separator

* Remove iteminfo

* Font scale

* Legal

* Jitsi and e2e

* Block

* search, star, etc

* auto translate and notifications

* RoomInfo

* Refactor RoomActions

* lint

* Remove DisclosureIndicator

* padding horizontal 12

* Detox

* Tests

* SecurityPrivacy

* E2E encryption sec view

* stash

* Reset own key

* Reset key

* Change password

* Hide content

* Small refactor

* Fix tests

* Tests passing

* Change test order

* add pt-br

* Address review comments

* tests

* Missing i18n ptbr

Co-authored-by: Djorkaeff Alexandre <djorkaeff.unb@gmail.com>
2020-10-30 15:31:04 -03:00
Djorkaeff Alexandre 60dc128c63
[NEW] E2E Encryption push (iOS) (#2463)
* link pods to notification service

* push encryption poc

* decrypt room key poc

* read user key from mmkv and cast into a pkcs

* push decrypt poc (iOS)

* expose needed watermelon methods

* watermelon -> database

* indent & simple-crypto update

* string extensions

* storage

* toBase64 -> toData

* remove a forced unwrap

* remove unused import

* database driver

* improvement

* folder structure & watermelon bridge

* more improvement stuff

* watermelon -> database

* reuse database instance

* improvement

* database fix: bypass watermelon cache

* some code improvements

* encryption instances

* start api stuff

* network layer

* improve notification service

* improve folder structure

* watermelon patch

* retry fetch logic

* rocketchat class

* fix try to decrypt without a roomKey

* fallback to original content that is translated

* some fixes to rocketchat logic

* merge develop

* remove unnecessary extension

* [CHORE] Improve reply notification code (iOS)

* undo sign changes

* remove mocked value

* import direct from library

* send message request

* reply notification with encrypted message working properly

* revert apple sign

* fix api onerror

* trick to display sender name on group notifications

* revert data.host change

* fix some multithread issues

* use sendername sent by server

* small improvement

* Bump crypto lib

* Update ios/NotificationService/NotificationService.swift

* add experimental string

* remove trailing slash

* remove trailing slash on reply

* fix decrypt messages

Co-authored-by: Diego Mello <diegolmello@gmail.com>
2020-09-24 15:34:13 -03:00
Djorkaeff Alexandre 8ae489074e
[CHORE] Change database location to Experimental Apps (#2483)
* change database location of experimental apps

* fix migration from older versions
2020-09-23 14:16:04 -03:00
Djorkaeff Alexandre 3c9017a62d
[NEW] E2E Encryption (#2394)
* Add E2EKey to Subscription Model

* Install react-native-simple-crypto

* Install bytebuffer

* Add translations

* CreateChannel Encrypted toggle

* Request E2E_Enabled setting

* Add some E2E API methods

* POC E2E Encryption

* Garbage remove

* Remove keys cleaner

* Android cast JWK -> PKCS1

* Initialize E2E when Login Success

* Add some translations

* Add e2e property to Message model

* Send Encrypted messages

* (iOS) PKCS1 -> JWK & e2e.setUserPublicAndPrivateKeys

* (Android) PKCS1 -> JWK & e2e.setUserPublicAndPrivateKeys

* Create an encrypted channel

* Fix app crashing on RoomsList

* Create room key

* Set Room E2E Key (Android)

* Edit room encrypted

* Show encrypted icon on messages

* logEvents

* Decrypt pending subscriptions & messages

* Handle user cancel e2e password entry

* E2ESavePasswordView

* Update Snapshot

* Add encrypted props to message on Send

* Thread messages encryption

* E2E -> Encryption

* Share Extension: Share encrypted text

* (POC) Search messages on Encrypted room

* Provide room key to new users

* Request roomKey on stream-notify-room-users

* Add e2eKeyId to Room Model

* (WIP) E2E Encryption Screens

* Remove encryption subscription file

* Move E2E_Enable to Server Model

* Encryption List Banner

* Move Encryption init to Sagas

* Show banner only when enabled

* Use RocketChat/react-native-simple-crypto

* Search on WM only when is an Encrypted channel

* (WIP) Encryption Banner

* Encryption banner

* Patch -> Fork

* Improve send encrypted message

* Update simple-crypto

* Not decrypt already decrypted messages

* Add comments

* Change eslint disable to inline

* Improve code

* Remove comment

* Some fixes

* (WIP) Encryption Screens

* Improve sub find

* Resend an encrypted message

* Fix comment

* Code improvements

* Hide e2e buttons on features if it is not enabled

* InApp notifications of a encrypted room

* Encryption stop logic

* Edit encrypted message

* DB batch on decryptPending

* Encryption ready client

* Comments

* Handle getRoomInstance errors

* Multiple messages decrypt

* Remove unnecessary try/catch

* Fix decrypt all messages history

* Just add a questionmark

* Fix some subscriptions missing decrypt

* Disable request key logic

* Fix unicode emojis

* Fix e2ekey request

* roomId -> subscription

* Decrypt subscription after merge

* E2ERoom -> EncryptionRoom

* Fix infinite loading

* Handle import key errors

* Handle request key errors

* Move e2eRequestRoomKey to Rocket.Chat

* WIP handshake when key should be requested

* Add search messages explanation

* Remove some TODO and update comments

* Improvements

* Dont show message hash to user

* Handle key request & prevent multiple calls

* Request E2EKey on decryptSubscription that doesn't exists on database yet

* Insert decrypted subscription

* Fix crash after login

* Decrypt sub when receive the key

* Decrypt pending messages of a room

* Encrypted as a switch

* Buffer to Base64 URI Safe

* Add a relevant comment

* Prevent import key without a privateKey

* Prevent create a new instance when client is not ready

* Update simple-crypto & remove replace trick

* More comments

* Remove useless comment

* Remove useless try/catch

* I18n all E2E screens

* E2ESavePassword -> E2ESaveYourPassword

* Prevent multiple views on message when is not encrypted

* Fix encryption toggle not working sometimes

* follow some suggestions

* dont rotate icons

* remove unnecessary condition

* remove unreachable event

* create channel comment

* disable no-bitwise rule for entire file

* loadKeys -> persistKeys

* getMasterKey -> generateMasterKey

* explicit difference between E2EKey & e2eKeyId

* roomId -> rid

* group columns

* Remove server selector

* missing log events

* remove comment

* use stored public key

* update simple-crypto & remove base64-js patch

* add some logs

* remove unreachable condition

* log errors

* handle errors on provide key directly on subscription

* Downgrade RocketChat/react-native-simple-crypto

* improve get room instance

* migration of older apps

* check encrypted status before send a message

* wait client ready

* use our own base64-js

* add more jest tests

* explain return

* remove unncessary stop

* thrown error to caller

* remove superfluous checks

* use Encryption property

* change ready state logic

* ready -> establishing

* encryption.room -> encryptionRoom

* EncryptionRoom -> Room

* add documentation

* wait establishing before provide a room key

* remove superfluous condition

* improve error handling logic

* fallback e2ekey set

* remove no longer necessary check

* remove e.g.

* improve getRoomInstance

* import from index

* use batch

* fix a comment

* decrypt tmsg

* dont show hash when message is encrypted

* Fix detox

* Apply suggestions from code review

Co-authored-by: Diego Mello <diegolmello@gmail.com>
2020-09-11 11:31:38 -03:00