Unverified Commit 0c7a9b95 authored by Diego Mello's avatar Diego Mello Committed by GitHub
Browse files

Merge beta into master (#2309)



* [i18n] Added Dutch translation (#1676)

* [NEW] Omnichannel Beta (#1674)

* [NEW] Confirm logout/clear cache (#1688)

* [I18N] Add es-ES language  (#1495)

* [NEW] UiKit Beta (#1497)

* [IMPROVEMENT] Use reselect (#1696)

* [FIX] Notification in Android API level less than 24 (#1692)

* [IMPROVEMENT] Send tmid on slash commands and media (#1698)

* [FIX] Unhandled action on UIKit (#1703)

* [NEW] Pull to refresh RoomsList (#1701)

* [IMPROVEMENT] Reset app when language is changed (#1702)

* [FIX] Small fixes on UIKit (#1709)

* [FIX] Spotlight (#1719)

* [CHORE] Update react-native-image-crop-picker (#1712)

* [FIX] Messages Overlapping (Android) and MessageBox Scroll (iOS) (#1720)

* [REGRESSION] Remove @ and # from mention (#1721)

* [NEW] Direct message from user info (#1516)

* [FIX] Delete slash commands (#1723)

* [IMPROVEMENT] Hold URL to copy (#1684)

* [FIX] Different sourcemaps generation for Hermes (#1724)

* [FIX] Different sourcemaps generation for Hermes

* Upload sourcemaps after build

* [REVERT] Show emoji keyboard on Android (#1738)

* [FIX] Stop logging react-native-image-crop-picker (#1745)

* [FIX] Prevent toast ref error (#1744)

* [FIX] Prevent reaction map error (#1743)

* [FIX] Add missing calls to user info (#1741)

* [FIX] Catch room unsubscribe error (#1739)

* [i18n] Missing German keys (#1735)

* [FIX] Missing i18n on MessagesView title (#1733)

* [FIX]  UIKit Modal: Weird behavior on Android Tablet (#1742)

* [i18n] Missing key on German (#1747)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [i18n] Add Italian (#1736)

* [CHORE] Memory leaks investigation (#1675)

* [IMPROVEMENT] Alert verify email when enabled (#1725)

* [NEW] Jitsi JWT added to URL (#1746)

* [FIX] UIKit submit when connection lost (#1748)

* Bump version to 4.5.0 (#1761)

* [NEW] Default browser (#1752)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] HTTP Basic Auth (#1753)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Honor profile fields edit settings (#1687)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Room announcements (#1726)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Honor Register/Login settings (#1727)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Make links clickable on Room Info (#1730)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Hide system messages (#1755)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Honor "Message_AudioRecorderEnabled" (#1764)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [i18n] Missing de keys (#1765)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Redirect user to SetUsernameView (#1728)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Join Room (#1769)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Accept all media types using * (#1770)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Use RealName when necessary (#1758)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Markdown Line Break (#1783)

* [IMPROVEMENT] Remove useMarkdown (#1774)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Open browser rather than webview on Create Workspace (#1788)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Markdown perf (#1796)

* [FIX] Stop video when modal is closed (#1787)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Hide reply notification action when there are missing data (#1771)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [i18n] Added Japanese translation (#1781)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Reset password error message (#1772)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Close tablet modal (#1773)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Setting not present (#1775)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Thread header (#1776)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Keyboard tracking loses input ref (#1784)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Mark message as unread (#1785)
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [IMPROVEMENT] Log server version (#1786)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Add loading message on long running tasks (#1798)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [CHORE] Switch Apple account on Fastlane (#1810)

* [FIX] Watermelon throwing "Cannot update a record with pending updates" (#1754)

* [FIX] Detox tests (#1790)

* [CHORE] Use markdown preview on RoomView Header (#1807)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] LoginSignup blink services (#1809)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Request user presence on demand (#1813)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Remove all invited users when create a channel (#1814)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Pop from room which you have been removed (#1819)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Room Info styles (#1820)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [i18n] Add missing German keys (#1800)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Empty mentions for @all

 and @here when real name is enabled (#1822)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [TESTS] Markdown added to Storybook (#1812)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [REGRESSION] Room View header title (#1827)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Storybook snapshots (#1831)
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [FIX] Mentions (#1829)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Thread message not found (#1830)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Separate delete and remove channel (#1832)

* Rename to delete room

* Separate delete and remove channel

* handleRemoved -> handleRoomRemoved

* [FIX] Navigate to RoomsList & Handle tablet case
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [NEW] Filter system messages per room (#1815)
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] e2e tests (#1838)

* [FIX] Consecutive clear cache calls freezing app (#1851)

* Bump version to 4.5.1 (#1853)

* [FIX][iOS] Ignore silent mode on audio player (#1862)

* [IMPROVEMENT] Create App Group property on Info.plist (#1858)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Make username clickable on message (#1618)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Show proper error message on profile (#1768)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Show toast when a message is starred/unstarred (#1616)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Incorrect size params to avatar endpoint (#1875)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Remove unrecognized emoji flags on android  (#1887)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Remove react-native global installs (#1886)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Emojis transparent on android (#1881)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* Bump acorn from 5.7.3 to 5.7.4 (#1876)

Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/5.7.3...5.7.4

)
Signed-off-by: default avatardependabot[bot] <support@github.com>
Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* Bump version to 4.6.0 (#1911)

* [FIX] Encode Image URI (#1909)

* [FIX] Encode Image URI

* [FIX] Check if Image is Valid
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Adaptive Icons (#1904)

* Remove unnecessary stuff from debug build

* Adaptive icon for experimental app

* [FIX] Stop showing message on leave channel (#1896)

* [FIX] Leave room don't show 'was removed' message

* [FIX] Remove duplicated code
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [i18n] Added missing German translations(#1900)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Linkedin OAuth login (#1913)

* [CHORE] Fix typo in CreateChannel View (#1930)

* [FIX] Respect protocol in HTTP Auth IPs (#1933)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Use new LinkedIn OAuth url (#1935)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [CHORE] Use storyboard on splash screen (#1939)

* Update react-native-bootsplash

* iOS

* Fix android

* [FIX] Check if avatar exists before create Icon (#1927)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Ignore self typing event (#1950)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Change default directory listing to Users (#1948)

* fix: change default directory listing to Users

* follow server settings

* Fix state to props
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Onboarding layout (#1954)

* Onboarding texts

* OnboardingView

* FormContainer

* Minor fixes

* NewServerView

* Remove code

* Refactor

* WorkspaceView

* Stash

* Login with email working

* Login with

* Join open

* Revert "Login with"

This reverts commit d05dc507

.

* Fix create account styles

* Register

* Refactor

* LoginServices component

* Refactor

* Multiple servers

* Remove native images

* Refactor styles

* Fix testid

* Fix add server on tablet

* i18n

* Fix close modal

* Fix TOTP

* [FIX] Registration disabled

* [FIX] Login Services separator

* Fix logos

* Fix AppVersion name

* I18n

* Minor fixes

* [FIX] Custom Fields
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [NEW] Create discussions (#1942)

* [WIP][NEW] Create Discussion

* [FIX] Clear multiselect & Translations

* [NEW] Create Discussion at MessageActions

* [NEW] Disabled Multiselect

* [FIX] Initial channel

* [NEW] Create discussion on MessageBox Actions

* [FIX] Crashing on edit name

* [IMPROVEMENT] New message layout

* [CHORE] Update README

* [NEW] Avatars on MultiSelect

* [FIX] Select Users

* [FIX] Add redirect and Handle tablet

* [IMPROVEMENT] Split CreateDiscussionView

* [FIX] Create a discussion inner discussion

* [FIX] Create a discussion

* [I18N] Add pt-br

* Change icons

* [FIX] Nav to discussion & header title

* Fix header
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Load messages (#1910)

* Create updateLastOpen param on readMessages

* Remove InteractionManager from load messages

* [NEW] Custom Status (#1811)

* [NEW] Custom Status

* [FIX] Subscribe to changes

* [FIX] Improve code using Banner component

* [IMPROVEMENT] Toggle modal

* [NEW] Edit custom status from Sidebar

* [FIX] Modal when tablet

* [FIX] Styles

* [FIX] Switch to react-native-promp-android

* [FIX] Custom Status UI

* [TESTS] E2E Custom Status

* Fix banner

* Fix banner

* Fix subtitle

* status text

* Fix topic header

* Fix RoomActionsView topic

* Fix header alignment on Android

* [FIX] RoomInfo crashes when without statusText

* [FIX] Use users.setStatus

* [FIX] Remove customStatus of ProfileView

* [FIX] Room View Thread Header
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] UI issues of Create Discussion View (#1965)

* [NEW] Direct Message between multiple users (#1958)

* [WIP] DM between multiple users

* [WIP][NEW] Create new DM between multiple users

* [IMPROVEMENT] Improve createChannel Sagas

* [IMPROVEMENT] Selected Users view

* [IMPROVEMENT] Room Actions of Group DM

* [NEW] Create new DM between multiple users

* [NEW] Group DM avatar

* [FIX] Directory border

* [IMPROVEMENT] Use isGroupChat

* [CHORE] Remove legacy getRoomMemberId

* [NEW] RoomTypeIcon

* [FIX] No use legacy method on RoomInfoView

* [FIX] Blink header when create new DM

* [FIX] Only show create direct message option when allowed

* [FIX] RoomInfoView

* pt-BR

* Few fixes

* Create button name

* Show create button only after a user is selected

* Fix max users issues
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Add server and hide login (#1968)

* Navigate to new server workspace from ServerDropdown if there's no token

* Hide login button based on login services and Accounts_ShowFormLogin setting

* [FIX] Lint
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [FIX] MultiSelect Keyboard behavior (Android) (#1969)

* fixed-modal-position

* made-changes
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [FIX] Bottom border style on DirectoryView (#1963)

* [FIX] Border style

* [FIX] Refactoring

* [FIX] fix color of border

* Undo
Co-authored-by: default avatarAroo <azhaubassar@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Clear settings on server change (#1967)

* [FIX] Deeplinking without RoomId (#1925)

* [FIX] Deeplinking without rid

* [FIX] Join channel

* [FIX] Deep linking without rid

* Update app/lib/methods/canOpenRoom.js
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Two Factor authentication via email (#1961)

* First api call working

* [NEW] REST API Post wrapper 2FA

* [NEW] Send 2FA on Email

* [I18n] Add translations

* [NEW] Translations & Cancel totp

* [CHORE] Totp -> TwoFactor

* [NEW] Two Factor by email

* [NEW] Tablet Support

* [FIX] Text colors

* [NEW] Password 2fa

* [FIX] Encrypt password on 2FA

* [NEW] MethodCall2FA

* [FIX] Password fallback

* [FIX] Wrap all post/methodCall with 2fa

* [FIX] Wrap missed function

* few fixes

* [FIX] Use new TOTP on Login

* [improvement] 2fa methodCall
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [FIX] Correct message for manual approval user Registration (#1906)

* [FIX] Correct message for manual approval from admin shown on Registeration

* lint fix - added semicolon

* Updated the translations

* [FIX] Translations

* i18n to match server
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Direct Message between multiple users REST (#1974)

* [FIX] Investigate app losing connection issues (#1890)

* [WIP] Reopen without timeOut & ping with 5 sec & Fix Unsubscribe

* [FIX] Remove duplicated close

* [FIX] Use no-dist lib

* [FIX] Try minor fix

* [FIX] Try reopen connection when app was put on foreground

* [FIX] Remove timeout

* [FIX] Build

* [FIX] Patch

* [FIX] Snapshot

* [IMPROVEMENT] Decrease time to reopen

* [FIX] Some fixes

* [FIX] Update sdk version

* [FIX] Subscribe Room Once

* [CHORE] Update sdk

* [FIX] Subscribe Room

* [FIX] Try to resend missed subs

* [FIX] Users never show status when start app without network

* [FIX] Subscribe to room

* [FIX] Multiple servers

* [CHORE] Update SDK

* [FIX] Don't duplicate streams on subscribeAll

* [FIX] Server version when start the app offline

* [FIX] Server version cached

* [CHORE] Remove unnecessary code

* [FIX] Offline server version

* [FIX] Subscribe before connect

* [FIX] Remove unncessary props

* [FIX] Update sdk

* [FIX] User status & Unsubscribe Typing

* [FIX] Typing at incorrect room

* [FIX] Multiple Servers

* [CHORE] Update SDK

* [REVERT] Undo some changes on SDK

* [CHORE] Update sdk to prevent incorrect subscribes

* [FIX] Prevent no reconnect

* [FIX] Remove close on open

* [FIX] Clear typing when disconnect/connect to SDK

* [CHORE] Update SDK

* [CHORE] Update SDK

* Update SDK

* fix merge develop
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Single message thread inserting thread without rid (#1999)

* [FIX] ThreadMessagesView crashing on load (#1997)

* [FIX] Saml (#1996)

* [FIX] SAML incorrect close

* [FIX] Pathname
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Change user own status (#1995)

* [FIX] Change user own status

* [IMPROVEMENT] Set activeUsers
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Loading all updated rooms after app resume (#1998)

* [FIX] Loading all updated rooms after app resume

* Fix room date on RoomItem
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Change notifications preferences (#2000)

* [FIX] Change notifications preferences

* [IMPROVEMENT] Picker View

* [I18N] Translations

* [FIX] Picker Selection

* [FIX] List border

* [FIX] Prevent crash

* [FIX] Not-Pref tablet

* [FIX] Use same style of LanguageView

* [IMPROVEMENT] Send listItem title
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* Bump version to 4.6.1 (#2001)

* [FIX] DM header blink (#2011)

* [FIX] Split get settings into two requests (#2017)

* [FIX] Split get settings into two requests

* [FIX] Clear settings only when change server

* [IMPROVEMENT] Move the way to clear settings

* [REVERT] Revert some changes

* [FIX] Server Icon
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [REGRESSION] Invite Links (#2007)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Read only channel/broadcast (#1951)

* [FIX] Read only channel/broadcast

* [FIX] Roles missing

* [FIX] Check roles to readOnly

* [FIX] Can post

* [FIX] Respect post-readonly permission

* [FIX] Search a room readOnly
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Cas auth (#2024)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Login TOTP Compatibility to older servers (#2018)

* [FIX] Login TOTP Compatibility to older servers

* [FIX] Android crashes if use double negation
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* Bump version to 4.6.4 (#2029)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Lint (#2030)

* [FIX] UIKit with only one block (#2022)

* [FIX] Message with only one block

* [FIX] Update headers
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* Bump version to 4.7.0 (#2035)

* [FIX] Action Tint Color on Black theme (#2081)

* [FIX] Prevent crash when thread is not found (#2080)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Prevent double click (#2079)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Show slash commands when disconnected (#2078)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Backhandler onboarding (#2077)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Respect UI_Allow_room_names_with_special_chars setting (#2076)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] RoomsList update sometimes isn't fired (#2071)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Stop inserting last message as message object from rooms stream if room is focused (#2069)

* [IMPROVEMENT] No insert last message if the room is focused

* fix discussion/threads
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Hide system messages (#2067)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Pending update (#2066)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Prevent crash when room.uids was not inserted yet (#2055)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FEATURE] Save video (#2063)

* added-feature-save-video

* fix sha256
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Send totp-code to meteor call (#2050)

* fixed-issue

* removed-variable-name-errors

* reverted-last-commit
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] MessageBox mention shouldn't show group DMs (#2049)

* fixed-issue

* [FIX] Filter users only if it's not a group chat
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] AttachmentView (Android)(Tablet) (#2047)

* [fix]Tablet attachment View and Room Navigation

* fix weird navigation and margin bottom
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Allow special chars in Filename (#2020)

* fixed-filename-issue

* improve
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Recorded audio on Android doesn't play on iOS (#2073)

* react-native-video -> expo-av

* remove react-native-video

* Add audio mode

* update mocks

* [FIX] Loading bigger than play/pause
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Message Touchable (#2082)

* [FIX] Avatar touchable

* [IMPROVEMENT] onLongPress on all Message Touchables

* [IMPROVEMENT] User & baseUrl on MessageContext

* [FIX] Context Access

* [FIX] BaseURL

* Fix User
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] ReactionsModal (#2085)

* [NEW] Delete Server (#1975)

* [NEW] Delete server
Co-authored-by: default avatarBruno Dantas <oliveiradantas96@gmail.com>
Co-authored-by: default avatarCalebe Rios <calebersmendes@gmail.com>

* [FIX] Revert removed function
Co-authored-by: default avatarBruno Dantas <oliveiradantas96@gmail.com>
Co-authored-by: default avatarCalebe Rios <calebersmendes@gmail.com>

* pods

* i18n

* Revert "pods"

This reverts commit 2854a165

.
Co-authored-by: default avatarBruno Dantas <oliveiradantas96@gmail.com>
Co-authored-by: default avatarCalebe Rios <calebersmendes@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Change server while connecting/updating (#1981)

* [IMPROVEMENT] Change server while connecting

* [FIX] Not login/reconnect to previous server

* [FIX] Abort all fetch while connecting

* [FIX] Abort sdk fetch

* [FIX] Patch-package

* Add comments
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Keep screen awake while recording/playing some audio (#2089)

* [IMPROVEMENT] Keep screen awake while recording/playing some audio

* [FIX] Add expo-keep-awake mock

* [FIX] UIKit crashing when UIKitModal receive update event (#2088)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Close announcement banner (#2064)

* [NEW] Created new field in subscription table
Signed-off-by: default avatarEzequiel De Oliveira <ezequiel1de1oliveira@gmail.com>

* [NEW] New field added to obeserver in room view
Signed-off-by: default avatarEzequiel De Oliveira <ezequiel1de1oliveira@gmail.com>

* [NEW] Added icon and new design to banner
Signed-off-by: default avatarEzequiel De Oliveira <ezequiel1de1oliveira@gmail.com>

* [NEW] Close banner function works
Signed-off-by: default avatarEzequiel De Oliveira <ezequiel1de1oliveira@gmail.com>

* [IMPROVEMENT] closed banner status now update correctly
Signed-off-by: default avatarEzequiel De Oliveira <ezequiel1de1oliveira@gmail.com>

* improve banner style
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* Update all dependencies (#2008)

* Android RN 62

* First steps iOS

* Second step iOS

* iOS compiling

* "New" build system

* Finish iOS

* Flipper

* Update to RN 0.62.1

* expo libs

* Hermes working

* Fix lint

* Fix android build

* Patches

* Dev patches

* Patch WatermelonDB: https://github.com/Nozbe/WatermelonDB/pull/660

* Fix jitsi

* Update several minors

* Update dev minors and lint

* react-native-keyboard-input

* Few updates

* device info

* react-native-fast-image

* Navigation bar color

* react-native-picker-select

* webview

* reactotron-react-native

* Watermelondb

* RN 0.62.2

* Few updates

* Fix selection

* update gems

* remove lib

* finishing

* tests

* Use node 10

* Re-enable app bundle

* iOS build

* Update jitsi ios

* [NEW] Passcode and biometric unlock (#2059)

* Update expo libs

* Configure expo-local-authentication

* ScreenLockedView

* Authenticate server change

* Auth on app resume

* localAuthentication util

* Add servers.lastLocalAuthenticatedSession column

* Save last session date on background

* Use our own version of app state redux

* Fix libs

* Remove inactive

* ScreenLockConfigView

* Apply on saved data

* Auto lock option label

* Starting passcode

* Basic passcode flow working

* Change passcode

* Check if biometry is enrolled

* Use fork

* Migration

* Patch expo-local-authentication

* Use async storage

* Styling

* Timer

* Refactor

* Lock orientation portrait when not on tablet

* share extension

* Deep linking

* Share extension

* Refactoring passcode

* use state

* Stash

* Refactor

* Change passcode

* Animate dots on error

* Matching passcodes

* Shake

* Remove lib

* Delete button

* Fade animation on modal

* Refactoring

* ItemInfo

* I18n

* I18n

* Remove unnecessary prop

* Save biometry column

* Raise time to lock to 30 seconds

* Vibrate on wrong confirmation passcode

* Reset attempts and save last authentication on local passcode confirmation

* Remove inline style

* Save last auth

* Fix header blink

* Change function name

* Fix android modal

* Fix vibration permission

* PasscodeEnter calls biometry

* Passcode on the state

* Biometry button on PasscodeEnter

* Show whole passcode

* Secure passcode

* Save passcode with promise to prevent empty passcodes and immediately lock

* Patch expo-local-authentication

* I18n

* Fix biometry being called every time

* Blur screen on app inactive

* Revert "Blur screen on app inactive"

This reverts commit a4ce8129

.

* Remove immediately because of how Activities work on Android

* Pods

* New layout

* stash

* Layout refactored

* Fix icons

* Force set passcode from server

* Lint

* Improve permission message

* Forced passcode subtitle

* Disable based on admin's choice

* Require local authentication on login success

* Refactor

* Update tests

* Update react-native-device-info to fix notch

* Lint

* Fix modal

* Fix icons

* Fix min auto lock time

* Review

* keep enabled on mobile

* fix forced by admin when enable unlock with passcode

* use DEFAULT_AUTO_LOCK when manual enable screenLock

* fix check has passcode

* request biometry on first password

* reset auto time lock when disabled on server
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [FIX] Messages View (#2090)

* [FIX] Messages View

* [FIX] Opening PDF from Files View

* [FIX] Audio

* [FIX] SearchMessagesView
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Big names overflow (#2072)

* [FIX] Big names overflow

* [FIX] Message time
Co-authored-by: default avatardevyaniChoubey <devyanichoubey16@gmail.com>

* [FIX] Some alignments

* fix user item overflow

* some adjustments
Co-authored-by: default avatardevyaniChoubey <devyanichoubey16@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Avatar of message as an emoji (#2038)

* fixed-issue

* removed-hardcoded-emoji

* Merge develop

* replaced markdown with emoji componenent

* made-changes

* use avatar onPress
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Livechat (#2004)

* [WIP][NEW] Livechat info/actions

* [IMPROVEMENT] RoomActionsView

* [NEW] Visitor Navigation

* [NEW] Get Department REST

* [FIX] Borders

* [IMPROVEMENT] Refactor RoomInfo View

* [FIX] Error while navigate from mention -> roomInfo

* [NEW] Livechat Fields

* [NEW] Close Livechat

* [WIP] Forward livechat

* [NEW] Return inquiry

* [WIP] Comment when close livechat

* [WIP] Improve roomInfo

* [IMPROVEMENT] Forward room

* [FIX] Department picker

* [FIX] Picker without results

* [FIX] Superfluous argument

* [FIX] Check permissions on RoomActionsView

* [FIX] Livechat permissions

* [WIP] Show edit to livechat

* [I18N] Add pt-br translations

* [WIP] Livechat Info

* [IMPROVEMENT] Livechat info

* [WIP] Livechat Edit

* [WIP] Livechat edit

* [WIP] Livechat Edit

* [WIP] Livechat edit scroll

* [FIX] Edit customFields

* [FIX] Clean livechat customField

* [FIX] Visitor Navigation

* [NEW] Next input logic LivechatEdit

* [FIX] Add livechat data to subscription

* [FIX] Revert change

* [NEW] Livechat user Status

* [WIP] Livechat tags

* [NEW] Edit livechat tags

* [FIX] Prevent some crashes

* [FIX] Forward

* [FIX] Return Livechat error

* [FIX] Prevent livechat info crash

* [IMPROVEMENT] Use input style on forward chat

* OnboardingSeparator -> OrSeparator

* [FIX] Go to next input

* [NEW] Added some icons

* [NEW] Livechat close

* [NEW] Forward Room Action

* [FIX] Livechat edit style

* [FIX] Change status logic

* [CHORE] Remove unnecessary logic

* [CHORE] Remove unnecessary code

* [CHORE] Remove unecessary case

* [FIX] Superfluous argument

* [IMPROVEMENT] Submit livechat edit

* [CHORE] Remove textInput type

* [FIX] Livechat edit

* [FIX] Livechat Edit

* [FIX] Use same effect

* [IMPROVEMENT] Tags input

* [FIX] Add empty tag

* Fix minor issues

* Fix typo

* insert livechat room data to our room object

* review

* add method calls server version
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Delete Subs (#2091)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Android build (#2094)

* [FIX] Blink header DM (#2093)

* [FIX] Blink header DM

* Remove query

* [FIX] Push RoomInfoView

* remove unnecessary try/catch

* [FIX] RoomInfo > Message (Tablet)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Default biometry enabled (#2095)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Enable navigating to a room from auth deep linking (#2115)

* Wait for login success to navigate

* Enable auth and room deep linking at the same time

* [FIX] NewMessageView Press Item should open DM (#2116)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Roles throwing error (#2110)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Wait attach activity before changeNavigationBarColor (#2111)

* [FIX] Wait attach activity before changeNavigationBarColor

* Remove timeout and add try/catch
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] UIKit crash when some app send a list (#2117)

* [FIX] StoryBook

* [FIX] UIKit crash when some app send a list

* [CHORE] Update snapshot

* [CHORE] Remove token & id

* [FIX] Change bar color while no activity attached (#2130)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Screen Lock options i18n (#2120)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [i18n] Added missing German translation strings (#2105)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Sometimes SDK is null when try to connect (#2131)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Autocomplete position on Android (#2106)

* [FIX] Autocomplete position on Android

* [FIX] Set selection to 0 when needed
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* Revert "[FIX] Autocomplete position on Android (#2106)" (#2136)

This reverts commit e8c38d6f

.

* [FIX] Here and all mentions shouldn't refer to users (#2137)

* [FIX] No send data to bugsnag if it's an aborted request (#2133)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [TESTS] Update and separate E2E tests (#2126)

* Tests passing until roomslist

* create room

* roominfo

* change server

* broadcast

* profile

* custom status

* forgot password

* working

* room and onboarding

* Tests separated

* config.yml refactor

* Revert "config.yml refactor"

This reverts commit 0e984d30

.

* CI

* lint

* CI refactor

* Onboarding tests

* npx detox

* Add all tests

* Save brew cache

* mac-env executor

* detox-test command

* Update readme

* Remove folder

* [FIX] Screen Lock Time respect local value (#2141)

* [FIX] Screen Lock Time respect local value

* [FIX] Enable biometry at the first passcode change

* Bump version to 4.8.0 (#2147)

* [IMPROVEMENT] Refactor icon package (#2146)

* [IMPROVEMENT] Refactor Icon Package

* some size fixes

* [CHORE] Update WatermelonDB to 0.16.2 (#2166)

* [CHORE] Update WatermelonDB to 0.16.2

* Patch watermelon

* Markdown linting for e2e README (#2173)

* Markdown linting for e2e README

* Running a subset of tests

* [FIX] Load messages when hideSystemMessages is enabled (#2101)

* [WIP] Load messages when hideSystemMessages is enabled

* Improve method name

* Minor improvements
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Respect server HideSystemMessages (#2175)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Screen Lock (#2177)

* [FIX] Screen Lock

* improve variable name
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [FIX] Load messages issue when trying to get ts from empty results (#2185)

* [FIX] Show registration form when add server by a invite link (#2187)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] 2FA email - send code again (#2188)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [CHORE] Update react-navigation to v5 (#2154)

* react-navigation v5 installed

* compiling

* Outside working

* InsideStack compiling

* Switch stack

* Starting room

* RoomView header

* SafeAreaView

* Slide from right stack animation

* stash

* Fix params

* Create channel

* inapp notification

* Custom status

* Add server working

* Refactor appStart

* Attachment

* in-app notification

* AuthLoadingView

* Remove compat

* Navigation

* Outside animations

* Fix new server icon

* block modal

* AttachmentView header

* Remove unnecessary code

* SelectedUsersView header

* StatusView

* CreateDiscussionView

* RoomInfoView

* RoomInfoEditView style

* RoomMembersView

* RoomsListView header

* RoomView header

* Share extension

* getParam

* Focus/blur

* Trying to fix inapp

* Lint

* Simpler app container

* Update libs

* Revert "Simpler app container"

This reverts commit 1e49d80b

.

* Load messages faster

* Fix safearea on ReactionsModal

* Update safe area to v3

* lint

* Fix transition

* stash - drawer replace working

* stash - modal nav

* RoomActionsView as tablet modal

* RoomStack

* Stop showing RoomView header when there's no room

* Custom Header and different navigation based on stack

* Refactor setHeader

* MasterDetailContext

* RoomView header

* Fix isMasterDetail rule

* KeyCommands kind of working

* Create channel on tablet

* RoomView sCU

* Remove withSplit

* Settings opening as modal

* Settings

* StatusView headerLeft

* Admin panel

* TwoFactor style

* DirectoryView

* ServerDropdown and SortDropdown animations

* ThreadMessagesView

* Navigate to empty RoomView on server switch when in master detail

* ProfileView header

* Fix navigation issues

* Nav to any room info on tablet

* Room info

* Refactoring

* Fix rooms search

* Roomslist commands

* SearchMessagesView close modal

* Key commands

* Fix undefined subscription

* Disallow navigate to focused room

* isFocused state on RoomsListView

* Blur text inputs when focus is lost

* Replace animation

* Default nav theme

* Refactoring

* Always open Attachment with close modal button

* ModalContainer backdrop following themes

* Screen tracking

* Refactor get active route for in-app notification

* Only mark room as focused when in master detail layout

* Lint

* Open modals as fade from bottom on Android

* typo

* Fixing tests

* Fix in-app update

* Fixing goRoom issues

* Refactor stack names

* Fix unreadsCount

* Fix stack

* Fix header animation

* Refactor ShareNavigation

* Refactor navigation theme

* Make sure title is set

* Fix create discussion navigation

* Remove unused variable

* Create discussions from actions fixed

* Layout animation

* Screen lock on share extension

* Unnecessary change

* Admin border

* Set header after state callback

* Fix key commands on outside stack

* Fix back button pressed

* Remove layout animations from Android

* Tweak animations on Android

* Disable swipe gesture to open drawer

* Fix current item on RoomsListView

* Fix add server

* Fix drawer

* Fix broadcast

* LayoutAnimation instead of Transitions

* Fix onboarding back press

* Fix assorted tests

* Create discussion fix

* RoomInfoView header

* Drawer active item

* [NEW] Action Sheet (#2114)

* [WIP] New Action Sheet

* [NEW] Header Indicator

* [IMPROVEMENT] Header Logic

* [NEW] Use EventEmitter to show ActionSheet for while

* [FIX] Animation

* [IMPROVEMENT] Use provider

* [FIX] Add callback

* [FIX] Message Actions

* [FIX] Add MessageActions icons

* [NEW] MessageErrorActions

* [IMPROVEMENT] OnClose

* [FIX] Adjust height

* [FIX] Close/Reopen

* [CHORE] Remove react-native-action-sheet

* [CHORE] Move ActionSheet

* [FIX] Reply Message

* [IMPROVEMENT] Hide ActionSheet logic

* [WIP] Custom MessageActions Header

* [IMPROVEMENT] MessageActions Header

* [IMPROVEMENT] Enable Scroll

* [FIX] Scroll on Android

* Move to react-native-scroll-bottom-sheet

* Stash

* Refactor actions

* Revert some changes

* Trying react-native-modalize

* Back to HOC

* ActionSheet style

* HOC Header

* Reaction actionSheet

* Fix messageBox actions

* Fix add reaction

* Change to flatListProps

* fix modalize android scroll

* Use react-native-scroll-bottom-sheet

* [NEW] BottomSheet dismissable & [FIX] Android not opening

* [NEW] Show emojis based on screen width

* [WIP] Adjust to content height

* [IMPROVEMENT] Responsible

* [IMPROVEMENT] Use alert instead actionSheet at NewServerView

* [FIX] Handle tablet cases

* [IMPROVEMENT] Remove actionSheet of RoomMembersView

* [IMPROVEMENT] Min snap distance when its portrait

* [CHORE] Remove unused Components

* [IMPROVEMENT] Remove duplicated add-reaction

* [IMPROVEMENT] Refactor Icon Package

* [IMPROVEMENT] Use new icons

* [FIX] Select message at MessageActions before getOptions

* [FIX] Custom header height

* [CHORE] Remove patch & [FIX] Tablet bottom sheet

* [FIX] Use ListItem height to BottomSheet Height

* Some fixes

* [FIX] Custom MessageActions header

* [FIX] Android height adjust

* [IMPROVEMENT] Item touchable & [FIX] Respect pin permission

* [IMPROVEMENT] More than one snap point

* some size fixes

* improve code

* hide horizontal scroll indicator

* [FIX] Focus MessageBox on edit message

* [FIX] Ripple color

* [IMPROVEMENT] Backdrop must keep same opacity after 50% of the screen

* [TEST] Change animation config

* [IMPROVEMENT] BackHandler should close the ActionSheet

* [CHORE] Add react-native-safe-area-context

* [FIX] Provide a bottom padding at notch devices

* [IMPROVEMENT] Improve backdrop input/output range

* [FIX] Weird Android Snap behavior

* [PATCH] React-native-scroll-bottom-sheet

* [CI] Re-run build

* [FIX] Landscape android

* [IMPROVEMENT] Cover 50% of the screen at the landscape mode

* [FIX] Adjust emoji content to width size

* [IMPROVEMENT] Use hooks library

* [IMPROVEMENT] Close the actionSheet when orientation change

* deactivate safe-area-context for while

* [REVERT] Re-add react-native-safe-area-context (3.0.2)

* [IMPROVEMENT] Use focused background

* [TESTS] E2E Tests updated to new BottomSheet

* [NEW] Add cancel button

* [FIX] Cancel button at android

* [IMPROVEMENT] Use cancelable bottom sheet at room members view

* [IMPROVEMENT] Use better function names

* [IMPROVEMENT] Use getItemLayout

* [FIX][TEMP] Animation

* Review

* Build

* Header keyExtractor

* Rename function

* Tweak animation

* Refactoring

* useTheme

* Refactoring

* TestIDs

* Refactor

* Remove old lib
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Add fastlane to android module and configure CI (#2100)

* [IMPROVEMENT] Use react-native-notifier for in-app notifications (#2139)
Signed-off-by: default avatarEzequiel De Oliveira <ezequiel1de1oliveira@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [CHORE] Create DimensionsContext (#2098)
Signed-off-by: default avatarEzequiel De Oliveira <ezequiel1de1oliveira@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Remove duplicated sCU condition (#2194)

* [FIX] The auto translate toggle don't save right state (#2142)
Signed-off-by: default avatarEzequiel De Oliveira <ezequiel1de1oliveira@gmail.com>
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [CHORE] Increase "content_hash_max_items" on Watchman (#2181)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] IFrame authentication (#2184)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Send multiple attachments (#2162)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Omnichannel Status Toggle (#2217)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Typing when UI_Use_Real_Name is enabled (#2216)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [REGRESSION] Logout failing after #2217 (#2222)

* [CHORE] Add wrapper to make Meteor methods calls over REST (#2104)

* [WIP] Use rest instead methodCall

* [WIP] Some method calls using wrapper

* [WIP] Wrap all necessary methodCalls

* fix
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Mark thread as read on open (#2225)

* [IMPROVEMENT] Mark a thread as read

* Use methodCallWrapper

* Check server version
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Read receipt icon on action sheet (#2237)

* [FIX] Handle TypeErrors on navigationRef and draftMessage due to null properties (#2232)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Android crashing when restoring from background (#2238)

* [FIX] Send thread attachment (#2242)

* [FIX] Iframe auth Login Button (#2241)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [REGRESSION] Audio Recording (#2240)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Expo-av audio recorder (#2195)

* [NEW] MessageBox: Expo-av audio recorder

* Refactor MessageBox to accommodate recording button even when recording
* Rename Recording.js -> RecordAudio.js as we could implement video recording in the future

* RecordAudio: Introduce cancel and send buttons

* RecordAudio: Introduce recorderBusy state, refactor MessageBox, remove useless SafeAreaView

* RecordAudio: Better audio quality 🎉

, stop recording on unmount

* RecordAudio: Use FileSystem from expo-file-system instead of RNFetchBlob

* chore: flush out react-native-audio

* fix(MessageBox): bring back some missed styles during refactor

* refactor(RecordAudio): use class component

* refactor(RecordAudio): recorder busy to class property, styling changes

* recorder initialisation changes

* fix(RecordAudio): missing await in isRecordingPermissionGranted

* fix(RecordAudio): set isRecording = false on cancel/finish, refactor perms
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [IMPROVEMENT] Unified header UX (#2234)

* Change drawer icon

* Removed iOS variation

* Patch to react-navigation-header-buttons... easier to patch then to overwrite its behaviour :(

* Correctly position title

* Header subtitle

* Layout

* Alignment

* RoomView header

* Renamed RoomHeaderLeft to LeftButtons

* RoomView back button

* Search icon on RoomView

* Refactor

* Fix header on tablet

* Fix search messages close button on tablet

* Search key command

* Network status on RoomView header subtitle

* Update tests

* Scale content

* SearchBox cancel color

* Bump version to 4.9.0 (#2248)

* [FIX] Check for UI_Use_Real_Name when sorting rooms (#2230)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Emoji keyboard not showing custom and frequently used emojis on Share Extension (#2251)

* [FIX] Scroll to top crashing when ref is undefined (#2252)

* [FIX] Check if exists scroll ref

* Remove scrollTo
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] AttachmentView crashing during title decode (#2253)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Command previews crashing when API returns an error (#2254)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] ThreadMessagesView throwing error when subscription wasn't found (#2255)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Register crashing when error data is undefined (#2256)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Get active route returning undefined (#2257)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] ImageViewer not recognising gestures after zoomed (#2261)

* [FIX] Zoomed in images must react to gestures

* AnimatedFastImage -> AnimatedImage
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [FIX] Android stack animation throwing illegal node ID (#2260)

* [FIX] Navigation object undefined when tapping sidebar's user header on tablet (#2259)

* [FIX] Action sheet cutting emojis on the header (#2263)

* [FIX] Action sheet cutting emojis on the header

* fix tablet case
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [FIX] Mime type check crashing the app (#2264)

* [FIX] Notification preferences update crashing the app (#2262)

* [FIX] Create discussion not working from MessageActions (#2265)

* [FIX] getSettings not catching errors (#2271)

* [REGRESSION] Jitsi Call doesn't send message link (#2277)

* [FIX] Messages hidden behind MessageBox (#2281)

* fix: package.json & yarn.lock to reduce vulnerabilities (#2275)

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-JPEGJS-570039
- https://snyk.io/vuln/SNYK-JS-LODASH-567746

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

* [i18n] Add missing german strings (#2278)

* cleaned mixed usage of "du" and "Sie"
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [CHORE] CircleCI Upgrades (#2269)

* Upgrade nvm

* Upgrade XCode

* Use nvm's default installed version of node (LTS)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* [NEW] Sign in with Apple (#2282)

* Add expo-apple-authentication

* Button

* Create new provisioning profiles

* Login with Apple

* Change provisioning profile

* Button color based on theme
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>

* [FIX] MessageBox not being shown on ShareView when Preview is a video (#2283)

* Wrap video preview with ScrollView so Messagebox is shown properly

* Fix border color

* [TESTS] Test in docker (#2290)

* Add docker env with orchestration

* Update detox, update mocha config format

* One simulator at a time - mocha won't run parallel

* Docker runner, with test changes to match RC data

* Better error trapping in infrastructure control script

* Swap user provisioning from Mongo to RC API to work against existing servers

* Add docker to e2e readme

* Stop using example.com for emails

* Default detox to the tests directory

* Add working configs for both run scenarios

* Add some optional forcing of data.js version for Docker

* [CHORE] Consistent Rocket.Chat Branding (#2293)
Co-authored-by: default avatarDiego Mello <diegolmello@gmail.com>

* Bump version to 4.10.0 (#2305)
Co-authored-by: default avatarDaanchaam <daanhendriks97@gmail.com>
Co-authored-by: default avatarDjorkaeff Alexandre <djorkaeff.unb@gmail.com>
Co-authored-by: default avatarYoussef Muhamad <emaildeyoussefmuhamad@gmail.com>
Co-authored-by: default avatarIván Álvarez <ialvarezpereira@gmail.com>
Co-authored-by: default avatarPrateek Jain <prateek93a@gmail.com>
Co-authored-by: default avatarSarthak Pranesh <41206172+sarthakpranesh@users.noreply.github.com>
Co-authored-by: default avatarphriedrich <info@phriedrich.de>
Co-authored-by: default avatarMichele Pellegrini <pellettiero@users.noreply.github.com>
Co-authored-by: default avatarTanmoy Bhowmik <tanmoy.openroot@gmail.com>
Co-authored-by: default avatarHibikine Kage <14365761+hibikine@users.noreply.github.com>
Co-authored-by: default avatardevyaniChoubey <52153085+devyaniChoubey@users.noreply.github.com>
Co-authored-by: default avatarEzequiel de Oliveira <ezequiel1de1oliveira@gmail.com>
Co-authored-by: default avatarNeil Agarwal <neil@neilagarwal.me>
Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: default avatarGovind Dixit <GOVINDDIXIT93@GMAIL.COM>
Co-authored-by: default avatarZhaubassarova Aruzhan <49000079+azhaubassar@users.noreply.github.com>
Co-authored-by: default avatarAroo <azhaubassar@gmail.com>
Co-authored-by: default avatarSarthak Pranesh <sarthak.pranesh2018@vitstudent.ac.in>
Co-authored-by: default avatarSiddharth Padhi <padhisiddharth31@gmail.com>
Co-authored-by: default avatarBruno Dantas <oliveiradantas96@gmail.com>
Co-authored-by: default avatarCalebe Rios <calebersmendes@gmail.com>
Co-authored-by: default avatardevyaniChoubey <devyanichoubey16@gmail.com>
Co-authored-by: default avatarDan Caseley <dan@caseley.me.uk>
Co-authored-by: default avatarHeng Sok <sokheng@idatahub.com>
Co-authored-by: default avatarSnyk bot <snyk-bot@snyk.io>
parent 0a67aaec
......@@ -3,7 +3,7 @@ defaults: &defaults
macos: &macos
macos:
xcode: "11.2.1"
xcode: "11.5.0"
bash-env: &bash-env
BASH_ENV: "~/.nvm/nvm.sh"
......@@ -33,14 +33,12 @@ save-npm-cache-mac: &save-npm-cache-mac
- ./node_modules
install-node: &install-node
name: Install Node 10
name: Install Node
command: |
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
source ~/.nvm/nvm.sh
# https://github.com/creationix/nvm/issues/1394
set +e
nvm install 10
echo 'export PATH="/home/circleci/.nvm/versions/node/v10.20.1/bin:$PATH"' >> ~/.bash_profile
INSTALLED_NODE=`nvm which current`
echo "export PATH=\"${INSTALLED_NODE%%/node}:\$PATH\"" >> ~/.bash_profile
source ~/.bash_profile
restore-gems-cache: &restore-gems-cache
......
......@@ -59,3 +59,5 @@ buck-out/
coverage
.vscode/
e2e/docker/rc_test_env/docker-compose.yml
e2e/docker/data/db
\ No newline at end of file
......@@ -139,7 +139,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode VERSIONCODE as Integer
versionName "4.8.0"
versionName "4.10.0"
vectorDrawables.useSupportLibrary = true
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]
missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60" // See note below!
......
import { isIOS, isAndroid } from '../utils/deviceInfo';
export const STATUS_COLORS = {
online: '#2de0a5',
busy: '#f5455c',
......@@ -8,7 +6,7 @@ export const STATUS_COLORS = {
};
export const SWITCH_TRACK_COLOR = {
false: isAndroid ? '#f5455c' : null,
false: '#f5455c',
true: '#2de0a5'
};
......@@ -34,11 +32,11 @@ export const themes = {
separatorColor: '#cbcbcc',
navbarBackground: '#ffffff',
headerBorder: '#B2B2B2',
headerBackground: isIOS ? '#f8f8f8' : '#2f343d',
headerBackground: '#EEEFF1',
headerSecondaryBackground: '#ffffff',
headerTintColor: isAndroid ? '#ffffff' : '#1d74f5',
headerTitleColor: isAndroid ? '#ffffff' : '#0d0e12',
headerSecondaryText: isAndroid ? '#9ca2a8' : '#1d74f5',
headerTintColor: '#6C727A',
headerTitleColor: '#0C0D0F',
headerSecondaryText: '#1d74f5',
toastBackground: '#0C0D0F',
videoBackground: '#1f2329',
favoriteBackground: '#ffbb00',
......@@ -63,7 +61,7 @@ export const themes = {
chatComponentBackground: '#192132',
auxiliaryBackground: '#07101e',
bannerBackground: '#0e1f38',
titleText: '#FFFFFF',
titleText: '#f9f9f9',
bodyText: '#e8ebed',
backdropColor: '#000000',
dangerColor: '#f5455c',
......@@ -80,9 +78,9 @@ export const themes = {
headerBorder: '#2F3A4B',
headerBackground: '#0b182c',
headerSecondaryBackground: '#0b182c',
headerTintColor: isAndroid ? '#ffffff' : '#1d74f5',
headerTitleColor: '#FFFFFF',
headerSecondaryText: isAndroid ? '#9297a2' : '#1d74f5',
headerTintColor: '#f9f9f9',
headerTitleColor: '#f9f9f9',
headerSecondaryText: '#9297a2',
toastBackground: '#0C0D0F',
videoBackground: '#1f2329',
favoriteBackground: '#ffbb00',
......@@ -124,9 +122,9 @@ export const themes = {
headerBorder: '#323232',
headerBackground: '#0d0d0d',
headerSecondaryBackground: '#0d0d0d',
headerTintColor: isAndroid ? '#ffffff' : '#1e9bfe',
headerTintColor: '#f9f9f9',
headerTitleColor: '#f9f9f9',
headerSecondaryText: isAndroid ? '#b2b8c6' : '#1e9bfe',
headerSecondaryText: '#b2b8c6',
toastBackground: '#0C0D0F',
videoBackground: '#1f2329',
favoriteBackground: '#ffbb00',
......
......@@ -29,7 +29,8 @@ export default StyleSheet.create({
},
handle: {
justifyContent: 'center',
alignItems: 'center'
alignItems: 'center',
paddingBottom: 8
},
handleIndicator: {
width: 40,
......
......@@ -17,7 +17,7 @@ const styles = StyleSheet.create({
export const DisclosureImage = React.memo(({ theme }) => (
<CustomIcon
name='chevron-right'
color={themes[theme].auxiliaryTintColor}
color={themes[theme].auxiliaryText}
size={20}
/>
));
......
......@@ -20,6 +20,11 @@ export const getHeaderHeight = (isLandscape) => {
return 56;
};
export const getHeaderTitlePosition = insets => ({
left: 60 + insets.left,
right: 80 + insets.right
});
const styles = StyleSheet.create({
container: {
height: headerHeight,
......
......@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { HeaderButtons, HeaderButton, Item } from 'react-navigation-header-buttons';
import { CustomIcon } from '../lib/Icons';
import { isIOS, isAndroid } from '../utils/deviceInfo';
import { isIOS } from '../utils/deviceInfo';
import { themes } from '../constants/colors';
import I18n from '../i18n';
import { withTheme } from '../theme';
......@@ -15,11 +15,7 @@ const CustomHeaderButton = React.memo(withTheme(({ theme, ...props }) => (
{...props}
IconComponent={CustomIcon}
iconSize={headerIconSize}
color={
isAndroid
? themes[theme].headerTitleColor
: themes[theme].headerTintColor
}
color={themes[theme].headerTintColor}
/>
)));
......@@ -32,7 +28,7 @@ export const CustomHeaderButtons = React.memo(props => (
export const DrawerButton = React.memo(({ navigation, testID, ...otherProps }) => (
<CustomHeaderButtons left>
<Item title='drawer' iconName='customize' onPress={navigation.toggleDrawer} testID={testID} {...otherProps} />
<Item title='drawer' iconName='menu_hamburguer' onPress={navigation.toggleDrawer} testID={testID} {...otherProps} />
</CustomHeaderButtons>
));
......
......@@ -5,29 +5,32 @@ import {
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { Base64 } from 'js-base64';
import * as AppleAuthentication from 'expo-apple-authentication';
import { withTheme } from '../theme';
import sharedStyles from '../views/Styles';
import { themes } from '../constants/colors';
import { loginRequest as loginRequestAction } from '../actions/login';
import Button from './Button';
import OrSeparator from './OrSeparator';
import Touch from '../utils/touch';
import I18n from '../i18n';
import random from '../utils/random';
import RocketChat from '../lib/rocketchat';
const BUTTON_HEIGHT = 48;
const SERVICE_HEIGHT = 58;
const BORDER_RADIUS = 2;
const SERVICES_COLLAPSED_HEIGHT = 174;
const styles = StyleSheet.create({
serviceButton: {
borderRadius: 2,
borderRadius: BORDER_RADIUS,
marginBottom: 10
},
serviceButtonContainer: {
borderRadius: 2,
borderRadius: BORDER_RADIUS,
width: '100%',
height: 48,
height: BUTTON_HEIGHT,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
......@@ -187,6 +190,21 @@ class LoginServices extends React.PureComponent {
this.openOAuth({ url, ssoToken, authType: 'cas' });
}
onPressAppleLogin = async() => {
try {
const { fullName, email, identityToken } = await AppleAuthentication.signInAsync({
requestedScopes: [
AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
AppleAuthentication.AppleAuthenticationScope.EMAIL
]
});
await RocketChat.loginOAuthOrSso({ fullName, email, identityToken });
} catch {
// Do nothing
}
}
getOAuthState = () => {
const credentialToken = random(43);
return Base64.encodeURI(JSON.stringify({ loginStyle: 'popup', credentialToken, isCordova: true }));
......@@ -262,6 +280,7 @@ class LoginServices extends React.PureComponent {
}
renderItem = (service) => {
const { CAS_enabled, theme } = this.props;
let { name } = service;
name = name === 'meteor-developer' ? 'meteor' : name;
const icon = `icon_${ name }`;
......@@ -285,11 +304,27 @@ class LoginServices extends React.PureComponent {
onPress = () => this.onPressCas();
break;
}
case 'apple': {
onPress = () => this.onPressAppleLogin();
break;
}
default:
break;
}
if (name === 'apple') {
return (
<AppleAuthentication.AppleAuthenticationButton
buttonType={AppleAuthentication.AppleAuthenticationButtonType.CONTINUE}
buttonStyle={theme === 'light' ? AppleAuthentication.AppleAuthenticationButtonStyle.BLACK : AppleAuthentication.AppleAuthenticationButtonStyle.WHITE}
cornerRadius={BORDER_RADIUS}
style={[styles.serviceButton, { height: BUTTON_HEIGHT }]}
onPress={onPress}
/>
);
}
name = name.charAt(0).toUpperCase() + name.slice(1);
const { CAS_enabled, theme } = this.props;
let buttonText;
if (isSaml || (service.service === 'cas' && CAS_enabled)) {
buttonText = <Text style={[styles.serviceName, isSaml && { color: service.buttonLabelColor }]}>{name}</Text>;
......@@ -356,8 +391,4 @@ const mapStateToProps = state => ({
services: state.login.services
});
const mapDispatchToProps = dispatch => ({
loginRequest: params => dispatch(loginRequestAction(params))
});
export default connect(mapStateToProps, mapDispatchToProps)(withTheme(LoginServices));
export default connect(mapStateToProps)(withTheme(LoginServices));
......@@ -14,17 +14,20 @@ import { Button } from '../ActionSheet';
import { useDimensions } from '../../dimensions';
export const HEADER_HEIGHT = 36;
const ITEM_SIZE = 36;
const CONTAINER_MARGIN = 8;
const ITEM_MARGIN = 8;
const styles = StyleSheet.create({
container: {
alignItems: 'center',
marginHorizontal: 8
marginHorizontal: CONTAINER_MARGIN
},
headerItem: {
height: 36,
width: 36,
borderRadius: 20,
marginHorizontal: 8,
height: ITEM_SIZE,
width: ITEM_SIZE,
borderRadius: ITEM_SIZE / 2,
marginHorizontal: ITEM_MARGIN,
justifyContent: 'center',
alignItems: 'center'
},
......@@ -84,7 +87,7 @@ HeaderFooter.propTypes = {
};
const Header = React.memo(({
handleReaction, server, message, theme
handleReaction, server, message, isMasterDetail, theme
}) => {
const [items, setItems] = useState([]);
const { width, height } = useDimensions();
......@@ -96,8 +99,8 @@ const Header = React.memo(({
let freqEmojis = await freqEmojiCollection.query().fetch();
const isLandscape = width > height;
const size = isLandscape ? width / 2 : width;
const quantity = (size / 50) - 1;
const size = (isLandscape || isMasterDetail ? width / 2 : width) - (CONTAINER_MARGIN * 2);
const quantity = (size / (ITEM_SIZE + (ITEM_MARGIN * 2))) - 1;
freqEmojis = freqEmojis.concat(DEFAULT_EMOJIS).slice(0, quantity);
setItems(freqEmojis);
......@@ -135,6 +138,7 @@ Header.propTypes = {
handleReaction: PropTypes.func,
server: PropTypes.string,
message: PropTypes.object,
isMasterDetail: PropTypes.bool,
theme: PropTypes.string
};
export default withTheme(Header);
......@@ -32,7 +32,8 @@ const MessageActions = React.memo(forwardRef(({
Message_AllowEditing_BlockEditInMinutes,
Message_AllowPinning,
Message_AllowStarring,
Message_Read_Receipt_Store_Users
Message_Read_Receipt_Store_Users,
isMasterDetail
}, ref) => {
let permissions = {};
const { showActionSheet, hideActionSheet } = useActionSheet();
......@@ -116,7 +117,12 @@ const MessageActions = React.memo(forwardRef(({
const handleEdit = message => editInit(message);
const handleCreateDiscussion = (message) => {
Navigation.navigate('CreateDiscussionView', { message, channel: room });
const params = { message, channel: room, showCloseModal: true };
if (isMasterDetail) {
Navigation.navigate('ModalStackNavigator', { screen: 'CreateDiscussionView', params });
} else {
Navigation.navigate('NewMessageStackNavigator', { screen: 'CreateDiscussionView', params });
}
};
const handleUnread = async(message) => {
......@@ -377,6 +383,7 @@ const MessageActions = React.memo(forwardRef(({
<Header
server={server}
handleReaction={handleReaction}
isMasterDetail={isMasterDetail}
message={message}
/>
) : null)
......@@ -412,7 +419,8 @@ const mapStateToProps = state => ({
Message_AllowEditing_BlockEditInMinutes: state.settings.Message_AllowEditing_BlockEditInMinutes,
Message_AllowPinning: state.settings.Message_AllowPinning,
Message_AllowStarring: state.settings.Message_AllowStarring,
Message_Read_Receipt_Store_Users: state.settings.Message_Read_Receipt_Store_Users
Message_Read_Receipt_Store_Users: state.settings.Message_Read_Receipt_Store_Users,
isMasterDetail: state.app.isMasterDetail
});
export default connect(mapStateToProps, null, null, { forwardRef: true })(MessageActions);
......@@ -17,7 +17,7 @@ export default class EmojiKeyboard extends React.PureComponent {
constructor(props) {
super(props);
const state = store.getState();
this.baseUrl = state.server.server;
this.baseUrl = state.share.server || state.server.server;
}
onEmojiSelected = (emoji) => {
......
import React from 'react';
import PropTypes from 'prop-types';
import { View, Text } from 'react-native';
import { Audio } from 'expo-av';
import { BorderlessButton } from 'react-native-gesture-handler';
import { getInfoAsync } from 'expo-file-system';
import { deactivateKeepAwake, activateKeepAwake } from 'expo-keep-awake';
import styles from './styles';
import I18n from '../../i18n';
import { themes } from '../../constants/colors';
import { CustomIcon } from '../../lib/Icons';
const RECORDING_EXTENSION = '.aac';
const RECORDING_SETTINGS = {
android: {
extension: RECORDING_EXTENSION,
outputFormat: Audio.RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_AAC_ADTS,
audioEncoder: Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AAC,
sampleRate: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.android.sampleRate,
numberOfChannels: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.android.numberOfChannels,
bitRate: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.android.bitRate
},
ios: {
extension: RECORDING_EXTENSION,
audioQuality: Audio.RECORDING_OPTION_IOS_AUDIO_QUALITY_MIN,
sampleRate: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.ios.sampleRate,
numberOfChannels: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.ios.numberOfChannels,
bitRate: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.ios.bitRate,
outputFormat: Audio.RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC
}
};
const RECORDING_MODE = {
allowsRecordingIOS: true,
playsInSilentModeIOS: true,
staysActiveInBackground: false,
shouldDuckAndroid: true,
playThroughEarpieceAndroid: false,
interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_DO_NOT_MIX,
interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DO_NOT_MIX
};
const formatTime = function(seconds) {
let minutes = Math.floor(seconds / 60);
seconds %= 60;
if (minutes < 10) { minutes = `0${ minutes }`; }
if (seconds < 10) { seconds = `0${ seconds }`; }
return `${ minutes }:${ seconds }`;
};
export default class RecordAudio extends React.PureComponent {
static propTypes = {
theme: PropTypes.string,
recordingCallback: PropTypes.func,
onFinish: PropTypes.func
}
constructor(props) {
super(props);
this.isRecorderBusy = false;
this.state = {
isRecording: false,
recordingDurationMillis: 0
};
}
componentDidUpdate() {
const { recordingCallback } = this.props;
const { isRecording } = this.state;
recordingCallback(isRecording);
}
componentWillUnmount() {
if (this.recording) {
this.cancelRecordingAudio();
}
}
get duration() {
const { recordingDurationMillis } = this.state;
return formatTime(Math.floor(recordingDurationMillis / 1000));
}
isRecordingPermissionGranted = async() => {
try {
const permission = await Audio.getPermissionsAsync();
if (permission.status === 'granted') {
return true;
}
await Audio.requestPermissionsAsync();
} catch {
// Do nothing
}
return false;
}
onRecordingStatusUpdate = (status) => {
this.setState({
isRecording: status.isRecording,
recordingDurationMillis: status.durationMillis
});
}
startRecordingAudio = async() => {
if (!this.isRecorderBusy) {
this.isRecorderBusy = true;
try {
const canRecord = await this.isRecordingPermissionGranted();
if (canRecord) {
await Audio.setAudioModeAsync(RECORDING_MODE);
this.recording = new Audio.Recording();
await this.recording.prepareToRecordAsync(RECORDING_SETTINGS);
this.recording.setOnRecordingStatusUpdate(this.onRecordingStatusUpdate);
await this.recording.startAsync();
activateKeepAwake();
} else {