From 55998028b49b7512739db2ab7b2bdd62c002c8f5 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 18 Aug 2017 11:22:50 +0100 Subject: [PATCH] Show group invites in 'invites' section --- .../views/groups/GroupInviteTile.js | 72 +++++++++++++++++++ src/components/views/rooms/RoomList.js | 22 +++++- 2 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 src/components/views/groups/GroupInviteTile.js diff --git a/src/components/views/groups/GroupInviteTile.js b/src/components/views/groups/GroupInviteTile.js new file mode 100644 index 0000000000..e1351de069 --- /dev/null +++ b/src/components/views/groups/GroupInviteTile.js @@ -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 = ( + + ); + + const label = + {this.props.group.name} + ; + + const badge =
!
; + + return ( + +
+ {av} +
+
+ {label} + {badge} +
+
+ ); + } +}); diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index 9f9f030c27..3958d2fdec 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -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(); + } + + return ret; + }, + render: function() { - var RoomSubList = sdk.getComponent('structures.RoomSubList'); + const RoomSubList = sdk.getComponent('structures.RoomSubList'); + + const inviteSectionExtraTiles = this._makeGroupInviteTiles(); + var self = this; return ( + onShowMoreRooms={ self.onShowMoreRooms } + extraTiles={ inviteSectionExtraTiles } + />