diff --git a/src/async-components/views/dialogs/ExportE2eKeysDialog.js b/src/async-components/views/dialogs/ExportE2eKeysDialog.js
index 06fb0668d5..529780c121 100644
--- a/src/async-components/views/dialogs/ExportE2eKeysDialog.js
+++ b/src/async-components/views/dialogs/ExportE2eKeysDialog.js
@@ -19,7 +19,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler';
-import * as Matrix from 'matrix-js-sdk';
+import { MatrixClient } from 'matrix-js-sdk';
import * as MegolmExportEncryption from '../../../utils/MegolmExportEncryption';
import sdk from '../../../index';
@@ -30,7 +30,7 @@ export default React.createClass({
displayName: 'ExportE2eKeysDialog',
propTypes: {
- matrixClient: PropTypes.instanceOf(Matrix.MatrixClient).isRequired,
+ matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
onFinished: PropTypes.func.isRequired,
},
diff --git a/src/async-components/views/dialogs/ImportE2eKeysDialog.js b/src/async-components/views/dialogs/ImportE2eKeysDialog.js
index 10744a8911..5181b6da2f 100644
--- a/src/async-components/views/dialogs/ImportE2eKeysDialog.js
+++ b/src/async-components/views/dialogs/ImportE2eKeysDialog.js
@@ -17,7 +17,7 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
-import * as Matrix from 'matrix-js-sdk';
+import { MatrixClient } from 'matrix-js-sdk';
import * as MegolmExportEncryption from '../../../utils/MegolmExportEncryption';
import sdk from '../../../index';
import { _t } from '../../../languageHandler';
@@ -41,7 +41,7 @@ export default React.createClass({
displayName: 'ImportE2eKeysDialog',
propTypes: {
- matrixClient: PropTypes.instanceOf(Matrix.MatrixClient).isRequired,
+ matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
onFinished: PropTypes.func.isRequired,
},
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index 3730b979f7..0ef9e362be 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import * as Matrix from 'matrix-js-sdk';
+import { MatrixClient } from 'matrix-js-sdk';
import React from 'react';
import PropTypes from 'prop-types';
import { DragDropContext } from 'react-beautiful-dnd';
@@ -62,7 +62,7 @@ const LoggedInView = React.createClass({
displayName: 'LoggedInView',
propTypes: {
- matrixClient: PropTypes.instanceOf(Matrix.MatrixClient).isRequired,
+ matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
page_type: PropTypes.string.isRequired,
onRoomCreated: PropTypes.func,
@@ -78,7 +78,7 @@ const LoggedInView = React.createClass({
},
childContextTypes: {
- matrixClient: PropTypes.instanceOf(Matrix.MatrixClient),
+ matrixClient: PropTypes.instanceOf(MatrixClient),
authCache: PropTypes.object,
},
diff --git a/src/components/structures/MyGroups.js b/src/components/structures/MyGroups.js
index 7411c7e6c1..aec4767e7b 100644
--- a/src/components/structures/MyGroups.js
+++ b/src/components/structures/MyGroups.js
@@ -1,5 +1,6 @@
/*
Copyright 2017 Vector Creations Ltd
+Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,19 +17,15 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
+import { MatrixClient } from 'matrix-js-sdk';
import sdk from '../../index';
import { _t } from '../../languageHandler';
import dis from '../../dispatcher';
-import withMatrixClient from '../../wrappers/withMatrixClient';
import AccessibleButton from '../views/elements/AccessibleButton';
-export default withMatrixClient(React.createClass({
+export default React.createClass({
displayName: 'MyGroups',
- propTypes: {
- matrixClient: PropTypes.object.isRequired,
- },
-
getInitialState: function() {
return {
groups: null,
@@ -36,6 +33,10 @@ export default withMatrixClient(React.createClass({
};
},
+ contextTypes: {
+ matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
+ },
+
componentWillMount: function() {
this._fetch();
},
@@ -45,7 +46,7 @@ export default withMatrixClient(React.createClass({
},
_fetch: function() {
- this.props.matrixClient.getJoinedGroups().done((result) => {
+ this.context.matrixClient.getJoinedGroups().done((result) => {
this.setState({groups: result.groups, error: null});
}, (err) => {
if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {
@@ -146,4 +147,4 @@ export default withMatrixClient(React.createClass({
;
},
-}));
+});
diff --git a/src/components/views/elements/Flair.js b/src/components/views/elements/Flair.js
index aa629794ba..6a70b915c2 100644
--- a/src/components/views/elements/Flair.js
+++ b/src/components/views/elements/Flair.js
@@ -134,9 +134,6 @@ Flair.propTypes = {
groups: PropTypes.arrayOf(PropTypes.string),
};
-// TODO: We've decided that all components should follow this pattern, which means removing withMatrixClient and using
-// this.context.matrixClient everywhere instead of this.props.matrixClient.
-// See https://github.com/vector-im/riot-web/issues/4951.
Flair.contextTypes = {
matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
};
diff --git a/src/components/views/groups/GroupMemberTile.js b/src/components/views/groups/GroupMemberTile.js
index f967a33f46..971255d548 100644
--- a/src/components/views/groups/GroupMemberTile.js
+++ b/src/components/views/groups/GroupMemberTile.js
@@ -1,6 +1,7 @@
/*
Copyright 2017 Vector Creations Ltd
Copyright 2017 New Vector Ltd
+Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,16 +18,15 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
+import { MatrixClient } from 'matrix-js-sdk';
import sdk from '../../../index';
import dis from '../../../dispatcher';
import { GroupMemberType } from '../../../groups';
-import withMatrixClient from '../../../wrappers/withMatrixClient';
-export default withMatrixClient(React.createClass({
+export default React.createClass({
displayName: 'GroupMemberTile',
propTypes: {
- matrixClient: PropTypes.object,
groupId: PropTypes.string.isRequired,
member: GroupMemberType.isRequired,
},
@@ -35,6 +35,10 @@ export default withMatrixClient(React.createClass({
return {};
},
+ contextTypes: {
+ matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
+ },
+
onClick: function(e) {
dis.dispatch({
action: 'view_group_user',
@@ -48,7 +52,7 @@ export default withMatrixClient(React.createClass({
const EntityTile = sdk.getComponent('rooms.EntityTile');
const name = this.props.member.displayname || this.props.member.userId;
- const avatarUrl = this.props.matrixClient.mxcUrlToHttp(
+ const avatarUrl = this.context.matrixClient.mxcUrlToHttp(
this.props.member.avatarUrl,
36, 36, 'crop',
);
@@ -67,4 +71,4 @@ export default withMatrixClient(React.createClass({
/>
);
},
-}));
+});
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js
index df45dbc396..5fec115c95 100644
--- a/src/components/views/rooms/EventTile.js
+++ b/src/components/views/rooms/EventTile.js
@@ -29,11 +29,10 @@ const Modal = require('../../../Modal');
const sdk = require('../../../index');
const TextForEvent = require('../../../TextForEvent');
-import withMatrixClient from '../../../wrappers/withMatrixClient';
import dis from '../../../dispatcher';
import SettingsStore from "../../../settings/SettingsStore";
-import {EventStatus} from 'matrix-js-sdk';
+import {EventStatus, MatrixClient} from 'matrix-js-sdk';
const ObjectUtils = require('../../../ObjectUtils');
@@ -85,13 +84,10 @@ const MAX_READ_AVATARS = 5;
// | '--------------------------------------' |
// '----------------------------------------------------------'
-module.exports = withMatrixClient(React.createClass({
+module.exports = React.createClass({
displayName: 'EventTile',
propTypes: {
- /* MatrixClient instance for sender verification etc */
- matrixClient: PropTypes.object.isRequired,
-
/* the MatrixEvent to show */
mxEvent: PropTypes.object.isRequired,
@@ -192,6 +188,10 @@ module.exports = withMatrixClient(React.createClass({
};
},
+ contextTypes: {
+ matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
+ },
+
componentWillMount: function() {
// don't do RR animations until we are mounted
this._suppressReadReceiptAnimation = true;
@@ -200,7 +200,7 @@ module.exports = withMatrixClient(React.createClass({
componentDidMount: function() {
this._suppressReadReceiptAnimation = false;
- const client = this.props.matrixClient;
+ const client = this.context.matrixClient;
client.on("deviceVerificationChanged", this.onDeviceVerificationChanged);
this.props.mxEvent.on("Event.decrypted", this._onDecrypted);
if (this.props.showReactions) {
@@ -225,7 +225,7 @@ module.exports = withMatrixClient(React.createClass({
},
componentWillUnmount: function() {
- const client = this.props.matrixClient;
+ const client = this.context.matrixClient;
client.removeListener("deviceVerificationChanged", this.onDeviceVerificationChanged);
this.props.mxEvent.removeListener("Event.decrypted", this._onDecrypted);
if (this.props.showReactions) {
@@ -254,7 +254,7 @@ module.exports = withMatrixClient(React.createClass({
return;
}
- const verified = await this.props.matrixClient.isEventSenderVerified(mxEvent);
+ const verified = await this.context.matrixClient.isEventSenderVerified(mxEvent);
this.setState({
verified: verified,
}, () => {
@@ -312,11 +312,11 @@ module.exports = withMatrixClient(React.createClass({
},
shouldHighlight: function() {
- const actions = this.props.matrixClient.getPushActionsForEvent(this.props.mxEvent);
+ const actions = this.context.matrixClient.getPushActionsForEvent(this.props.mxEvent);
if (!actions || !actions.tweaks) { return false; }
// don't show self-highlights from another of our clients
- if (this.props.mxEvent.getSender() === this.props.matrixClient.credentials.userId) {
+ if (this.props.mxEvent.getSender() === this.context.matrixClient.credentials.userId) {
return false;
}
@@ -424,7 +424,7 @@ module.exports = withMatrixClient(React.createClass({
// Cancel any outgoing key request for this event and resend it. If a response
// is received for the request with the required keys, the event could be
// decrypted successfully.
- this.props.matrixClient.cancelAndResendEventRoomKeyRequest(this.props.mxEvent);
+ this.context.matrixClient.cancelAndResendEventRoomKeyRequest(this.props.mxEvent);
},
onPermalinkClicked: function(e) {
@@ -457,7 +457,7 @@ module.exports = withMatrixClient(React.createClass({
}
}
- if (this.props.matrixClient.isRoomEncrypted(ev.getRoomId())) {
+ if (this.context.matrixClient.isRoomEncrypted(ev.getRoomId())) {
// else if room is encrypted
// and event is being encrypted or is not_sent (Unknown Devices/Network Error)
if (ev.status === EventStatus.ENCRYPTING) {
@@ -691,7 +691,7 @@ module.exports = withMatrixClient(React.createClass({
switch (this.props.tileShape) {
case 'notif': {
- const room = this.props.matrixClient.getRoom(this.props.mxEvent.getRoomId());
+ const room = this.context.matrixClient.getRoom(this.props.mxEvent.getRoomId());
return (
@@ -816,7 +816,7 @@ module.exports = withMatrixClient(React.createClass({
}
}
},
-}));
+});
// XXX this'll eventually be dynamic based on the fields once we have extensible event types
const messageTypes = ['m.room.message', 'm.sticker'];
diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js
index 3c098b3d7a..8cabb5af48 100644
--- a/src/components/views/rooms/MemberInfo.js
+++ b/src/components/views/rooms/MemberInfo.js
@@ -1,6 +1,7 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017, 2018 Vector Creations Ltd
+Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -29,6 +30,7 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
+import { MatrixClient } from 'matrix-js-sdk';
import dis from '../../../dispatcher';
import Modal from '../../../Modal';
import sdk from '../../../index';
@@ -37,7 +39,6 @@ import createRoom from '../../../createRoom';
import DMRoomMap from '../../../utils/DMRoomMap';
import Unread from '../../../Unread';
import { findReadReceiptFromUserId } from '../../../utils/Receipt';
-import withMatrixClient from '../../../wrappers/withMatrixClient';
import AccessibleButton from '../elements/AccessibleButton';
import RoomViewStore from '../../../stores/RoomViewStore';
import SdkConfig from '../../../SdkConfig';
@@ -46,11 +47,10 @@ import SettingsStore from "../../../settings/SettingsStore";
import E2EIcon from "./E2EIcon";
import AutoHideScrollbar from "../../structures/AutoHideScrollbar";
-module.exports = withMatrixClient(React.createClass({
+module.exports = React.createClass({
displayName: 'MemberInfo',
propTypes: {
- matrixClient: PropTypes.object.isRequired,
member: PropTypes.object.isRequired,
},
@@ -71,13 +71,17 @@ module.exports = withMatrixClient(React.createClass({
};
},
+ contextTypes: {
+ matrixClient: PropTypes.instanceOf(MatrixClient).isRequired,
+ },
+
componentWillMount: function() {
this._cancelDeviceList = null;
+ const cli = this.context.matrixClient;
// only display the devices list if our client supports E2E
- this._enableDevices = this.props.matrixClient.isCryptoEnabled();
+ this._enableDevices = cli.isCryptoEnabled();
- const cli = this.props.matrixClient;
cli.on("deviceVerificationChanged", this.onDeviceVerificationChanged);
cli.on("Room", this.onRoom);
cli.on("deleteRoom", this.onDeleteRoom);
@@ -103,7 +107,7 @@ module.exports = withMatrixClient(React.createClass({
},
componentWillUnmount: function() {
- const client = this.props.matrixClient;
+ const client = this.context.matrixClient;
if (client) {
client.removeListener("deviceVerificationChanged", this.onDeviceVerificationChanged);
client.removeListener("Room", this.onRoom);
@@ -122,7 +126,7 @@ module.exports = withMatrixClient(React.createClass({
},
_checkIgnoreState: function() {
- const isIgnoring = this.props.matrixClient.isUserIgnored(this.props.member.userId);
+ const isIgnoring = this.context.matrixClient.isUserIgnored(this.props.member.userId);
this.setState({isIgnoring: isIgnoring});
},
@@ -154,7 +158,7 @@ module.exports = withMatrixClient(React.createClass({
// Promise.resolve to handle transition from static result to promise; can be removed
// in future
- Promise.resolve(this.props.matrixClient.getStoredDevicesForUser(userId)).then((devices) => {
+ Promise.resolve(this.context.matrixClient.getStoredDevicesForUser(userId)).then((devices) => {
this.setState({
devices: devices,
e2eStatus: this._getE2EStatus(devices),
@@ -188,7 +192,7 @@ module.exports = withMatrixClient(React.createClass({
onRoomReceipt: function(receiptEvent, room) {
// because if we read a notification, it will affect notification count
// only bother updating if there's a receipt from us
- if (findReadReceiptFromUserId(receiptEvent, this.props.matrixClient.credentials.userId)) {
+ if (findReadReceiptFromUserId(receiptEvent, this.context.matrixClient.credentials.userId)) {
this.forceUpdate();
}
},
@@ -233,7 +237,7 @@ module.exports = withMatrixClient(React.createClass({
let cancelled = false;
this._cancelDeviceList = function() { cancelled = true; };
- const client = this.props.matrixClient;
+ const client = this.context.matrixClient;
const self = this;
client.downloadKeys([member.userId], true).then(() => {
return client.getStoredDevicesForUser(member.userId);
@@ -258,7 +262,7 @@ module.exports = withMatrixClient(React.createClass({
},
onIgnoreToggle: function() {
- const ignoredUsers = this.props.matrixClient.getIgnoredUsers();
+ const ignoredUsers = this.context.matrixClient.getIgnoredUsers();
if (this.state.isIgnoring) {
const index = ignoredUsers.indexOf(this.props.member.userId);
if (index !== -1) ignoredUsers.splice(index, 1);
@@ -266,7 +270,7 @@ module.exports = withMatrixClient(React.createClass({
ignoredUsers.push(this.props.member.userId);
}
- this.props.matrixClient.setIgnoredUsers(ignoredUsers).then(() => {
+ this.context.matrixClient.setIgnoredUsers(ignoredUsers).then(() => {
return this.setState({isIgnoring: !this.state.isIgnoring});
});
},
@@ -284,7 +288,7 @@ module.exports = withMatrixClient(React.createClass({
if (!proceed) return;
this.setState({ updating: this.state.updating + 1 });
- this.props.matrixClient.kick(
+ this.context.matrixClient.kick(
this.props.member.roomId, this.props.member.userId,
reason || undefined,
).then(function() {
@@ -320,11 +324,11 @@ module.exports = withMatrixClient(React.createClass({
this.setState({ updating: this.state.updating + 1 });
let promise;
if (this.props.member.membership === 'ban') {
- promise = this.props.matrixClient.unban(
+ promise = this.context.matrixClient.unban(
this.props.member.roomId, this.props.member.userId,
);
} else {
- promise = this.props.matrixClient.ban(
+ promise = this.context.matrixClient.ban(
this.props.member.roomId, this.props.member.userId,
reason || undefined,
);
@@ -370,11 +374,11 @@ module.exports = withMatrixClient(React.createClass({
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
const roomId = this.props.member.roomId;
const target = this.props.member.userId;
- const room = this.props.matrixClient.getRoom(roomId);
+ const room = this.context.matrixClient.getRoom(roomId);
if (!room) return;
// if muting self, warn as it may be irreversible
- if (target === this.props.matrixClient.getUserId()) {
+ if (target === this.context.matrixClient.getUserId()) {
try {
if (!(await this._warnSelfDemote())) return;
} catch (e) {
@@ -402,7 +406,7 @@ module.exports = withMatrixClient(React.createClass({
if (!isNaN(level)) {
this.setState({ updating: this.state.updating + 1 });
- this.props.matrixClient.setPowerLevel(roomId, target, level, powerLevelEvent).then(
+ this.context.matrixClient.setPowerLevel(roomId, target, level, powerLevelEvent).then(
function() {
// NO-OP; rely on the m.room.member event coming down else we could
// get out of sync if we force setState here!
@@ -424,13 +428,13 @@ module.exports = withMatrixClient(React.createClass({
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
const roomId = this.props.member.roomId;
const target = this.props.member.userId;
- const room = this.props.matrixClient.getRoom(roomId);
+ const room = this.context.matrixClient.getRoom(roomId);
if (!room) return;
const powerLevelEvent = room.currentState.getStateEvents("m.room.power_levels", "");
if (!powerLevelEvent) return;
- const me = room.getMember(this.props.matrixClient.credentials.userId);
+ const me = room.getMember(this.context.matrixClient.credentials.userId);
if (!me) return;
const defaultLevel = powerLevelEvent.getContent().users_default;
@@ -439,7 +443,7 @@ module.exports = withMatrixClient(React.createClass({
// toggle the level
const newLevel = this.state.isTargetMod ? defaultLevel : modLevel;
this.setState({ updating: this.state.updating + 1 });
- this.props.matrixClient.setPowerLevel(roomId, target, parseInt(newLevel), powerLevelEvent).then(
+ this.context.matrixClient.setPowerLevel(roomId, target, parseInt(newLevel), powerLevelEvent).then(
function() {
// NO-OP; rely on the m.room.member event coming down else we could
// get out of sync if we force setState here!
@@ -462,7 +466,7 @@ module.exports = withMatrixClient(React.createClass({
_applyPowerChange: function(roomId, target, powerLevel, powerLevelEvent) {
this.setState({ updating: this.state.updating + 1 });
- this.props.matrixClient.setPowerLevel(roomId, target, parseInt(powerLevel), powerLevelEvent).then(
+ this.context.matrixClient.setPowerLevel(roomId, target, parseInt(powerLevel), powerLevelEvent).then(
function() {
// NO-OP; rely on the m.room.member event coming down else we could
// get out of sync if we force setState here!
@@ -483,7 +487,7 @@ module.exports = withMatrixClient(React.createClass({
onPowerChange: async function(powerLevel) {
const roomId = this.props.member.roomId;
const target = this.props.member.userId;
- const room = this.props.matrixClient.getRoom(roomId);
+ const room = this.context.matrixClient.getRoom(roomId);
if (!room) return;
const powerLevelEvent = room.currentState.getStateEvents("m.room.power_levels", "");
@@ -494,7 +498,7 @@ module.exports = withMatrixClient(React.createClass({
return;
}
- const myUserId = this.props.matrixClient.getUserId();
+ const myUserId = this.context.matrixClient.getUserId();
const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
// If we are changing our own PL it can only ever be decreasing, which we cannot reverse.
@@ -549,13 +553,13 @@ module.exports = withMatrixClient(React.createClass({
can: {},
muted: false,
};
- const room = this.props.matrixClient.getRoom(member.roomId);
+ const room = this.context.matrixClient.getRoom(member.roomId);
if (!room) return defaultPerms;
const powerLevels = room.currentState.getStateEvents("m.room.power_levels", "");
if (!powerLevels) return defaultPerms;
- const me = room.getMember(this.props.matrixClient.credentials.userId);
+ const me = room.getMember(this.context.matrixClient.credentials.userId);
if (!me) return defaultPerms;
const them = member;
@@ -619,7 +623,7 @@ module.exports = withMatrixClient(React.createClass({
const avatarUrl = member.getMxcAvatarUrl();
if (!avatarUrl) return;
- const httpUrl = this.props.matrixClient.mxcUrlToHttp(avatarUrl);
+ const httpUrl = this.context.matrixClient.mxcUrlToHttp(avatarUrl);
const ImageView = sdk.getComponent("elements.ImageView");
const params = {
src: httpUrl,
@@ -678,7 +682,7 @@ module.exports = withMatrixClient(React.createClass({
},
_renderUserOptions: function() {
- const cli = this.props.matrixClient;
+ const cli = this.context.matrixClient;
const member = this.props.member;
let ignoreButton = null;
@@ -784,8 +788,8 @@ module.exports = withMatrixClient(React.createClass({
let giveModButton;
let spinner;
- if (this.props.member.userId !== this.props.matrixClient.credentials.userId) {
- const dmRoomMap = new DMRoomMap(this.props.matrixClient);
+ if (this.props.member.userId !== this.context.matrixClient.credentials.userId) {
+ const dmRoomMap = new DMRoomMap(this.context.matrixClient);
// dmRooms will not include dmRooms that we have been invited into but did not join.
// Because DMRoomMap runs off account_data[m.direct] which is only set on join of dm room.
// XXX: we potentially want DMs we have been invited to, to also show up here :L
@@ -796,7 +800,7 @@ module.exports = withMatrixClient(React.createClass({
const tiles = [];
for (const roomId of dmRooms) {
- const room = this.props.matrixClient.getRoom(roomId);
+ const room = this.context.matrixClient.getRoom(roomId);
if (room) {
const myMembership = room.getMyMembership();
// not a DM room if we have are not joined
@@ -918,12 +922,12 @@ module.exports = withMatrixClient(React.createClass({
}
}
- const room = this.props.matrixClient.getRoom(this.props.member.roomId);
+ const room = this.context.matrixClient.getRoom(this.props.member.roomId);
const powerLevelEvent = room ? room.currentState.getStateEvents("m.room.power_levels", "") : null;
const powerLevelUsersDefault = powerLevelEvent ? powerLevelEvent.getContent().users_default : 0;
const enablePresenceByHsUrl = SdkConfig.get()["enable_presence_by_hs_url"];
- const hsUrl = this.props.matrixClient.baseUrl;
+ const hsUrl = this.context.matrixClient.baseUrl;
let showPresence = true;
if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {
showPresence = enablePresenceByHsUrl[hsUrl];
@@ -962,7 +966,7 @@ module.exports = withMatrixClient(React.createClass({
;
- const isEncrypted = this.props.matrixClient.isRoomEncrypted(this.props.member.roomId);
+ const isEncrypted = this.context.matrixClient.isRoomEncrypted(this.props.member.roomId);
if (this.state.e2eStatus && isEncrypted) {
e2eIconElement = ();
}
@@ -971,14 +975,12 @@ module.exports = withMatrixClient(React.createClass({
const avatarUrl = this.props.member.getMxcAvatarUrl();
let avatarElement;
if (avatarUrl) {
- const httpUrl = this.props.matrixClient.mxcUrlToHttp(avatarUrl, 800, 800);
+ const httpUrl = this.context.matrixClient.mxcUrlToHttp(avatarUrl, 800, 800);
avatarElement =
;
}
- const GeminiScrollbarWrapper = sdk.getComponent("elements.GeminiScrollbarWrapper");
-
let backButton;
if (this.props.member.roomId) {
backButton = (
);
},
-}));
+});
diff --git a/src/wrappers/withMatrixClient.js b/src/wrappers/withMatrixClient.js
deleted file mode 100644
index 7be3b0561d..0000000000
--- a/src/wrappers/withMatrixClient.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-Copyright 2015, 2016 OpenMarket Ltd
-Copyright 2017 Vector Creations 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 * as Matrix from 'matrix-js-sdk';
-import React from 'react';
-import PropTypes from 'prop-types';
-
-/**
- * Wraps a react class, pulling the MatrixClient from the context and adding it
- * as a 'matrixClient' property instead.
- *
- * This abstracts the use of the context API, so that we can use a different
- * mechanism in future.
- */
-export default function(WrappedComponent) {
- return React.createClass({
- displayName: "withMatrixClient<" + WrappedComponent.displayName + ">",
-
- contextTypes: {
- matrixClient: PropTypes.instanceOf(Matrix.MatrixClient).isRequired,
- },
-
- render: function() {
- return ;
- },
- });
-}