Commit graph

3447 commits

Author SHA1 Message Date
RMidhunSuresh f7bfab6e08 Add develop only script tag to index.html 2022-04-13 14:26:40 +05:30
RMidhunSuresh 5e7432b5de Make badge font color always white 2022-04-13 14:26:40 +05:30
RMidhunSuresh 2de0450e97 Make colors better looking for dark variant 2022-04-13 14:26:40 +05:30
RMidhunSuresh f26b51e5da Change colors in more css files 2022-04-13 14:26:40 +05:30
RMidhunSuresh bf74c3c67b Add more colors to manifest 2022-04-13 14:26:40 +05:30
RMidhunSuresh 3d304be211 Convert theme.css
- Use color variables
- Use colorized icons
2022-04-13 14:26:40 +05:30
RMidhunSuresh 3e2a2b7942 Add theme manifest 2022-04-13 14:26:40 +05:30
RMidhunSuresh 061dc5f824 Replace icon colors with predefined color 2022-04-13 14:26:40 +05:30
Bruno Windels 2d4301fe5a WIP: expose streams, senders and receivers 2022-04-12 21:20:24 +02:00
Bruno Windels 36dc463d23 update TODO 2022-04-12 21:20:15 +02:00
Bruno Windels 0e9307608b update TODO 2022-04-12 14:02:57 +02:00
Bruno Windels 2635adb232 hardcode turn server for now 2022-04-12 14:02:38 +02:00
Bruno Windels 797cb23cc7 implement receiving hangup, and retry on connection failure 2022-04-12 14:02:13 +02:00
Bruno Windels fd5b2aa7bb only create datachannel on side that sends invite 2022-04-11 16:29:46 +02:00
Bruno Windels d734a61447 Merge branch 'master' into bwindels/calls 2022-04-11 16:14:34 +02:00
Bruno Windels a710f394eb fix lint warning 2022-04-11 15:57:23 +02:00
Bruno Windels 517e796e90 remove obsolete import 2022-04-11 15:56:31 +02:00
Bruno Windels 5cacdcfee0 Add leave button to call view 2022-04-11 15:55:02 +02:00
Bruno Windels c99fc2ad70 use deviceId getter in Member 2022-04-11 15:54:41 +02:00
Bruno Windels e0efbaeb4e show start time in console logger 2022-04-11 15:54:31 +02:00
Bruno Windels 387bad73b0 remove debug alert 2022-04-11 15:54:20 +02:00
Bruno Windels 9be64730b6 don't automatically join a call we create 2022-04-11 15:54:06 +02:00
Bruno Windels b84c90891c add very early datachannel support 2022-04-11 15:53:34 +02:00
Bruno Windels c02e1de001 log when renegotiation would be triggered 2022-04-11 14:55:14 +02:00
Bruno Windels 8e82aad86b fix logic error that made tracks disappear on the second track event 2022-04-11 14:55:08 +02:00
Bruno Windels 8153060831 only send to target device, not all user devices 2022-04-11 13:39:40 +02:00
Bruno Windels 302d4bc02d use session id from member event, and also send it for other party 2022-04-11 13:39:18 +02:00
Bruno Windels 1b0abebe8f remove unused constants 2022-04-11 12:37:05 +02:00
Bruno Windels 156f5b78bf use session_id from member event to set dest_session_id
so our invite event isn't ignored by EC
2022-04-11 12:36:02 +02:00
Bruno Windels c9bc080aef
Merge pull request #713 from vector-im/bwindels/fix-request-responsecode-error
fix error thrown during request when response code is not used
2022-04-08 15:26:12 +02:00
Bruno Windels cf780ce259 also apply custom tiles in reply preview in composer 2022-04-08 15:16:22 +02:00
Bruno Windels d21d10e4f2 pass in viewClassForTile from SessionView
so you can also use custom tiles when using the grid view
2022-04-08 15:15:21 +02:00
Bruno Windels 1fea14dd10 ensure other parameters don't get passed to TemplateView parent ctors 2022-04-08 15:04:38 +02:00
Bruno Windels 1f0cb542c8 pass viewClassForTile to tile views, so they can create reply view with correct subtile 2022-04-08 15:02:07 +02:00
Bruno Windels 57f50cc416 fix lint warnings 2022-04-08 15:01:27 +02:00
Bruno Windels cda96a35ee rename viewClassForEntry to viewClassForTile 2022-04-08 15:01:06 +02:00
Bruno Windels ac4bb8ca15 export tile view & view models from SDK 2022-04-08 14:27:08 +02:00
Bruno Windels a913671f0c make tileClassForEntry optional, as otherwise it is a breaking change 2022-04-08 14:19:34 +02:00
Bruno Windels 5445db2a42 allow injecting the tilesCreator from the Root/Session/RoomViewModel
this changes the API slightly to be more future-proof,
as we'll expose it in the SDK now.

The function now returns a SimpleTile constructor, rather than an
instance. This allows us to test if an entry would render in the
timeline without creating a tile, which is something we might want in
the matrix layer later on.

The function is now called tileClassForEntry, analogue to what we
do in TimelineView.
2022-04-08 12:52:30 +02:00
Bruno Windels 220f35ae03 fix typescript error 2022-04-08 11:52:21 +02:00
Bruno Windels 6aa79cf6e2 allow to inject custom tile view creator fn into timeline view 2022-04-07 17:25:20 +02:00
Bruno Windels 8a06663023 load all call members for now at startup
later on we can be smarter and load then once you interact with the call
2022-04-07 16:55:41 +02:00
Bruno Windels ad140d5af1 only show video feed when connected 2022-04-07 16:55:26 +02:00
Bruno Windels a78ae52a54 to test with EC, also load prompt calls at startup 2022-04-07 16:55:10 +02:00
Bruno Windels b133f58f7a don't throw here for now, although it is probably a sign of why the tracks disappear 2022-04-07 16:54:47 +02:00
Bruno Windels bade40acc6 log track length 2022-04-07 16:54:36 +02:00
Bruno Windels 1dc46127c3 no need to throw here 2022-04-07 16:54:24 +02:00
Bruno Windels 79411437cf fix who initiates call, needs to be lower, not higher 2022-04-07 16:53:57 +02:00
Bruno Windels 6472800387 impl session id so EC does not ignore our messages 2022-04-07 16:53:37 +02:00
Bruno Windels fe6e7b09b5 don't encrypt to_device messages for now 2022-04-07 16:50:16 +02:00
Bruno Windels 88482292e1
Merge pull request #700 from vector-im/ajbura-patch-2
Add observeNavigation in ViewModel
2022-04-07 14:08:40 +02:00
Bruno Windels 9755062563 fix error thrown during request when response code is not used 2022-04-07 10:35:00 +02:00
Bruno Windels ad1cceac86 fix error thrown during request when response code is not used 2022-04-07 10:33:12 +02:00
Bruno Windels 2852834ce3 persist calls so they can be quickly loaded after a restart
also use event prefixes compatible with Element Call/MSC
2022-04-07 10:32:43 +02:00
Bruno Windels 42b470b06b helper to print open items with console logger 2022-03-30 15:19:07 +02:00
Bruno Windels d7360e7741 fix multiple device support 2022-03-30 15:18:46 +02:00
Bruno Windels c54ffd4fc3 support multiple devices in call per user 2022-03-29 17:13:33 +02:00
Bruno Windels ba45178e04 implement terminate and hangup (currently unused) 2022-03-29 12:01:47 +02:00
Bruno Windels 11a9177592 log state changes in PeerCall 2022-03-29 12:01:47 +02:00
Bruno Windels 4bf171def9 small fixes 2022-03-29 12:01:47 +02:00
Bruno Windels eaf92b382b add structured logging to call code 2022-03-29 12:01:47 +02:00
Bruno Windels a0a07355d4 more improvements, make hangup work 2022-03-29 12:01:47 +02:00
Bruno Windels 0a37fd561e just enough view code to join a call 2022-03-29 12:01:47 +02:00
Bruno Windels 9efd191f4e some more fixes 2022-03-29 12:01:46 +02:00
Bruno Windels cad2aa760d some fixes 2022-03-29 12:01:46 +02:00
Bruno Windels 4be82cd472 WIP on UI 2022-03-29 12:01:46 +02:00
Bruno Windels e760b8e556 basic view model setup 2022-03-29 12:01:46 +02:00
Bruno Windels e482e3aeef expose mediaDevices and webRTC from platform 2022-03-29 12:01:46 +02:00
Bruno Windels 6daae797e5 fix some ts/lint errors 2022-03-29 12:01:46 +02:00
Bruno Windels 07bc0a2376 move observable values each in their own file 2022-03-29 12:01:46 +02:00
Bruno Windels 1bccbbfa08 fix typescript errors 2022-03-29 12:01:46 +02:00
Bruno Windels f674492685 remove local media promises (handle them outside of call code) + glare 2022-03-29 12:01:46 +02:00
Bruno Windels 3c160c8a37 handle remote ice candidates 2022-03-29 12:01:46 +02:00
Bruno Windels b213a45c5c WIP: work on group call state transitions 2022-03-29 12:01:46 +02:00
Bruno Windels b2ac4bc291 WIP13 2022-03-29 12:01:46 +02:00
Bruno Windels 6da4a4209c WIP: work on group calling code 2022-03-29 12:01:46 +02:00
Bruno Windels 4bedd4737b WIP11 2022-03-29 12:01:46 +02:00
Bruno Windels 60da85d641 WIP10 2022-03-29 12:01:46 +02:00
Bruno Windels 6fe90e60db WIP9 2022-03-29 12:01:46 +02:00
Bruno Windels ecf7eab3ee WIP8 - implement PeerCall.handleAnswer and other things 2022-03-29 12:01:46 +02:00
Bruno Windels 25b0148073 WIP8 2022-03-29 12:01:46 +02:00
Bruno Windels 98b77fc761 WIP7 2022-03-29 12:01:46 +02:00
Bruno Windels 179c7e74b5 WIP6 2022-03-29 12:01:46 +02:00
Bruno Windels 98e1dcf799 WIP5 2022-03-29 12:01:46 +02:00
Bruno Windels e5f44aecfb WIP4 2022-03-29 12:01:46 +02:00
Bruno Windels 468841ecea WIP3 2022-03-29 12:01:46 +02:00
Bruno Windels b12bc52c4a WIP2 2022-03-29 12:01:46 +02:00
Bruno Windels 46ebd55092 WIP 2022-03-29 12:01:46 +02:00
Bruno Windels ca211f929b
Merge pull request #702 from vector-im/bwindels/observablemapts
convert (Base)ObservableMap to typescript
2022-03-09 11:53:59 +01:00
Bruno Windels 6150e91c3f fix type error again 2022-03-09 11:51:11 +01:00
Bruno Windels 762925d4a5 fix type error 2022-03-09 11:44:49 +01:00
Bruno Windels 21080d2110 fix tests 2022-03-09 11:41:26 +01:00
Bruno Windels 6d7c983e8e convert (Base)ObservableMap to typescript 2022-03-09 11:33:49 +01:00
Ajay Bura e07abfa02a
Add missing type 2022-03-07 11:33:51 +05:30
Bruno Windels 8b8233ff00
Merge pull request #691 from vector-im/madlittlemods/only-crypto-in-secure-context
Only initialize `Crypto` when olm is provided
2022-03-03 17:33:50 +01:00
Ajay Bura 61ce2f9e3d
Add observeNavigation in ViewModel 2022-03-03 15:36:25 +05:30
Eric Eastwood 2f4c639cef Only initialize Crypto when olm is provided
See https://github.com/vector-im/hydrogen-web/pull/691#discussion_r816988082
2022-03-02 03:17:59 -06:00
Eric Eastwood c09964dc30
Add data-event-id="$xxx" attributes to timeline items for easy selecting in end-to-end tests (#690)
Split out from https://github.com/vector-im/hydrogen-web/pull/653

Example test assertions: db6d3797d7/test/e2e-tests.js (L248-L252)

```js
// Make sure the $abc event on the page has "foobarbaz" text in it
assert.match(
  dom.document.querySelector(`[data-event-id="$abc"]`).outerHTML,
  new RegExp(`.*foobarbaz.*`)
);
```
2022-03-01 18:36:14 -06:00
Bruno Windels 2e1283d199
Merge pull request #670 from vector-im/bwindels/ts-olm
Convert olm code to typescript
2022-03-01 18:53:22 +01:00
Bruno Windels 62ce111938
Merge pull request #692 from ryushar/ryushar/typescriptify
Convert domain/avatar.js and domain/LogoutViewModel.js to Typescript
2022-03-01 18:50:19 +01:00
Bruno Windels 770f7aea00
Merge pull request #689 from vector-im/madlittlemods/add-more-html-elements
Add more HTML form and SVG elements
2022-03-01 18:43:34 +01:00
Bruno Windels b6d9993ed0 remove unused import 2022-03-01 17:08:49 +01:00
Bruno Windels 643ab1a5f3 cant export this for some reason 2022-03-01 15:48:42 +01:00
Bruno Windels ee8e45926f also export observable value classes 2022-03-01 15:42:04 +01:00
Bruno Windels 4c50dbf7ec make SDK exports explicit 2022-03-01 15:41:44 +01:00
Ajay Bura 4a4856a29e
export module 2022-02-28 17:19:01 +05:30
Tushar 17acda7741 typescriptify domain/LogoutViewModel.js 2022-02-25 16:45:07 +05:30
Tushar 7055f02f16 typescriptify domain/avatar.js 2022-02-25 15:52:54 +05:30
Eric Eastwood 0935f2d23a Only try to use window.crypto.subtle in secure contexts to avoid it throwing and stopping all JavaScript
Relevant error if you crypto is used in a non-secure context like a local LAN IP `http://192.168.1.151:3050/`
```
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'deriveBits')
	at new Crypto
	at new Platform
	at mountHydrogen
```

For my use-case with https://github.com/matrix-org/matrix-public-archive, I don't need crypto/encryption at all.

Docs:

 - https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts
 - https://developer.mozilla.org/en-US/docs/Web/API/Crypto/subtle
    - "Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers."

---

Related to https://github.com/vector-im/hydrogen-web/issues/579
2022-02-25 01:59:48 -06:00
Eric Eastwood b993331e06 Add more HTML form and SVG elements
Split off from https://github.com/vector-im/hydrogen-web/pull/653

Personally using `select`, `option`, and `path` currently in https://github.com/matrix-org/matrix-public-archive
but added a few extra SVG elements that seemed common to me.
2022-02-25 01:40:52 -06:00
Bruno Windels 8adc5a9fae these were public actually 2022-02-18 17:24:55 +01:00
Bruno Windels 3f9f0e98c7 remove unused olm property in SenderKeyDecryption 2022-02-18 17:21:27 +01:00
Bruno Windels 82299e5aea
Update src/matrix/e2ee/olm/Decryption.ts
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
2022-02-18 17:18:33 +01:00
Bruno Windels 3330530f68
Update src/matrix/e2ee/DecryptionResult.ts
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
2022-02-18 17:18:25 +01:00
Bruno Windels 620409b3f0 fixup: ctor argument order
as it was an object before, order didn't matter
2022-02-18 17:17:24 +01:00
Bruno Windels 78e0bb1ff0 replace isPreKeyMessage with const enum 2022-02-18 17:00:56 +01:00
Bruno Windels 347edb5988 remove unused storage property 2022-02-18 16:47:47 +01:00
Bruno Windels 49f6a2c2eb
Merge pull request #679 from vector-im/bwindels/fix-vm-ctor-default-options
always pass options to ViewModel constructor
2022-02-17 10:10:19 +01:00
Bruno Windels 2472f11ec0 export RoomStatus 2022-02-17 09:47:57 +01:00
Bruno Windels 7f1fed6f8c always pass options to ViewModel constructor 2022-02-17 09:24:18 +01:00
Bruno Windels d971fd1a47
Merge pull request #678 from vector-im/fix-viewmodel-error
Check options exist on emitChange
2022-02-17 09:08:54 +01:00
RMidhunSuresh 498a43327f Check if options exist in emitChange 2022-02-17 11:30:04 +05:30
Bruno Windels 60f5da60bb fix lint 2022-02-16 18:01:24 +01:00
Bruno Windels e3e90ed167 convert olm/Encryption to TS 2022-02-16 18:00:13 +01:00
Bruno Windels eb5ca200f2 missed rename here 2022-02-16 18:00:03 +01:00
RMidhunSuresh 7a9298328f Return _type from getter 2022-02-16 14:37:18 +05:30
RMidhunSuresh a76bcd1739 Changes in TokenAuth 2022-02-16 13:36:24 +05:30
RMidhunSuresh 60bc4450f3 Use type from server 2022-02-16 13:21:04 +05:30
RMidhunSuresh ed151c8567 Return token stage from createRegistrationStage 2022-02-16 12:33:59 +05:30
RMidhunSuresh c40801efd9 Implement the registration stage 2022-02-16 12:33:24 +05:30
Bruno Windels a4fd1615dd convert decryption 2022-02-15 18:21:29 +01:00
Bruno Windels 74c640f937 convert Session 2022-02-15 18:21:12 +01:00
Bruno Windels 7aeda70ff6 convert DecryptionResult 2022-02-15 18:20:14 +01:00
Bruno Windels 7179758c50 also here 2022-02-15 08:22:09 +01:00
Bruno Windels 1795f58ba5 rename imports 2022-02-14 17:53:59 +01:00
Bruno Windels 4d82dd22b6 convert ViewModel to typescript 2022-02-14 17:50:17 +01:00
Eric Eastwood dfed04166e Fix missing reply text when message body is parsed as HTML in [linkedom](https://github.com/WebReflection/linkedom) (SSR).
- [`linkedom`](https://github.com/WebReflection/linkedom) is being used https://github.com/matrix-org/matrix-public-archive to server-side render (SSR) Hydrogen (`hydrogen-view-sdk`)
 - This is being fixed by using a explicit HTML wrapper boilerplate with `DOMParser` to get a matching result in the browser and `linkedom`.

Currently `parseHTML` is only used for HTML content bodies in events. Events with replies have content bodies that look like `<mx-reply>Hello</mx-reply> What's up` so they're parsed as HTML to strip out the `<mx-reply>` part.

Before | After
---  |  ---
![](https://user-images.githubusercontent.com/558581/153692011-2f0e7114-fcb4-481f-b217-49f461b1740a.png) | ![](https://user-images.githubusercontent.com/558581/153692016-52582fdb-abd9-439d-9dce-3f04da6959db.png)

Before:
```js
// Browser (Chrome, Firefox)
new DOMParser().parseFromString(`<div>foo</div>`, "text/html").body.outerHTML;
// '<body><div>foo</div></body>'

// `linkedom` 
new DOMParser().parseFromString(`<div>foo</div>`, "text/html").body.outerHTML;
// '<body></body>'
```

After (consistent matching output):

```js
// Browser (Chrome, Firefox)
new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>foo</div></body></html>`, "text/html").body.outerHTML;
// '<body><div>foo</div></body>'

// `linkedom`
new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>foo</div></body></html>`, "text/html").body.outerHTML;
// '<body><div>foo</div></body>'
```

`linkedom` goal is to be close to the current DOM standard, but [not too close](https://github.com/WebReflection/linkedom#faq). Focused on the streamlined cases for server-side rendering (SSR).

Here is some context around getting `DOMParser` to interpret things better. The conclusion was to only support the explicit standard cases with a `<html><body></body></html>` specified instead of adding the magic HTML document creation and massaging that the browser does.

 - https://github.com/WebReflection/linkedom/issues/106
 - https://github.com/WebReflection/linkedom/pull/108

 ---

Part of https://github.com/vector-im/hydrogen-web/pull/653 to support server-side rendering Hydrogen for the [`matrix-public-archive`](https://github.com/matrix-org/matrix-public-archive) project.
2022-02-11 20:10:46 -06:00
Bruno Windels 9685ef4dd3 dont log summary valued, as they can contain PII 2022-02-11 18:39:37 +01:00
Bruno Windels ea8f3e5a6a remove argument that is already bound in BaseRoom, making decryption fail 2022-02-11 17:14:56 +01:00
Bruno Windels 57b1542688 use private topic field as public one got removed as not needed in view 2022-02-11 09:37:56 +01:00
Bruno Windels 175f869c83 fix lint 2022-02-10 20:07:27 +01:00
Bruno Windels a442b4b009 Merge branch 'master' into bwindels/create-room 2022-02-10 20:05:40 +01:00
Bruno Windels d65b25f084 also adjust m.direct if the room has already been replaced 2022-02-10 20:00:01 +01:00
Bruno Windels 2765f48a64 create user id array in m.direct if it doesn't exist already 2022-02-10 19:59:44 +01:00
Bruno Windels d2008a336b fix lint errors 2022-02-10 19:54:47 +01:00
Bruno Windels ff46d382ac adjust m.direct when creating a DM 2022-02-10 19:54:15 +01:00
Bruno Windels 3adb2c3254 fix ts errors 2022-02-10 16:44:40 +01:00
Bruno Windels 8526461d3c split up create code into separate files 2022-02-10 16:43:32 +01:00
Bruno Windels 15eecbb463 cleanup 2022-02-10 16:28:44 +01:00
Bruno Windels 30c8ea29b2 fix bug where the wrong left panel tile is removed when accepting invite
because when comparing a tile to itself it wasn't returned 0
2022-02-10 16:27:32 +01:00