Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 12eeb20

Browse files
authored
Merge pull request #3291 from matrix-org/t3chguy/fix_RoomAvatarEvent
Fix wrong default-letter-avatar for RoomAvatarEvent
2 parents b8fb283 + ee35424 commit 12eeb20

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

src/components/views/avatars/BaseAvatar.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/*
22
Copyright 2015, 2016 OpenMarket Ltd
33
Copyright 2018 New Vector Ltd
4+
Copyright 2019 Michael Telatynski <[email protected]>
45
56
Licensed under the Apache License, Version 2.0 (the "License");
67
you may not use this file except in compliance with the License.
@@ -19,7 +20,6 @@ import React from 'react';
1920
import PropTypes from 'prop-types';
2021
import { MatrixClient } from 'matrix-js-sdk';
2122
import AvatarLogic from '../../../Avatar';
22-
import sdk from '../../../index';
2323
import SettingsStore from "../../../settings/SettingsStore";
2424
import AccessibleButton from '../elements/AccessibleButton';
2525

@@ -121,6 +121,10 @@ module.exports = React.createClass({
121121
);
122122
urls.push(defaultImageUrl); // lowest priority
123123
}
124+
125+
// deduplicate URLs
126+
urls = Array.from(new Set(urls));
127+
124128
return {
125129
imageUrls: urls,
126130
defaultImageUrl: defaultImageUrl,

src/components/views/messages/RoomAvatarEvent.js

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/*
22
Copyright 2017 Vector Creations Ltd
3+
Copyright 2019 Michael Telatynski <[email protected]>
34
45
Licensed under the Apache License, Version 2.0 (the "License");
56
you may not use this file except in compliance with the License.
@@ -17,7 +18,6 @@ limitations under the License.
1718
import React from 'react';
1819
import PropTypes from 'prop-types';
1920
import MatrixClientPeg from '../../../MatrixClientPeg';
20-
import { ContentRepo } from 'matrix-js-sdk';
2121
import { _t } from '../../../languageHandler';
2222
import sdk from '../../../index';
2323
import Modal from '../../../Modal';
@@ -31,42 +31,44 @@ module.exports = React.createClass({
3131
mxEvent: PropTypes.object.isRequired,
3232
},
3333

34-
onAvatarClick: function(name) {
35-
const httpUrl = MatrixClientPeg.get().mxcUrlToHttp(this.props.mxEvent.getContent().url);
34+
onAvatarClick: function() {
35+
const cli = MatrixClientPeg.get();
36+
const ev = this.props.mxEvent;
37+
const httpUrl = cli.mxcUrlToHttp(ev.getContent().url);
38+
39+
const room = cli.getRoom(this.props.mxEvent.getRoomId());
40+
const text = _t('%(senderDisplayName)s changed the avatar for %(roomName)s', {
41+
senderDisplayName: ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(),
42+
roomName: room ? room.name : '',
43+
});
44+
3645
const ImageView = sdk.getComponent("elements.ImageView");
3746
const params = {
3847
src: httpUrl,
39-
name: name,
48+
name: text,
4049
};
4150
Modal.createDialog(ImageView, params, "mx_Dialog_lightbox");
4251
},
4352

4453
render: function() {
4554
const ev = this.props.mxEvent;
4655
const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();
47-
const BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
48-
49-
const room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId());
50-
const name = _t('%(senderDisplayName)s changed the avatar for %(roomName)s', {
51-
senderDisplayName: senderDisplayName,
52-
roomName: room ? room.name : '',
53-
});
56+
const RoomAvatar = sdk.getComponent("avatars.RoomAvatar");
5457

5558
if (!ev.getContent().url || ev.getContent().url.trim().length === 0) {
5659
return (
5760
<div className="mx_TextualEvent">
58-
{ _t('%(senderDisplayName)s removed the room avatar.', {senderDisplayName: senderDisplayName}) }
61+
{ _t('%(senderDisplayName)s removed the room avatar.', {senderDisplayName}) }
5962
</div>
6063
);
6164
}
6265

63-
const url = ContentRepo.getHttpUriForMxc(
64-
MatrixClientPeg.get().getHomeserverUrl(),
65-
ev.getContent().url,
66-
Math.ceil(14 * window.devicePixelRatio),
67-
Math.ceil(14 * window.devicePixelRatio),
68-
'crop',
69-
);
66+
const room = MatrixClientPeg.get().getRoom(ev.getRoomId());
67+
// Provide all arguments to RoomAvatar via oobData because the avatar is historic
68+
const oobData = {
69+
avatarUrl: ev.getContent().url,
70+
name: room ? room.name : "",
71+
};
7072

7173
return (
7274
<div className="mx_RoomAvatarEvent">
@@ -75,8 +77,8 @@ module.exports = React.createClass({
7577
{
7678
'img': () =>
7779
<AccessibleButton key="avatar" className="mx_RoomAvatarEvent_avatar"
78-
onClick={this.onAvatarClick.bind(this, name)}>
79-
<BaseAvatar width={14} height={14} url={url} name={name} />
80+
onClick={this.onAvatarClick}>
81+
<RoomAvatar width={14} height={14} oobData={oobData} />
8082
</AccessibleButton>,
8183
})
8284
}

0 commit comments

Comments
 (0)