Merge remote-tracking branch 'origin/dbkr/my_groups' into dbkr/groups_better_groupview
This commit is contained in:
commit
c1833f9833
8 changed files with 40 additions and 30 deletions
|
@ -269,6 +269,7 @@ export default React.createClass({
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PageTypes.HomePage:
|
case PageTypes.HomePage:
|
||||||
|
{
|
||||||
// If team server config is present, pass the teamServerURL. props.teamToken
|
// If team server config is present, pass the teamServerURL. props.teamToken
|
||||||
// must also be set for the team page to be displayed, otherwise the
|
// must also be set for the team page to be displayed, otherwise the
|
||||||
// welcomePageUrl is used (which might be undefined).
|
// welcomePageUrl is used (which might be undefined).
|
||||||
|
@ -280,6 +281,7 @@ export default React.createClass({
|
||||||
teamToken={this.props.teamToken}
|
teamToken={this.props.teamToken}
|
||||||
homePageUrl={this.props.config.welcomePageUrl}
|
homePageUrl={this.props.config.welcomePageUrl}
|
||||||
/>;
|
/>;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PageTypes.UserView:
|
case PageTypes.UserView:
|
||||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import sdk from '../../index';
|
import sdk from '../../index';
|
||||||
import { _t, _tJsx } from '../../languageHandler';
|
import { _t, _tJsx } from '../../languageHandler';
|
||||||
import WithMatrixClient from '../../wrappers/WithMatrixClient';
|
import withMatrixClient from '../../wrappers/withMatrixClient';
|
||||||
import AccessibleButton from '../views/elements/AccessibleButton';
|
import AccessibleButton from '../views/elements/AccessibleButton';
|
||||||
import dis from '../../dispatcher';
|
import dis from '../../dispatcher';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
@ -40,10 +40,10 @@ const GroupTile = React.createClass({
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
return <a onClick={this.onClick} href="#">{this.props.groupId}</a>;
|
return <a onClick={this.onClick} href="#">{this.props.groupId}</a>;
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default WithMatrixClient(React.createClass({
|
export default withMatrixClient(React.createClass({
|
||||||
displayName: 'MyGroups',
|
displayName: 'MyGroups',
|
||||||
|
|
||||||
propTypes: {
|
propTypes: {
|
||||||
|
@ -84,12 +84,12 @@ export default WithMatrixClient(React.createClass({
|
||||||
|
|
||||||
let content;
|
let content;
|
||||||
if (this.state.groups) {
|
if (this.state.groups) {
|
||||||
let groupNodes = [];
|
const groupNodes = [];
|
||||||
this.state.groups.forEach((g) => {
|
this.state.groups.forEach((g) => {
|
||||||
groupNodes.push(
|
groupNodes.push(
|
||||||
<div key={g}>
|
<div key={g}>
|
||||||
<GroupTile groupId={g} />
|
<GroupTile groupId={g} />
|
||||||
</div>
|
</div>,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
content = <div>
|
content = <div>
|
||||||
|
@ -117,7 +117,7 @@ export default WithMatrixClient(React.createClass({
|
||||||
{_t(
|
{_t(
|
||||||
'Create a group to represent your community! '+
|
'Create a group to represent your community! '+
|
||||||
'Define a set of rooms and your own custom homepage '+
|
'Define a set of rooms and your own custom homepage '+
|
||||||
'to mark out your space in the Matrix universe.'
|
'to mark out your space in the Matrix universe.',
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div className="mx_MyGroups_joinBox">
|
<div className="mx_MyGroups_joinBox">
|
||||||
|
|
|
@ -38,7 +38,7 @@ export default React.createClass({
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
getGroupAvatarUrl: function(props) {
|
getGroupAvatarUrl: function() {
|
||||||
return MatrixClientPeg.get().mxcUrlToHttp(
|
return MatrixClientPeg.get().mxcUrlToHttp(
|
||||||
this.props.groupAvatarUrl,
|
this.props.groupAvatarUrl,
|
||||||
this.props.width,
|
this.props.width,
|
||||||
|
@ -50,6 +50,8 @@ export default React.createClass({
|
||||||
render: function() {
|
render: function() {
|
||||||
const BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
|
const BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
|
||||||
// extract the props we use from props so we can pass any others through
|
// extract the props we use from props so we can pass any others through
|
||||||
|
// should consider adding this as a global rule in js-sdk?
|
||||||
|
/*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/
|
||||||
const {groupId, groupAvatarUrl, ...otherProps} = this.props;
|
const {groupId, groupAvatarUrl, ...otherProps} = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -60,5 +62,5 @@ export default React.createClass({
|
||||||
{...otherProps}
|
{...otherProps}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -20,7 +20,6 @@ import sdk from '../../../index';
|
||||||
import dis from '../../../dispatcher';
|
import dis from '../../../dispatcher';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import MatrixClientPeg from '../../../MatrixClientPeg';
|
import MatrixClientPeg from '../../../MatrixClientPeg';
|
||||||
import AccessibleButton from '../elements/AccessibleButton';
|
|
||||||
|
|
||||||
// We match fairly liberally and leave it up to the server to reject if
|
// We match fairly liberally and leave it up to the server to reject if
|
||||||
// there are invalid characters etc.
|
// there are invalid characters etc.
|
||||||
|
@ -62,14 +61,17 @@ export default React.createClass({
|
||||||
const parsedGroupId = this._parseGroupId(this.state.groupId);
|
const parsedGroupId = this._parseGroupId(this.state.groupId);
|
||||||
let error = null;
|
let error = null;
|
||||||
if (parsedGroupId === null) {
|
if (parsedGroupId === null) {
|
||||||
error = _t("Group IDs must be of the form +localpart:%(domain)s", {domain: MatrixClientPeg.get().getDomain()});
|
error = _t(
|
||||||
|
"Group IDs must be of the form +localpart:%(domain)s",
|
||||||
|
{domain: MatrixClientPeg.get().getDomain()},
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
const localpart = parsedGroupId[0];
|
|
||||||
const domain = parsedGroupId[1];
|
const domain = parsedGroupId[1];
|
||||||
if (domain !== MatrixClientPeg.get().getDomain()) {
|
if (domain !== MatrixClientPeg.get().getDomain()) {
|
||||||
error = _t(
|
error = _t(
|
||||||
"It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s",
|
"It is currently only possible to create groups on your own home server: "+
|
||||||
{domain: MatrixClientPeg.get().getDomain()}
|
"use a group ID ending with %(domain)s",
|
||||||
|
{domain: MatrixClientPeg.get().getDomain()},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,6 +116,9 @@ export default React.createClass({
|
||||||
* Parse a string that may be a group ID
|
* Parse a string that may be a group ID
|
||||||
* If the string is a valid group ID, return a list of [localpart, domain],
|
* If the string is a valid group ID, return a list of [localpart, domain],
|
||||||
* otherwise return null.
|
* otherwise return null.
|
||||||
|
*
|
||||||
|
* @param {string} groupId The ID of the group
|
||||||
|
* @return {string[]} array of localpart, domain
|
||||||
*/
|
*/
|
||||||
_parseGroupId: function(groupId) {
|
_parseGroupId: function(groupId) {
|
||||||
const matches = GROUP_REGEX.exec(this.state.groupId);
|
const matches = GROUP_REGEX.exec(this.state.groupId);
|
||||||
|
|
|
@ -24,7 +24,7 @@ var Modal = require('../../../Modal');
|
||||||
|
|
||||||
var sdk = require('../../../index');
|
var sdk = require('../../../index');
|
||||||
var TextForEvent = require('../../../TextForEvent');
|
var TextForEvent = require('../../../TextForEvent');
|
||||||
import WithMatrixClient from '../../../wrappers/WithMatrixClient';
|
import withMatrixClient from '../../../wrappers/withMatrixClient';
|
||||||
|
|
||||||
var ContextualMenu = require('../../structures/ContextualMenu');
|
var ContextualMenu = require('../../structures/ContextualMenu');
|
||||||
import dis from '../../../dispatcher';
|
import dis from '../../../dispatcher';
|
||||||
|
@ -59,7 +59,7 @@ var MAX_READ_AVATARS = 5;
|
||||||
// | '--------------------------------------' |
|
// | '--------------------------------------' |
|
||||||
// '----------------------------------------------------------'
|
// '----------------------------------------------------------'
|
||||||
|
|
||||||
module.exports = WithMatrixClient(React.createClass({
|
module.exports = withMatrixClient(React.createClass({
|
||||||
displayName: 'EventTile',
|
displayName: 'EventTile',
|
||||||
|
|
||||||
propTypes: {
|
propTypes: {
|
||||||
|
|
|
@ -36,12 +36,12 @@ import createRoom from '../../../createRoom';
|
||||||
import DMRoomMap from '../../../utils/DMRoomMap';
|
import DMRoomMap from '../../../utils/DMRoomMap';
|
||||||
import Unread from '../../../Unread';
|
import Unread from '../../../Unread';
|
||||||
import { findReadReceiptFromUserId } from '../../../utils/Receipt';
|
import { findReadReceiptFromUserId } from '../../../utils/Receipt';
|
||||||
import WithMatrixClient from '../../../wrappers/WithMatrixClient';
|
import withMatrixClient from '../../../wrappers/withMatrixClient';
|
||||||
import AccessibleButton from '../elements/AccessibleButton';
|
import AccessibleButton from '../elements/AccessibleButton';
|
||||||
import GeminiScrollbar from 'react-gemini-scrollbar';
|
import GeminiScrollbar from 'react-gemini-scrollbar';
|
||||||
|
|
||||||
|
|
||||||
module.exports = WithMatrixClient(React.createClass({
|
module.exports = withMatrixClient(React.createClass({
|
||||||
displayName: 'MemberInfo',
|
displayName: 'MemberInfo',
|
||||||
|
|
||||||
propTypes: {
|
propTypes: {
|
||||||
|
|
|
@ -19,10 +19,10 @@ import { _t } from '../../../languageHandler';
|
||||||
|
|
||||||
import sdk from '../../../index';
|
import sdk from '../../../index';
|
||||||
import AddThreepid from '../../../AddThreepid';
|
import AddThreepid from '../../../AddThreepid';
|
||||||
import WithMatrixClient from '../../../wrappers/WithMatrixClient';
|
import withMatrixClient from '../../../wrappers/withMatrixClient';
|
||||||
import Modal from '../../../Modal';
|
import Modal from '../../../Modal';
|
||||||
|
|
||||||
export default WithMatrixClient(React.createClass({
|
export default withMatrixClient(React.createClass({
|
||||||
displayName: 'AddPhoneNumber',
|
displayName: 'AddPhoneNumber',
|
||||||
|
|
||||||
propTypes: {
|
propTypes: {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Copyright 2015, 2016 OpenMarket Ltd
|
Copyright 2015, 2016 OpenMarket Ltd
|
||||||
|
Copyright 2017 Vector Creations Ltd
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -26,7 +27,7 @@ import React from 'react';
|
||||||
*/
|
*/
|
||||||
export default function(WrappedComponent) {
|
export default function(WrappedComponent) {
|
||||||
return React.createClass({
|
return React.createClass({
|
||||||
displayName: "WithMatrixClient<" + WrappedComponent.displayName + ">",
|
displayName: "withMatrixClient<" + WrappedComponent.displayName + ">",
|
||||||
|
|
||||||
contextTypes: {
|
contextTypes: {
|
||||||
matrixClient: React.PropTypes.instanceOf(Matrix.MatrixClient).isRequired,
|
matrixClient: React.PropTypes.instanceOf(Matrix.MatrixClient).isRequired,
|
Loading…
Reference in a new issue