Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Push-to-Talk Support for Jitsi #10369

Closed
wants to merge 43 commits into from
Closed

Push-to-Talk Support for Jitsi #10369

wants to merge 43 commits into from

Conversation

anoadragon453
Copy link
Member

@anoadragon453 anoadragon453 commented Jul 19, 2019

Continuation from #7709, that was originally on a separate repo's branch.

Implements the riot-web portion of Push-to-Talk support for Jitsi voice and video calls. The matrix-react-sdk portion is matrix-org/matrix-react-sdk#2280.

Adds a new native node addon, iohook, which is used for listening to shortcuts globally, meaning even when Riot is minimized. As such, iohook needs to be compiled, however like most native node addons, compiled versions for your platform are downloaded during npm install for you. The idea is you should never have to compile your own version unless you are using an unsupported platform. The currently supported platforms are Windows, Mac and Linux, however I am unsure what the support is for *BSD.

Of course there are those who wish to compile their own software, including ourselves for our releases. For this usecase, a script has been provided in ./scripts/build-native-modules.sh which supports MacOS and Linux. Usage instructions are at docs/native-node-modules.md and within the script itself.

In terms of security, iohook is set to stop itself if it is no longer in charge of any shortcuts. It will only enable itself during a Jitsi call or while recording a new shortcut in settings. While recording a new shortcut, iohook will report every keyboard shortcut that is pressed on the keyboard. This is necessary for shortcut recording. However, if Riot is minimized or otherwise somehow removed from focus while recording a shortcut, the recording session will end.

All of the security functionality is controlled by the Main process, with all of the Renderer processes acting like unprivileged clients. Thus, assuming a security flaw like an XSS only gives you access to functions in the Renderer process, no malicious keylogging should be possible.

The code is set up to allow for any global shortcut to be registered, not just those regarding Push-To-Talk functionality. However, the amount of shortcuts that can be registered at one time is currently controlled by const keybindingRegistrationLimit, which is set to 1, so this limit will need to be raised if any future functionality need be added.

…evelop

