Commit graph

48 commits

Author SHA1 Message Date
Claudio Costa
5030525c3e
Derive connection state for current call from RTC peer (#8878)
Co-authored-by: Mattermost Build <build@mattermost.com>
2025-06-16 15:08:06 -06:00
Claudio Costa
3887ce30a8
Remove long deprecated Calls code (#8747) 2025-05-15 18:20:45 +02:00
Claudio Costa
7192d21134
[MM-63889] Calls: Add backend version check to enable DC locking (#8799)
* Calls: Add backend version check to enable DC locking

* Update calls-common
2025-04-28 09:04:49 -06:00
Elias Nahum
374f812b98
Update dependencies (#8721)
* update fastlane

* update dev dependencies

* update to eslint 9+

* update testing-library

* update react-intl

* update bottom-sheet

* update expo

* update reanimated

* upgrade msgpack

* upgrade datepicker

* upgrade react-navigation

* update sentry

* update FlasList

* update fuse.js moment-timezone node-html-parser and semver

* update gesture-handler

* update image-picker

* update react-native-keychain

* update react-native-localize

* update react-native-navigation

* update watermelonDB

* update react-native-permissions

* update react-native-safe-area-context and react-native-screens

* update react-native-share and react-native-svg

* update react-native-video and react-native-webrtc

* update @mattermost/rnutils

* update @mattermost/rnshare

* update @mattermost/hardware-keyboard

* fix isMainActivity

* update android dependencies

* fix upload file progress indicator

* fix entry update config & license

* revert to stable version of @sentry/react-native

* update react-intl again

* update moment-timezone

* upgrade @react-native-camera-roll/camera-roll

* update @react-native-clipboard/clipboard

* update @react-navigation again

* update @shopify/flash-list

* update eslint

* update expo again

* update html-entities

* update mime-db

* update react-native-permissions

* Revert "update react-intl again"

This reverts commit e8e6d5a60dfa56b82b810cbbd7cdffec7697ffc7.

* Revert "update react-intl"

This reverts commit c77f329bb38910aeeba03869b72d77a8b0e00ba1.

* update react-native-keychain

* update and patch react-intl

* mend

* feedback during review 1
2025-04-07 09:30:06 +08:00
Claudio Costa
44bce6c319
[MM-59773] Add unit tests for Calls (#8480)
* Unit tests for app/products/calls/observers

* Unit tests for app/products/calls/actions

* Unit tests for app/products/calls/client

* Unit tests for app/products/calls/connection

* Unit tests for app/products/calls/connection/websocket_event_handlers.ts

* Unit tests for app/products/calls/connection/connection.ts

* Unit tests for app/products/calls/state/actions.ts

* Unit tests for app/products/calls/utils.ts

* Unit tests for app/products/calls/alerts.ts

* Unit tests for app/products/calls/calls_manager.ts

* Unit tests for app/products/calls/hooks.ts

* Factor out force logout error

* Reduce use of 'as jest.Mock'

* Add test case

* Use constants

* Better naming

* Fix types after merge

* Fix test
2025-01-21 12:02:03 -06:00
Claudio Costa
fa7e7ef44d
Update calls-common (#8255)
* Bump rtc monitor interval to 10s

* Update calls-common
2024-10-11 13:47:49 -06:00
Claudio Costa
e693431dec
[MM-45894] Calls: support for signaling media tracks using data channels (#8246)
* Replace pako with fflate

* Allow signaling through data channel

* Update calls-common
2024-10-09 16:33:33 -06:00
Claudio Costa
13ca346155
[MM-60291] Fix rendering of live captions (#8185)
* Load jobs state from call state

* Fix rendering of live captions overlay
2024-08-28 07:28:12 -06:00
Claudio Costa
3656bff4bd
[MM-57698] Implement client ICE candidate pairs metric (#8051)
* Implement client ICE candidate pairs metric

* Update calls package
2024-07-26 10:14:33 +02:00
Claudio Costa
7682c5ccce
[MM-52657] AV1 support (#8037)
* AV1 support

* Guard functionality behind config flag

* Update calls package

* Fix default config

* fix
2024-07-26 10:01:33 +02:00
Christopher Poile
1f2a71c499
[MM-58581] Calls: End call confirmations (#8004)
* end call confirmations

* i18n

* remove unneeded asyncs

* better alert for android
2024-06-18 10:02:24 -04:00
Christopher Poile
7fbd2e52e2
[MM-58129] Calls: Host controls remove participant, view profile (#7938)
* host remove command, host removed feedback

* add view profile control

* i18n; dismissBottomSheet later

* PR comments

* remove confusing setPreviousCall(null)

* our own separator, bit more space for Android

* no need for previousCall due to changes on server

* move host removed alert to an error

* channel_id is not send via the msg.broadcast

* channel_id is still sent via the msg.broadcast
2024-05-10 16:43:35 -04:00
Christopher Poile
2eb8adb3f6
[MM-57958] Calls: Host controls: stop screenshare, mute, lower hand (#7929)
* add muteSession & stopScreenshare controls; obey mute host ctrl

* lower hand host control; obey lower hand ws msg

* no need to await host api call
2024-05-06 15:14:40 -04:00
Christopher Poile
4e68662899
[MM-57019] Calls: Live captions support for mobile (#7854)
* mobile support for live captions

* add the 'Live captions turned on' ephemeral notice

* PR comments

* message should be translatable

* run i18n-extract

* call_recording_state -> call_job_state; ccAvailable is now dynamic

* backwards compatibility with pre calls v0.26.0

* correct mobile version in deprecation comments

---------

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2024-03-20 09:10:05 -04:00
Claudio Costa
84858e4450
[MM-46339] Handle user leaving channel with active call (#7754)
* Handle user leaving channel with active call

* Remove debug log
2024-01-15 08:11:25 -06:00
Elias Nahum
edef4ec4a3
Update libraries and dependencies (#7678)
* update js dependencies

* update react-native libraries

* update watermelonDB

* update RN to 0.72.7

* update fastlane

* fix remove_markdown/at_mention import

* update mattermost libraries

* update fastlane deps

* remove haptic-feedback patch

* update okhttp to 4.12.0 and patch netinfo to accurately identify VPN connections

* create ImaegStyles intersection type
2023-11-25 07:46:13 +08:00
Christopher Poile
daa2b1a497
MM-54351 - Calls: Improve logging (#7671) 2023-11-20 20:28:38 -05:00
Christopher Poile
c9fe72460b
MM-54865 - Calls: Multisession support (#7647)
* add multisession support for calls mobile

* ensure backwards compatibility

* remove extra line
2023-11-16 14:30:49 -05:00
Christopher Poile
1fb01dfcdc
MM-54553 - Calls: Enable microphone input in background (Android) (#7585)
* Add foreground service for Android; add voip UIBackgroundMode for iOS

* remove iOS change for this PR

* create foreground notification channel once at startup
2023-10-13 14:45:14 -04:00
Christopher Poile
0ec2b09fd5
MM-54117 - Calls: Support wiredHeadsets; generalize panel_item (#7545)
* generalize panel_item; support wiredHeadsets

* i18n
2023-09-25 08:45:14 -04:00
Christopher Poile
83f81985cd
MM-53486 - Incoming calls notification banner (#7477)
* upgrade calls-common

* incoming call notifications

* tests

* i18n

* PR comments

* PR comments

* PR comment
2023-08-30 13:58:54 -04:00
Claudio Costa
06037ab6da
[MM-53994] Calls: fix potential websocket client leak (#7513)
* Calls: fix potential websocket client leak

* Improve debug log
2023-08-24 14:29:50 -06:00
Christopher Poile
81dd44ae09
MM-52653 - Calls: Attach call to existing thread on /call start (#7338)
* send rootId when starting a call from a thread

* allow join to start calls in threads and with thread titles
2023-06-15 10:08:50 -04:00
Christopher Poile
c90ace706c
MM-49970 - Calls: Call quality status banner (#7304)
* use mean opinion score detection; add call quality alert bar; tests

* rename MessageBar's file to message_bar

* i18n

* use mosThreshold from calls-common; upgrade calls-common

* use callsBg for text and icon
2023-05-04 15:28:15 -04:00
Daniel Espino García
86658edc30
Refactor errors around the app (#7306)
* Refactor errors around the app

* Fix recursive function

* Fix tests
2023-05-03 13:08:55 +02:00
Christopher Poile
c1430757b8
MM-51776 - Calls: Audio device selections, & fix bluetooth (#7286)
* ask for bluetooth permissions on Android

* new "switch audio device button" for Android

* i18n strings

* split audio_device_button into platform-specific files; PR comments

* earpiece -> phone

* add comments to clarify speakerphone logic

* update snapshots

* add new compass-icons; use tablet and bluetooth icons; add tablet mode

* fix lint
2023-04-27 11:44:14 -04:00
Elias Nahum
784b05fe97
Upgrade Dependencies (#7299)
* upgrade reanimated

* update devDependencies

* upgrade react-intl

* update react-native and some dependencies

* update react-native-permissions

* update RN

* use Share sheet for Report a problem

* update Sentry

* remove step to downloadWebRTC

* update detox deps

* feedback review
2023-04-21 12:16:54 -04:00
Christopher Poile
c0cb14e927
MM-50010 - Share common calls code between web and mobile (#7211)
* use calls/common rtcpeer; @calls -> @mmcalls

* gitpkg -> standalone github calls-common package

* use new mattermost/calls-common repo; add types to WebSocketMessages

* mmcalls/common -> mattermost/calls; use a version tag
2023-03-21 09:18:45 -04:00
Claudio Costa
ac3bd14891
[MM-50806] Calls: fix crash on joining call (#7159)
* Calls: fix crash on joining call

* update Podfile.lock

---------

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2023-02-24 13:25:25 +02:00
Christopher Poile
a44074247e
MM-46312 - Calls: Replace simple-peer with RTCPeer; use up-to-date upstream react-native-webrtc (#6898)
* move to latest react-native-webrtc release

* make this version of rtcpeer as close as possible to Call's version

* remove need for destroyCb

* upgrade webrtc

* continue merge

* upgrade webrtc

* new linting rules
2023-01-26 14:06:05 -05:00
Christopher Poile
9a89259e96
MM-48836 - Calls: handle slash commands (#6980) 2023-01-23 20:08:33 +02:00
Christopher Poile
e140a12b6c
MM-46999 - Calls: Start call in speaker mode (#6979) 2023-01-23 09:39:09 -05:00
Christopher Poile
6660c134f5
MM-48072 - Calls: Implement recording permissions and UI for participants (#6784)
* implement recording permissions and UI

* fix bug when refusing recording while in call thread from call screen

* merge conflicts
2022-11-30 10:15:20 -05:00
Christopher Poile
89b94d0188
MM-48287 - Calls: Select and send emoji reactions (#6781)
* add emoji reactions in mobile

* use StyleSheet.create

* PR comment

* prefer no inline functions

* Revert "prefer no inline functions"

This reverts commit b3c4627daca631e50bccf41b4a9e538f902c82ee.
2022-11-25 12:17:06 -05:00
Christopher Poile
a300cc651e
MM-48286 - Calls: Emoji reactions, display incoming reactions (#6780) 2022-11-25 12:21:45 +01:00
Daniel Espino García
5fae120826
Add support for review app (#6772)
* Add app review

* Use overlay instead of modal

* Add fixes for ios

* i18n-extract

* Add to milliseconds function

* Address review feedback

* Add try to queryGlobalValue

* added app review illustration

* add feedback illustration

* Add animations and feedback bot message

* Restrict reviews to build environment variable

* Fix bug with "dont ask anymore"

* Add check for only supported servers

* Add missing change

* Use for await

Co-authored-by: Daniel Espino <danielespino@MacBook-Pro-de-Daniel.local>
Co-authored-by: Matthew Birtch <mattbirtch@gmail.com>
2022-11-24 18:52:15 +01:00
Daniel Espino García
1aa4188f8e
Move config to its own database table (#6744)
* Move config to its own database table

* Address feedback

* Fix test

* Revert minimum version related changes
2022-11-11 21:20:42 +04:00
Christopher Poile
7038a17ef4
MM-48000: Call started in another client creates a CurrentCall on mobile client (#6708)
* move creating/leaving currentCall into the connection; refactoring

* refactoring; two-stage connecting so existing screen stream can be saved

* better separation of concerns

* change warning to debug

* use getServerDatabase instead of getActiveServerDatabase

* fix bugs

* PR comments
2022-11-08 14:45:10 -05:00
Christopher Poile
8374d7e87f
MM-47004 - Calls: Client-side errors for microphone permissions (#6669)
* call error bar for microphone permissions; global permissions state

* i18n

* refactor permissionErrorBar component, PR comments

* add module dependency's mocks for tests

* fix error bar height

* change permissions error text

* working on 46999 redo audio handling -- will revert

* Revert "working on 46999 redo audio handling -- will revert"

This reverts commit 87bafc452c6ad6e1d7ae79ce78a0f2b461c2f150.

* only get voice track when we have mic permissions

* Android: enable mic when permissions are granted
2022-11-08 10:52:52 -05:00
Christopher Poile
7f5dc3c718
MM-47763 - Calls: "who is speaking" state (#6721)
* move voiceOn to the currentCall state

* simplify

* prefer no inline fns
2022-11-07 17:11:40 -05:00
Christopher Poile
681b6b0b0f
MM-47003 - Calls - Fix for: peer connection timeout (#6658)
* force negotiation

* fix message bug

* remove forced negotiation
2022-10-03 13:12:02 -04:00
Christopher Poile
38b68733d0
MM-45755 - Calls: Unmute automatically in DM or GM channels (#6627)
* unmute in dm or gm channels

* refactor leave_and_join

* waitForReady -> waitForPeerConnection; 10ms -> 200ms check frequency
2022-09-08 13:40:55 -04:00
Christopher Poile
c4e93ce2a5
Fix for call screen popping errors (#6569) 2022-08-11 14:03:25 -04:00
Claudio Costa
c71b28a6a8
[MM-45749] Support for advanced ICE server configs and TURN credentials (#6544)
* Support for advanced ICE server configs and TURN credentials

* PR comments

* merge conflicts

Co-authored-by: Christopher Poile <cpoile@gmail.com>
2022-08-10 12:33:02 -04:00
Claudio Costa
a2a3f4940d
Calls: WebSocket reconnection support (#6543)
Co-authored-by: Christopher Poile <cpoile@gmail.com>
2022-08-10 11:12:39 -04:00
Christopher Poile
f61ea842af
MM-45746 - Handle call_end ws event and '/call end' slash command (#6542) 2022-08-05 07:39:10 -04:00
Christopher Poile
17dbfdcb99
MM-45745 - Calls channel info screen options (#6502)
* implement calls_channel_info; joinCall refactoring

* i18n

* Start/Join call as top button; movable copy channel link button

* MM-45971 - Calls v2 PR comments (#6514)

* don't clobber config if api req failed

* combine two loops into one

* update dependencies

* fetch user model on user connected

* fix state exports; spacing; unneeded field in ServerConfig type

* remove useless return in websocket handler

* constant sorting

* move microphone permission request to leave_and_join_alert

* ServerConfig -> ServerCallsConfig

* console.log -> logError

* ternary -> Platform.select

* merge conflicts

* add destructive options to OptionBox; require DismissChannelInfo fn

* add CopyLink option to quick actions list

* showSnackBar on link copied

* adjust quick_options_height

* Screens.Call

* fix CopyLink spacing

* fix observeUsersById, observe needed columns; fix JoinCallBanner mount

* optimized observables; bug fixes

* remove unneeded `return null`

* PR comments

* readable-stream -> 3.6.0

* merge conflicts

* PR comments
2022-07-29 11:10:32 -04:00
Christopher Poile
5bb240dec8
MM-43300: Calls v2 first cut (#6475)
* Android and iOS requirements

* external types

* babel config for calls, package.json for calls dependencies

* state in rxJS; tests

* actions, client/rest, websocket events, constants

* webrtc connection logic

* calls components / screens

* handle peer destroyed gracefully

* PR comments

* remove ViewPropTypes from mocks; no need to ignore error in LogBox

* calls.d.ts -> calls.ts; i18-extract

* @app/products/calls -> @calls

* PR comments; test cleanup

* Revert "remove ViewPropTypes from mocks; no need to ignore error in LogBox"

This reverts commit f9bd171a544de9c02da8387455f904b3840fc5dc.

* working on typing withServerUrl

* added exportedForInternalUse instead of commenting "internal export"

* better switchToThread in call_screen

* i18n

* typed withServerUrl
2022-07-22 15:57:12 -04:00