Commit graph

97 commits

Author SHA1 Message Date
Matthew Hodgson
577c411a39 experimental fix for https://github.com/vector-im/riot-web/issues/2985
needs server to support 1600x1200 thumbnails for retina large ones.
ideally need to cap maximum thumbnail size to 800x600 rather than expand to arbitrary widths.
need to check that luke's funky timeline code doesn't get confused between naturalWidth and infoWidth etc.
also need to consider whether to encode a resolution metric in the event rather than lying about resolution.
2019-01-14 17:10:22 +00:00
Maxwell Kepler
5d35ce9449 Changed letter case. 2018-10-24 19:06:48 +01:00
Maxwell Kepler
5e9db3647a Fixed minor typo in comment 2018-10-22 21:03:39 +01:00
Maxwell Kepler
54f9231582 Added badge to GIFs (https://github.com/vector-im/riot-web/issues/7344) 2018-10-22 20:57:58 +01:00
Bruno Windels
debcc20604 also show spinner on new CATCHUP state 2018-08-30 15:39:48 +02:00
Michael Telatynski
fffb8379d8
delint MImageBody, fixes anonymous class and hyphenated style keys which made react cry
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-06-19 08:37:11 +01:00
Luke Barnard
2eb23ed234 Add loadedImageDimensions to initial state 2018-06-14 15:53:49 +01:00
Luke Barnard
2d14d51ecb Handle images without width/height info correctly
Prior to #1912, height fix up of image events without an `info` in their
content would fail, setting `style.height = null + "px"`.

Now that all thumbnail sizing is done through one path, we can fix the
same problem for all cases (images, stickers, e2e/non-e2e) by handling
images without `info` correctly.

At the bare minimum, we use a null-guard that will make sure an image
without an `info` does not appear in the timeline (as a spinner or
otherwise until loaded). When loaded, we size it like any other image
by using the natural dimensions of the loaded image in place of `info`.

Note that we do not apply the same logic to images that *do* specify an
`info` with `w` and `h` keys. If the aspect ratio of the image does not
match that of the event, we use the one in `info` even when the image
has loaded.
2018-06-14 15:44:55 +01:00
Luke Barnard
c8d233c0a6 If unspecified, don't crash if missing thumbnail info
applies to stickers/images.

We might want to consider to do that is better than assuming a aspect
ratio of 600 x 800 (4:3).
2018-06-14 14:19:30 +01:00
Luke Barnard
2120858e5f
Merge branch 'develop' into luke/kill-mimage-fixupheight 2018-06-11 14:24:40 +01:00
Travis Ralston
033c41a2a8 Align pinned message contents and reduce image size
Fixes https://github.com/vector-im/riot-web/issues/5421

Signed-off-by: Travis Ralston <travpc@gmail.com>
2018-05-26 18:40:48 -06:00
Luke Barnard
c249bee9b5 Grammar 2018-05-22 16:09:54 +01:00
Luke Barnard
fb5dd4a410 Remove spurious fixupHeight 2018-05-22 10:46:10 +01:00
Luke Barnard
e4f8c09c32 Only include placeholder in DOM when necessary 2018-05-22 10:43:16 +01:00
Luke Barnard
e9ae3de00f Merge branch 'develop' into luke/kill-mimage-fixupheight 2018-05-21 17:15:54 +01:00
Luke Barnard
836dc8b0ef Factor out all shared logic between MStickerBody and MImageBody
The benefits of this:
 - One code path for determining spinner/placeholder and it's position
   for loading images/stickers. This includes spinner used in e2e
   decryption of images.
 - Very small definition for MStickerBody, only overriding the minimal
   differences is has from MImageBody.

The disadvantages:
 - Slightly more complicated MImageBody, but hopefully not less
   readable.
2018-05-21 16:59:13 +01:00
Luke Barnard
015093b371 Move inline style to stylesheet 2018-05-18 11:34:41 +01:00
Luke Barnard
7e7e2a7473 Add more comments to explain thumbnail sizing 2018-05-18 10:27:22 +01:00
Luke Barnard
d11442de04 Adjust comment 2018-05-18 10:15:59 +01:00
Luke Barnard
bbcf2fea53 Fix e2e image thumbnail spinner containing box correct size 2018-05-18 09:47:49 +01:00
Luke Barnard
b28ed6075b Implement slightly hacky CSS soln. to thumbnail sizing
As the slightly nicer alternative to fixupHeight being applied once
we actually have a timelineWidth.

The niceness comes from not needing timelineWidth, which means we can
implement at render time with CSS. (Despite still calculating aspect
ratios when we render.)
2018-05-17 18:15:34 +01:00
David Baker
a7006307bf Call afterComponentDidMount() after componentDidMount 2018-05-17 16:50:16 +01:00
David Baker
e53497421e Fix image size jumping regression
Fixes https://github.com/vector-im/riot-web/issues/6654
2018-05-17 16:47:17 +01:00
Matthew Hodgson
af5be5c36c appease the fascist linter 2018-05-05 22:28:09 +01:00
Matthew Hodgson
14bcfdd5c6 fix NPE 2018-05-05 22:08:37 +01:00
Matthew Hodgson
5749fbcff9
Merge pull request #1864 from matrix-org/matthew/blob_urls
Switch back to using blob URLs for rendering e2e attachments
2018-04-30 19:01:58 +01:00
Matthew Hodgson
db5fc53853 final comment 2018-04-29 04:53:32 +01:00
Matthew Hodgson
be523b3edc lint 2018-04-29 04:31:30 +01:00
Matthew Hodgson
551d3ebda0 correctly fix up thumbnail height onload.
fixes https://github.com/vector-im/riot-web/issues/6492, although popping is inevitable in
the current implementation as it only fixes up the thumbnail size once the image has loaded.
2018-04-29 04:28:15 +01:00
Matthew Hodgson
731f1fa7d3 clarify another scrolljump bug 2018-04-29 04:00:02 +01:00
Matthew Hodgson
c254d043c5 fix ugly img errors and correctly render SVG thumbnails
Fixes https://github.com/vector-im/riot-web/issues/6271
Fixes https://github.com/vector-im/riot-web/issues/1341
2018-04-29 03:58:17 +01:00
Matthew Hodgson
9c5407c21f revokeObjectURLs 2018-04-29 03:17:55 +01:00
Matthew Hodgson
9701fd32b7 switch back to blob urls for rendering e2e attachments
Based on @walle303's work at https://github.com/matrix-org/matrix-react-sdk/pull/1820
Deliberately reverts 8f778f54fd
Mitigates XSS by whitelisting the mime-types of the attachments so that malicious ones
should not be recognised and executed by the browser.
2018-04-29 03:07:31 +01:00
David Baker
f5956c87f6 Bind onImageError in constructor
Tt uses `this` but wasn't bound anywhere so the error handler was
just throwing an exception.
2018-04-23 18:14:59 +01:00
Richard Lewis
7e062090de Cleanup timeout before unmount. 2018-03-09 21:12:56 +00:00
Richard Lewis
c59dd5b840 Add placeholders for sticker images (and fancy transitions). 2018-03-08 12:31:01 +00:00
Richard Lewis
5ca0fc3ab5 Make MStickerBody extend MImageBody. 2018-02-26 14:01:33 +00:00
Luke Barnard
cf4ae681f4
Offline mode (#1723)
* Allow the client to run without connection to HS (i.e. using indexeddb)

Allows running without having pushRules (it's safe not to have these 
when running from indexeddb sync.)

This means rooms will be displayed with "unknown" notifcation state.

This assumes anything that uses the push rules will get pushRule state
again when the client starts syncing again.

For recovering from being disconnected, 
* If an avatar has fallen back, try again on reconnection
* If a thumbnail image failed to load, retry on reconnect
* Load joined groups when reconnecting

Update tests to give MELS a context.matrixClient
2018-02-06 17:50:53 +00:00
Aidan Gauland
35780f5ae0 Remove use of deprecated React.PropTypes
Replace all uses of React.PropTypes with PropTypes and importing PropTypes from
'prop-types'.
2017-12-26 14:03:18 +13:00
Luke Barnard
641add4964 Fix one kind of scroll jump
by calling onWidgetLoad when the <img> in MImageBody loads
2017-12-01 14:18:13 +00:00
Travis Ralston
ae10a11ac4 Convert synced settings to granular settings
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-29 01:43:52 -06:00
Luke Barnard
d3f9a3aeb5 Run eslint --fix
Fixing 1000s of lint issues. Some rules cannot be `--fix`ed but this goes some way to linting the entire codebase.
2017-10-11 17:56:17 +01:00
Richard van der Hoff
0254d2b3a2 q(...) -> Promise.resolve
```
find src test -name '*.js' | xargs perl -i -pe 's/\b[qQ]\(/Promise.resolve(/'
```
2017-07-12 18:05:08 +01:00
Richard van der Hoff
a06bd84213 replace imports of q with bluebird
update `package.json`

```
find src test -name '*.js' |
   xargs perl -i -pe 'if (/require\(.[qQ].\)/) { $_ = "import Promise from '\''bluebird'\'';\n"; }'

find src test -name '*.js' |
   xargs perl -i -pe 'if (/import [qQ]/) { $_ = "import Promise from '\''bluebird'\'';\n"; }'
```
2017-07-12 18:05:08 +01:00
Marcel
70e7d81093 More i18n strings (#963)
* Add i18n for E2E import and Export Dialogs

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add various previous missing i18n strings

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Translate CreateRoomButton

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add ChatInviteDialog and fix missing to.

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add ConfitmRedactDialog translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add DeactivateAccountDialog translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add DeviceVerifyDialog translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add SessionRestoreErrorDialog translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add SetDisplayNameDialog translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add UnknownDeviceDialog translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add AddressTile translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add DeviceVerifyButtons translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add Dropdown translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add UserSelector translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add CaptchaForm translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add CasLogin translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add CustomServerDialog translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add InteractiveAuthEntryComponents translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add LoginFooter translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add RegistrationForm translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add ServerConfig translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add MAudioBody translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add MImageBody translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add MVideoBody translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add TextualBody translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add UnknownBody translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add UrlPreviewSettings translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add AuxPanel translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* Add PresenceLabel translations

Signed-off-by: MTRNord <mtrnord1@gmail.com>

* fix syntax error

* weird space :P

* missing ','

* fix missing value

* fix json fail

* remove acidential added file

* fix another json fail
2017-05-30 15:09:57 +01:00
Michael Telatynski
6f0c3b1c03 Pass file name (as name) to the ImageView modal
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-04-17 14:50:34 +01:00
Will Hunt
4b5e8d66b8 Fixed styling + removed log line 2017-03-02 13:39:56 +00:00
Will Hunt
4509901592 image (gifs) and video messages will autoplay if enabled. 2017-02-27 22:16:56 +00:00
David Baker
18d4d3392a Fix a bunch of linting errors
eslint --fix and a few manual ones
2017-01-20 14:22:27 +00:00
Mark Haines
81e429eb14 Fix e2e attachment download by using iframes. (#562)
* Render attachments inside iframes.

* Fix up the image and video views

* Fix m.audio

* Comments, and only use the cross domain renderer if the attachment is encrypted

* Fix whitespace

* Don't decrypt file attachments immediately

* Use https://usercontent.riot.im/v1.html by default

* typos

* Put the config in the React context.

Use it in MFileBody to configure the cross origin renderer URL.

* Call it appConfig in the context

* Return the promises so they don't get dropped
2016-12-02 14:21:07 +00:00