* 'master' of https://github.com/vector-im/riot-web:
  Fix cleanup script not to remove extracted/bundles directories (#8764)
* develop:
  Update issue templates
  Fix cleanup script not to remove extracted/bundles directories (#8764)
* develop: (30 commits)
  [matrix] -> Matrix
  Nudge karma to 3.1.2
  set chrome path for travis CI explicitly
  Updated install spinner referenced in #8913
  Add support for localConfig at $appData/config.json. Move electron-config to $appData/electron-config.json
  Translated using Weblate (Hungarian)
  Update to electron 4.0.6
  Translated using Weblate (Spanish)
  Translated using Weblate (Norwegian Bokmål)
  Translated using Weblate (Hungarian)
  Translated using Weblate (Hindi)
  Translated using Weblate (Greek)
  Translated using Weblate (German)
  Translated using Weblate (Finnish)
  Translated using Weblate (Arabic)
  Translated using Weblate (Portuguese (Brazil))
  Translated using Weblate (Czech)
  Translated using Weblate (Swedish)
  Translated using Weblate (Swedish)
  Allow disabling update mechanism
  ...
* develop: (75 commits)
  Support CI for matching branches on forks
  Update yarn.lock
  v1.0.4
  Prepare changelog for v1.0.4
  v1.0.4
  Released js-sdk & react-sdk
  Translated using Weblate (Irish)
  Translated using Weblate (English (United States))
  Added translation using Weblate (Irish)
  Update README.md grammar
  Cross-promote mobile apps
  Fix downstream branch fetching
  Update issue templates
  Declare the officially supported browsers in the README
  Update version number in issue templates
  Use the right CI branch
  Set up BuildKite for Chrome
  Lint doesn't need develop deps
  Remove Travis (CI)
  Add a basic BuildKite :pipeline:
  ...
* develop: (47 commits)
  Translated using Weblate (Romanian)
  Translated using Weblate (Finnish)
  Translated using Weblate (Dutch)
  Added translation using Weblate (Slovenian)
  bump olm version
  Use a different cookie to expire any cookies people may already have
  Step cookie down to 4 hours
  Fix autolaunch setting appearing toggled off
  Expire mobile guide cookie after 24 hours
  Don't try to save files the user didn't want to save
  v1.0.6
  Prepare changelog for v1.0.6
  v1.0.6
  Released js-sdk & react-sdk, and bump electron version
  Deleted translation using Weblate (English (United Kingdom))
  Translated using Weblate (Italian)
  Translated using Weblate (Irish)
  Translated using Weblate (Finnish)
  Translated using Weblate (Esperanto)
  Translated using Weblate (English (United Kingdom))
  ...
* develop: (249 commits)
  Clarify deployment scripts
  Add riot.im configuration files
  Enable reactions and edits for desktop
  Remove unused disable_identity_server config flag
  Improve wording in debug log sending in issue templates
  Require a rageshake description in mxSendRageshake
  Fetch deps
  Verify i18n in CI
  Upgrade dependencies
  v1.2.4
  Prepare changelog for v1.2.4
  v1.2.4
  Upgrade lodash
  Upgrade to JS SDK 2.1.1 and React SDK 1.3.1
  v1.2.3
  Prepare changelog for v1.2.3
  v1.2.3
  Upgrade to JS SDK 2.1.0 and React SDK 1.3.0
  Upgrade dependencies
  v1.2.3-rc.1
  ...
* develop: (22 commits)
  v1.3.0
  Prepare changelog for v1.3.0
  v1.3.0
  Upgrade to JS SDK 2.2.0 and React SDK 1.4.0
  Remove reactions feature flag from docs and config
  Remove edits feature flag from docs and config
  Remove reactions feature flag from docs and config
  Remove edits feature flag from docs and config
  cachebust config file requests
  v1.3.0-rc.3
  Prepare changelog for v1.3.0-rc.3
  v1.3.0-rc.3
  react-sdk rc.3
  v1.3.0-rc.2
  Prepare changelog for v1.3.0-rc.2
  v1.3.0-rc.2
  Upgrade to JS SDK 2.2.0-rc.2 and React SDK 1.4.0-rc.2
  Convert install-app-deps to subcommand
  v1.3.0-rc.1
  Prepare changelog for v1.3.0-rc.1
  ...
@anoadragon453 anoadragon453 changed the title Anoa/jitsi ptt Push-to-Talk Support for Jitsi Jul 19, 2019
* develop:
  Upgrade dependencies
  Translated using Weblate (Vietnamese)
  Translated using Weblate (Azerbaijani)
  Translated using Weblate (Swedish)
  Translated using Weblate (Azerbaijani)
  Update references to features
  Update feature references
  Upgrade to Electron 5
  Translated using Weblate (Tamil)
  Translated using Weblate (Latvian)
  Translated using Weblate (Esperanto)
  Translated using Weblate (Spanish)
@jryans
Copy link
Collaborator

jryans commented Nov 5, 2019

@anoadragon453, thanks for all your work in this space so far! 😁

I'd like to work out a way to land this soon (so that it's not rotting away in a PR). What do you think about changing to do the following:

  • Test for the native node module(s) needed with runtime checks
  • Do not add the native node module as an app dependency (instead record what should be added in a doc)

With that, we should hopefully be able to review and merge this at least. It would require manual steps to use it for now, but that's at least forward progress.

@anoadragon453
Copy link
Member Author

Hi @jryans, and thanks! Some clarifying questions though:

  • Test for the native node module(s) needed with runtime checks

Test as in checking to see if it exists, and if not, not enabling the functionality?

  • Do not add the native node module as an app dependency (instead record what should be added in a doc)

So take it out of package.json and add to/rework docs/native-node-modules.md to reflect that (how to build/run npm install iohook)?

@jryans
Copy link
Collaborator

jryans commented Nov 7, 2019

Test as in checking to see if it exists, and if not, not enabling the functionality?

Correct, for example:

let ioHook;
try {
    ioHook = require('iohook');
catch (e) { 
    // Not available
}

The code that makes use of it should be changed to test for ioHook (or maybe create some wrapper function as needed).

So take it out of package.json and add to/rework docs/native-node-modules.md to reflect that (how to build/run npm install iohook)?

Yes, that's right. We can't list it as a dependency for the moment, as that would cause us to accidentally ship the third-party-built version. I suppose the actual command might be closer to yarn add iohook.

@anoadragon453
Copy link
Member Author

@jryans Right, all makes sense. I'm currently working on once again getting the code working with latest develop (and electron 6), then I'll get on cleaning up everything so it can work with or without the module :)

@jryans
Copy link
Collaborator

jryans commented Nov 8, 2019

@anoadragon453 When ready, feel free to flag me specifically for review if you like, as I'm mentoring similar work on the seshat PRs.

@t3chguy
Copy link
Member

t3chguy commented Mar 29, 2020

This needs porting to https://github.com/vector-im/riot-desktop when you get a chance :)

@Palid
Copy link
Contributor

Palid commented Aug 19, 2021

@anoadragon453 is this still relevant?

@SimonBrandner
Copy link
Contributor

@anoadragon453 is this still relevant?

I believe it is though it's probably quite bitrotten by now

@anoadragon453
Copy link
Member Author

@Palid @SimonBrandner. Yes and yes. It's relevant but doesn't need active review currently. It probably doesn't need to be open; any new implementation will likely be done in a separate PR anyhow.

su-ex added a commit to SchildiChat/element-web that referenced this pull request Apr 21, 2023
* Allow desktop app to expose recent rooms in UI integrations ([\element-hq#16940](element-hq#16940)).
* Add API params to mute audio and/or video in Jitsi calls by default ([\element-hq#24820](element-hq#24820)). Contributed by @dhenneke.
* Style mentions as pills in rich text editor ([\element-hq#10448](matrix-org/matrix-react-sdk#10448)). Contributed by @alunturner.
* Show room create icon if "UIComponent.roomCreation" is enabled ([\element-hq#10364](matrix-org/matrix-react-sdk#10364)). Contributed by @maheichyk.
* Mentions as links rte ([\element-hq#10463](matrix-org/matrix-react-sdk#10463)). Contributed by @alunturner.
* Better error handling in jump to date ([\element-hq#10405](matrix-org/matrix-react-sdk#10405)). Contributed by @MadLittleMods.
* Show "Invite" menu option if "UIComponent.sendInvites" is enabled. ([\element-hq#10363](matrix-org/matrix-react-sdk#10363)). Contributed by @maheichyk.
* Added `UserProfilesStore`, `LruCache` and user permalink profile caching ([\element-hq#10425](matrix-org/matrix-react-sdk#10425)). Fixes element-hq#10559.
* Mentions as links rte ([\element-hq#10422](matrix-org/matrix-react-sdk#10422)). Contributed by @alunturner.
* Implement MSC3952: intentional mentions ([\element-hq#9983](matrix-org/matrix-react-sdk#9983)).
* Implement MSC3973: Search users in the user directory with the Widget API ([\element-hq#10269](matrix-org/matrix-react-sdk#10269)). Contributed by @dhenneke.
* Permalinks to message are now displayed as pills ([\element-hq#10392](matrix-org/matrix-react-sdk#10392)). Fixes element-hq#24751 and element-hq#24706.
* Show search,dial,explore in filterContainer if "UIComponent.filterContainer" is enabled ([\element-hq#10381](matrix-org/matrix-react-sdk#10381)). Contributed by @maheichyk.
* Increase space panel collapse clickable area ([\element-hq#6084](matrix-org/matrix-react-sdk#6084)). Fixes element-hq#17379. Contributed by @jaiwanth-v.
* Add fallback for replies to Polls ([\element-hq#10380](matrix-org/matrix-react-sdk#10380)). Fixes element-hq#24197. Contributed by @kerryarchibald.
* Permalinks to rooms and users are now pillified ([\element-hq#10388](matrix-org/matrix-react-sdk#10388)). Fixes element-hq#24825.
* Poll history -  access poll history from room settings ([\element-hq#10356](matrix-org/matrix-react-sdk#10356)). Contributed by @kerryarchibald.
* Add API params to mute audio and/or video in Jitsi calls by default ([\element-hq#10376](matrix-org/matrix-react-sdk#10376)). Contributed by @dhenneke.
* Notifications: inline error message on notifications saving error ([\#10288](matrix-org/matrix-react-sdk#10288)). Contributed by @kerryarchibald.
* Support dynamic room predecessor in SpaceProvider ([\element-hq#10348](matrix-org/matrix-react-sdk#10348)). Contributed by @andybalaam.
* Support dynamic room predecessors for RoomProvider ([\element-hq#10346](matrix-org/matrix-react-sdk#10346)). Contributed by @andybalaam.
* Support dynamic room predecessors in OwnBeaconStore ([\element-hq#10339](matrix-org/matrix-react-sdk#10339)). Contributed by @andybalaam.
* Support dynamic room predecessors in ForwardDialog ([\element-hq#10344](matrix-org/matrix-react-sdk#10344)). Contributed by @andybalaam.
* Support dynamic room predecessors in SpaceHierarchy ([\element-hq#10341](matrix-org/matrix-react-sdk#10341)). Contributed by @andybalaam.
* Support dynamic room predecessors in AddExistingToSpaceDialog ([\element-hq#10342](matrix-org/matrix-react-sdk#10342)). Contributed by @andybalaam.
* Support dynamic room predecessors in leave-behaviour ([\#10340](matrix-org/matrix-react-sdk#10340)). Contributed by @andybalaam.
* Support dynamic room predecessors in StopGapWidgetDriver ([\element-hq#10338](matrix-org/matrix-react-sdk#10338)). Contributed by @andybalaam.
* Support dynamic room predecessors in WidgetLayoutStore ([\element-hq#10326](matrix-org/matrix-react-sdk#10326)). Contributed by @andybalaam.
* Support dynamic room predecessors in SpaceStore ([\element-hq#10332](matrix-org/matrix-react-sdk#10332)). Contributed by @andybalaam.
* Sync polls push rules on changes to account_data ([\element-hq#10287](matrix-org/matrix-react-sdk#10287)). Contributed by @kerryarchibald.
* Support dynamic room predecessors in BreadcrumbsStore ([\element-hq#10295](matrix-org/matrix-react-sdk#10295)). Contributed by @andybalaam.
* Improved a11y for Field feedback and Secure Phrase input ([\element-hq#10320](matrix-org/matrix-react-sdk#10320)). Contributed by @Sebbones.
* Support dynamic room predecessors in RoomNotificationStateStore ([\#10297](matrix-org/matrix-react-sdk#10297)). Contributed by @andybalaam.
* Use a newly generated access_token while joining Jitsi ([\element-hq#24646](element-hq#24646)). Fixes element-hq#24687. Contributed by @emrahcom.
* Fix cloudflare action pointing at commit hash instead of tag ([\element-hq#24777](element-hq#24777)). Contributed by @justjanne.
* Allow editing with RTE to overflow for autocomplete visibility ([\element-hq#10499](matrix-org/matrix-react-sdk#10499)). Contributed by @alunturner.
* Added auto focus to Github URL on opening of debug logs modal ([\element-hq#10479](matrix-org/matrix-react-sdk#10479)). Contributed by @ShivamSpm.
* Fix detection of encryption for all users in a room ([\#10487](matrix-org/matrix-react-sdk#10487)). Fixes element-hq#24995.
* Properly generate mentions when editing a reply with MSC3952 ([\element-hq#10486](matrix-org/matrix-react-sdk#10486)). Fixes element-hq#24924. Contributed by @kerryarchibald.
* Improve performance of rendering a room with many hidden events ([\#10131](matrix-org/matrix-react-sdk#10131)). Contributed by @andybalaam.
* Prevent future date selection in jump to date ([\element-hq#10419](matrix-org/matrix-react-sdk#10419)). Fixes element-hq#20800. Contributed by @MadLittleMods.
* Add aria labels to message search bar to improve accessibility ([\element-hq#10476](matrix-org/matrix-react-sdk#10476)). Fixes element-hq#24921.
* Fix decryption failure bar covering the timeline ([\element-hq#10360](matrix-org/matrix-react-sdk#10360)). Fixes element-hq#24780 element-hq#24074 and element-hq#24183. Contributed by @luixxiul.
* Improve profile picture settings accessibility ([\element-hq#10470](matrix-org/matrix-react-sdk#10470)). Fixes element-hq#24919.
* Handle group call redaction ([\element-hq#10465](matrix-org/matrix-react-sdk#10465)).
* Display relative timestamp for threads on the same calendar day ([\#10399](matrix-org/matrix-react-sdk#10399)). Fixes element-hq#24841. Contributed by @kerryarchibald.
* Fix timeline list and paragraph display issues ([\element-hq#10424](matrix-org/matrix-react-sdk#10424)). Fixes element-hq#24602. Contributed by @alunturner.
* Use unique keys for voice broadcast pips ([\element-hq#10457](matrix-org/matrix-react-sdk#10457)). Fixes element-hq#24959.
* Fix "show read receipts sent by other users" not applying to threads ([\element-hq#10445](matrix-org/matrix-react-sdk#10445)). Fixes element-hq#24910.
* Fix joining public rooms without aliases in search dialog ([\element-hq#10437](matrix-org/matrix-react-sdk#10437)). Fixes element-hq#23937.
* Add input validation for `m.direct` in `DMRoomMap` ([\element-hq#10436](matrix-org/matrix-react-sdk#10436)). Fixes element-hq#24909.
* Reduce height reserved for "collapse" button's line on IRC layout ([\element-hq#10211](matrix-org/matrix-react-sdk#10211)). Fixes element-hq#24605. Contributed by @luixxiul.
* Fix `creatorUserId is required` error when opening sticker picker ([\element-hq#10423](matrix-org/matrix-react-sdk#10423)).
* Fix block/inline Element descendants error noise in `NewRoomIntro.tsx` ([\element-hq#10412](matrix-org/matrix-react-sdk#10412)). Contributed by @MadLittleMods.
* Fix profile resizer to make first character of a line selectable in IRC layout ([\element-hq#10396](matrix-org/matrix-react-sdk#10396)). Fixes element-hq#14764. Contributed by @luixxiul.
* Ensure space between wrapped lines of room name on IRC layout ([\#10188](matrix-org/matrix-react-sdk#10188)). Fixes element-hq#24742. Contributed by @luixxiul.
* Remove unreadable alt attribute from the room status bar warning icon (nonsense to screenreaders) ([\element-hq#10402](matrix-org/matrix-react-sdk#10402)). Contributed by @MadLittleMods.
* Fix big date separators when jump to date is enabled ([\element-hq#10404](matrix-org/matrix-react-sdk#10404)). Fixes element-hq#22969. Contributed by @MadLittleMods.
* Fixes user authentication when registering via the module API ([\element-hq#10257](matrix-org/matrix-react-sdk#10257)). Contributed by @maheichyk.
* Handle more edge cases in Space Hierarchy ([\element-hq#10280](matrix-org/matrix-react-sdk#10280)). Contributed by @justjanne.
* Further improve performance with lots of hidden events ([\element-hq#10353](matrix-org/matrix-react-sdk#10353)). Fixes element-hq#24480. Contributed by @andybalaam.
* Respect user cancelling upload flow by dismissing spinner ([\element-hq#10373](matrix-org/matrix-react-sdk#10373)). Fixes element-hq#24667.
* When starting a DM, the end-to-end encryption status icon does now only appear if the DM can be encrypted ([\element-hq#10394](matrix-org/matrix-react-sdk#10394)). Fixes element-hq#24397.
* Fix `[object Object]` in feedback metadata ([\element-hq#10390](matrix-org/matrix-react-sdk#10390)).
* Fix pinned messages card saying nothing pinned while loading ([\#10385](matrix-org/matrix-react-sdk#10385)). Fixes element-hq#24615.
* Fix import e2e key dialog staying disabled after paste ([\element-hq#10375](matrix-org/matrix-react-sdk#10375)). Fixes element-hq#24818.
* Show all labs even if incompatible, with appropriate tooltip explaining requirements ([\element-hq#10369](matrix-org/matrix-react-sdk#10369)). Fixes element-hq#24813.
* Fix UIFeature.Registration not applying to all paths ([\element-hq#10371](matrix-org/matrix-react-sdk#10371)). Fixes element-hq#24814.
* Clicking on a user pill does now only open the profile in the right panel and no longer navigates to the home view. ([\element-hq#10359](matrix-org/matrix-react-sdk#10359)). Fixes element-hq#24797.
* Fix start DM with pending third party invite ([\element-hq#10347](matrix-org/matrix-react-sdk#10347)). Fixes element-hq#24781.
* Fix long display name overflowing reply tile on IRC layout ([\element-hq#10343](matrix-org/matrix-react-sdk#10343)). Fixes element-hq#24738. Contributed by @luixxiul.
* Display redacted body on ThreadView in the same way as normal messages ([\element-hq#9016](matrix-org/matrix-react-sdk#9016)). Fixes element-hq#24729. Contributed by @luixxiul.
* Handle more edge cases in ACL updates ([\element-hq#10279](matrix-org/matrix-react-sdk#10279)). Contributed by @justjanne.
* Allow parsing png files to fail if thumbnailing is successful ([\element-hq#10308](matrix-org/matrix-react-sdk#10308)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants