Commit graph

43 commits

Author SHA1 Message Date
Michael Weimann
526645c791
Apply prettier formatting 2022-12-12 12:24:14 +01:00
kegsay
1f703b8898
bugfix: fix an issue where the Notifier would incorrectly fire for non-timeline events (#9664)
* bugfix: fix an issue where the Notifier would incorrectly fire for non-timeline events

This was caused by listening for ClientEvent.Event, not RoomEvent.Timeline.
Fixes https://github.com/vector-im/element-web/issues/17263

* tsc strict checks maybe

* More types?

* Update src/Notifier.ts

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* Update src/Notifier.ts

* fix LL test; review comments

* More tests

* More tsc strict checks..

* More strict ts..

* More ts

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-12-01 12:21:56 +00:00
Michael Telatynski
8c0d202df4
Enable tsc alwaysStrict, strictBindCallApply, noImplicitThis (#9600)
* Enable tsc alwaysStrict

* Enable tsc strictBindCallApply

* Enable tsc noImplicitThis

* Add d.ts

* Improve types

* Add ?

* Increase coverage

* Improve coverage
2022-11-21 11:24:59 +00:00
Michael Telatynski
3747464b41
Make SonarCloud happier (#9545)
* Make SonarCloud happier

* i18n

* Iterate

* Update AddExistingToSpaceDialog.tsx

* Update SlashCommands.tsx
2022-11-07 13:45:34 +00:00
Michael Telatynski
77764d80bc
Fix regressions around media uploads failing and causing soft crashes (#9549) 2022-11-07 11:56:43 +00:00
Germain
306a2449e5
Show thread notification if thread timeline is closed (#9495)
* Show thread notification if thread timeline is closed

* Simplify isViewingEventTimeline statement

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* Fix show desktop notifications

* Add RoomViewStore thread id assertions

* Add Notifier tests

* fix lint

* Remove it.only

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-10-25 16:53:31 +00:00
kegsay
e946674df3
Store refactor: use non-global stores in components (#9293)
* Add Stores and StoresContext and use it in MatrixChat and RoomView

Added a new kind of class:
- Add God object `Stores` which will hold refs to all known stores and the `MatrixClient`. This object is NOT a singleton.
- Add `StoresContext` to hold onto a ref of `Stores` for use inside components.

`StoresContext` is created via:
- Create `Stores` in `MatrixChat`, assigning the `MatrixClient` when we have one set. Currently sets the RVS to `RoomViewStore.instance`.
- Wrap `MatrixChat`s `render()` function in a `StoresContext.Provider` so it can be used anywhere.

`StoresContext` is currently only used in `RoomView` via the following changes:
- Remove the HOC, which redundantly set `mxClient` as a prop. We don't need this as `RoomView` was using the client from `this.context`.
- Change the type of context accepted from `MatrixClientContext` to `StoresContext`.
- Modify alllll the places where `this.context` is used to interact with the client and suffix `.client`.
- Modify places where we use `RoomViewStore.instance` and replace them with `this.context.roomViewStore`.

This makes `RoomView` use a non-global instance of RVS.

* Linting

* SDKContext and make client an optional constructor arg

* Move SDKContext to /src/contexts

* Inject all RVS deps

* Linting

* Remove reset calls; deep copy the INITIAL_STATE to avoid test pollution

* DI singletons used in RoomView; DI them in RoomView-test too

* Initial RoomViewStore.instance after all files are imported to avoid cyclical deps

* Lazily init stores to allow for circular dependencies

Rather than stores accepting a list of other stores in their constructors,
which doesn't work when A needs B and B needs A, make new-style stores simply
accept Stores. When a store needs another store, they access it via `Stores`
which then lazily constructs that store if it needs it. This breaks the
circular dependency at constructor time, without needing to introduce
wiring diagrams or any complex DI framework.

* Delete RoomViewStore.instance

Replaced with Stores.instance.roomViewStore

* Linting

* Move OverridableStores to test/TestStores

* Rejig how eager stores get made; don't automatically do it else tests break

* Linting

* Linting and review comments

* Fix new code to use Stores.instance

* s/Stores/SdkContextClass/g

* Update docs

* Remove unused imports

* Update src/stores/RoomViewStore.tsx

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* Remove empty c'tor to make sonar happy

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-10-19 13:07:03 +01:00
Kerry
1e9872662a
Device manager - test coverage for Notifier (#9392)
* use correct default for notification silencing

* test notifications with no local notifications setting event

* test notifier from cli event to trigger

* lint
2022-10-13 09:07:48 +02:00
Kerry
c795ada78c
Device manager - eagerly create m.local_notification_settings events (#9353)
* eagerly save m.local_notification_settings events

* unskip test

* create local notification settings after first non-cached sync
2022-10-10 15:18:38 +01:00
Šimon Brandner
6356a8c056
Add notifications and toasts for Element Call calls (#9337) 2022-10-06 14:27:12 +00:00
Germain
c2e2f406af
Fixes silenced notification preventing notification prompt to be shown (#9336) 2022-09-30 16:11:04 +01:00
Germain
a49603b9b8
Inhibit local notifications when local notifications are silenced (#9328) 2022-09-29 14:23:02 +00:00
Robin
0d6a550c33
Prepare for Element Call integration (#9224)
* Improve accessibility and testability of Tooltip

Adding a role to Tooltip was motivated by React Testing Library's
reliance on accessibility-related attributes to locate elements.

* Make the ReadyWatchingStore constructor safer

The ReadyWatchingStore constructor previously had a chance to
immediately call onReady, which was dangerous because it was potentially
calling the derived class's onReady at a point when the derived class
hadn't even finished construction yet. In normal usage, I guess this
never was a problem, but it was causing some of the tests I was writing
to crash. This is solved by separating out the onReady call into a start
method.

* Rename 1:1 call components to 'LegacyCall'

to reflect the fact that they're slated for removal, and to not clash
with the new Call code.

* Refactor VideoChannelStore into Call and CallStore

Call is an abstract class that currently only has a Jitsi
implementation, but this will make it easy to later add an Element Call
implementation.

* Remove WidgetReady, ClientReady, and ForceHangupCall hacks

These are no longer used by the new Jitsi call implementation, and can
be removed.

* yarn i18n

* Delete call map entries instead of inserting nulls

* Allow multiple active calls and consolidate call listeners

* Fix a race condition when creating a video room

* Un-hardcode the media device fallback labels

* Apply misc code review fixes

* yarn i18n

* Disconnect from calls more politely on logout

* Fix some strict mode errors

* Fix another updateRoom race condition
2022-08-30 15:13:39 -04:00
Janne Mareike Koschinski
1e4c336fed
New User Onboarding Task List (#9083)
* Improve type of AccessibleButton to accurately represent available props
* Update analytics events
2022-07-29 11:43:29 +00:00
Michael Telatynski
3c5c2bef6d
Remove Piwik support (#8835)
* Remove all mentions of Piwik

* Kill off all consumer of the old Piwik Analytics module

* Simplify ModalManager interface

* i18n

* Attempt to fix old e2e tests

* Remove unused component

* Iterate PR
2022-06-14 17:51:51 +01:00
Sumner Evans
395b167b20
Show notifications even when Element is focused (#8590) 2022-05-19 14:44:47 +00:00
Travis Ralston
4d7b7c4cc8 Remove feature_dnd
Rationale: it's a poor implementation and will conflict with proper feature development.
2022-05-06 12:31:53 -06:00
Travis Ralston
d5ed1eb66e Step 8.3: Convert RoomViewStore to a more modern singleton for imports 2022-03-28 14:02:31 -06:00
Kerry
e96d9157a9
update location event types (#8022)
* update types

Signed-off-by: Kerry Archibald <kerrya@element.io>

* fix tests

Signed-off-by: Kerry Archibald <kerrya@element.io>

* lint

Signed-off-by: Kerry Archibald <kerrya@element.io>

* trigger

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-10 18:03:31 +00:00
Michael Telatynski
7fa01ffb06
Improve typing around event emitter handlers (#7816) 2022-02-22 12:18:08 +00:00
David Baker
9adfdb8fed
Open native room when clicking notification from a virtual room (#7709)
* Handle virtual rooms when showing a notification

* This should be using sharedInstance()

Co-authored-by: Andrew Morgan <andrew@amorgan.xyz>
2022-02-03 11:31:32 +00:00
Šimon Brandner
1d45921d14
Improve/add notifications for location and poll events (#7552)
* Add getSenderName()

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Handle location and poll event notifications

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* i18n

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* pollQuestions -> pollQuestion

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* Make lookup safe and remove poll end event lookup as it wouldn't work

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>

* i18n

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-01-18 17:58:31 -07:00
Germain
53081f52fb
Pass MatrixEvent to displayNotification method (#7355) 2021-12-15 08:34:52 +00:00
Aaron Raimist
2e8a93834b Auto fix
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2021-12-09 09:10:23 +00:00
Michael Telatynski
37bf85489d
Don't inhibit current room notifications if user has Modal open (#7274) 2021-12-03 11:02:47 +00:00
Germain
925136d016
Disallow KeyVerificationRequest as thread root (#7182) 2021-11-22 17:17:05 +00:00
Dariusz Niemczyk
5290afcc4c Replace console.warn with logger.warn
Related https://github.com/vector-im/element-web/issues/18425
2021-10-18 14:08:23 +02:00
Dariusz Niemczyk
5e73a212f4 Replace console.error with logger.error
Related https://github.com/vector-im/element-web/issues/18425
2021-10-18 14:08:23 +02:00
Dariusz Niemczyk
2d1d42b90e
Globally replace all console.logs via codemod (#6827)
This commit replaces all the `console.log` to `logger.log` via an automated script.
Related: vector-im/element-web#18425
2021-09-21 09:48:09 -06:00
Michael Telatynski
b0053f36d3 Fix instances of event.sender being read for just the userId - this field may not be set in time 2021-07-15 17:43:24 +01:00
Šimon Brandner
a4fe2f143f
First batch of burning
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-07-02 12:12:41 +02:00
J. Ryan Stinnett
ae0a8b8da4 Auto-fix lint errors 2021-06-29 13:11:58 +01:00
Šimon Brandner
0542c69b66
Fix types
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-06-24 14:13:27 +02:00
Germain Souquet
0e221ae548 Start decryption process if needed 2021-05-18 16:24:38 +01:00
Travis Ralston
eed5efdbe1 Labs: Add quick/cheap "do not disturb" flag
This just disables audio notifications and the popup, which is the easiest way to do "do not disturb" for a device. This needs spec changes to be done properly, as it's a shame that mobile devices for the user will still go off.

Disabling all of push doesn't sound ideal as it would potentially mean missing highlights for when leaving DND mode.
2021-04-15 00:47:09 -06:00
Travis Ralston
1ac12479ca Convert cases of mxcUrlToHttp to new media customisation 2021-03-10 12:32:18 -07:00
Michael Telatynski
7506e9a85d Disable notifications for the room you have recently been active in
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-10-15 15:58:18 +01:00
Michael Telatynski
e885d9cb0d TS improvements
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-10-13 22:58:21 +01:00
Michael Telatynski
6b5426bddd Rename toolbar Notifier methods to prompt 2020-09-15 13:58:29 +01:00
Michael Telatynski
493d3ae288 Don't show Notifications Prompt Toast if user has master rule enabled 2020-09-14 14:35:08 +01:00
Michael Telatynski
fca48c0426 improve types 2020-08-05 11:22:43 +01:00
Michael Telatynski
c1e152dba2 Decouple Audible notifications from Desktop notifications 2020-08-05 11:10:12 +01:00
Michael Telatynski
d7229064c4 Convert Notifier to typescript 2020-08-05 11:07:10 +01:00
Renamed from src/Notifier.js (Browse further)