mirror of
https://github.com/element-hq/element-web.git
synced 2024-12-13 13:45:56 +03:00
Show group invites in 'invites' section
This commit is contained in:
parent
ddf1017799
commit
55998028b4
2 changed files with 92 additions and 2 deletions
72
src/components/views/groups/GroupInviteTile.js
Normal file
72
src/components/views/groups/GroupInviteTile.js
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
/*
|
||||||
|
Copyright 2017 New Vector Ltd
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import sdk from '../../../index';
|
||||||
|
import dis from '../../../dispatcher';
|
||||||
|
import withMatrixClient from '../../../wrappers/withMatrixClient';
|
||||||
|
import Matrix from "matrix-js-sdk";
|
||||||
|
import AccessibleButton from '../elements/AccessibleButton';
|
||||||
|
|
||||||
|
export default React.createClass({
|
||||||
|
displayName: 'GroupInviteTile',
|
||||||
|
|
||||||
|
propTypes: {
|
||||||
|
group: PropTypes.object.isRequired,
|
||||||
|
},
|
||||||
|
|
||||||
|
onClick: function(e) {
|
||||||
|
dis.dispatch({
|
||||||
|
action: 'view_group',
|
||||||
|
group_id: this.props.group.groupId,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function() {
|
||||||
|
const BaseAvatar = sdk.getComponent('avatars.BaseAvatar');
|
||||||
|
const EmojiText = sdk.getComponent('elements.EmojiText');
|
||||||
|
|
||||||
|
const av = (
|
||||||
|
<BaseAvatar name={this.props.group.name} width={24} height={24}
|
||||||
|
url={this.props.group.avatarUrl}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
const label = <EmojiText
|
||||||
|
element="div"
|
||||||
|
title={this.props.group.name}
|
||||||
|
className="mx_GroupInviteTile_name"
|
||||||
|
dir="auto"
|
||||||
|
>
|
||||||
|
{this.props.group.name}
|
||||||
|
</EmojiText>;
|
||||||
|
|
||||||
|
const badge = <div className="mx_GroupInviteTile_badge">!</div>;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<AccessibleButton className="mx_GroupInviteTile" onClick={this.onClick}>
|
||||||
|
<div className="mx_GroupInviteTile_avatarContainer">
|
||||||
|
{av}
|
||||||
|
</div>
|
||||||
|
<div className="mx_GroupInviteTile_nameContainer">
|
||||||
|
{label}
|
||||||
|
{badge}
|
||||||
|
</div>
|
||||||
|
</AccessibleButton>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
|
@ -544,8 +544,24 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_makeGroupInviteTiles() {
|
||||||
|
const ret = [];
|
||||||
|
|
||||||
|
const GroupInviteTile = sdk.getComponent('groups.GroupInviteTile');
|
||||||
|
for (const group of MatrixClientPeg.get().getGroups()) {
|
||||||
|
if (group.myMembership !== 'invite') continue;
|
||||||
|
|
||||||
|
ret.push(<GroupInviteTile key={group.groupId} group={group} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
var RoomSubList = sdk.getComponent('structures.RoomSubList');
|
const RoomSubList = sdk.getComponent('structures.RoomSubList');
|
||||||
|
|
||||||
|
const inviteSectionExtraTiles = this._makeGroupInviteTiles();
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
return (
|
return (
|
||||||
<GeminiScrollbar className="mx_RoomList_scrollbar"
|
<GeminiScrollbar className="mx_RoomList_scrollbar"
|
||||||
|
@ -560,7 +576,9 @@ module.exports = React.createClass({
|
||||||
collapsed={ self.props.collapsed }
|
collapsed={ self.props.collapsed }
|
||||||
searchFilter={ self.props.searchFilter }
|
searchFilter={ self.props.searchFilter }
|
||||||
onHeaderClick={ self.onSubListHeaderClick }
|
onHeaderClick={ self.onSubListHeaderClick }
|
||||||
onShowMoreRooms={ self.onShowMoreRooms } />
|
onShowMoreRooms={ self.onShowMoreRooms }
|
||||||
|
extraTiles={ inviteSectionExtraTiles }
|
||||||
|
/>
|
||||||
|
|
||||||
<RoomSubList list={ self.state.lists['m.favourite'] }
|
<RoomSubList list={ self.state.lists['m.favourite'] }
|
||||||
label={ _t('Favourites') }
|
label={ _t('Favourites') }
|
||||||
|
|
Loading…
Reference in a new issue