diff --git a/src/BasePlatform.js b/src/BasePlatform.js index 5f8772c7aa..abc9aa0bed 100644 --- a/src/BasePlatform.js +++ b/src/BasePlatform.js @@ -107,6 +107,9 @@ export default class BasePlatform { isElectron(): boolean { return false; } + setupScreenSharingForIframe() { + } + /** * Restarts the application, without neccessarily reloading * any application code diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 6a30c1ce41..41e58851ff 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -597,9 +597,7 @@ export default React.createClass({ this.setState({ publicityBusy: true, }); - MatrixClientPeg.get().setGroupPublicity(this.props.groupId, publicity).then(() => { - this._loadGroupFromServer(this.props.groupId); - }).then(() => { + this._groupSummaryStore.setGroupPublicity(publicity).then(() => { this.setState({ publicityBusy: false, }); @@ -730,16 +728,16 @@ export default React.createClass({ } let publicisedSection; - if (this.state.summary.user && this.state.summary.user.is_public) { + if (this.state.summary.user && this.state.summary.user.is_publicised) { if (!this.state.publicityBusy) { publicisedButton = - {_t("Make private")} + {_t("Unpublish")} ; } publicisedSection =
- {_t("Your membership of this group is public")} + {_t("This group is published on your profile")}
{publicisedButton}
@@ -749,11 +747,11 @@ export default React.createClass({ publicisedButton = - {_t("Make public")} + {_t("Publish")} ; } publicisedSection =
- {_t("Your membership of this group is private")} + {_t("This group is not published on your profile")}
{publicisedButton}
diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 7436f84f69..f4e4702989 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -19,6 +19,7 @@ limitations under the License. import url from 'url'; import React from 'react'; import MatrixClientPeg from '../../../MatrixClientPeg'; +import PlatformPeg from '../../../PlatformPeg'; import ScalarAuthClient from '../../../ScalarAuthClient'; import SdkConfig from '../../../SdkConfig'; import Modal from '../../../Modal'; @@ -127,6 +128,30 @@ export default React.createClass({ loading: false, }); }); + window.addEventListener('message', this._onMessage, false); + }, + + componentWillUnmount() { + window.removeEventListener('message', this._onMessage); + }, + + _onMessage(event) { + if (this.props.type !== 'jitsi') { + return; + } + if (!event.origin) { + event.origin = event.originalEvent.origin; + } + + if (!this.state.widgetUrl.startsWith(event.origin)) { + return; + } + + if (event.data.widgetAction === 'jitsi_iframe_loaded') { + const iframe = this.refs.appFrame.contentWindow + .document.querySelector('iframe[id^="jitsiConferenceFrame"]'); + PlatformPeg.get().setupScreenSharingForIframe(iframe); + } }, _canUserModify: function() { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 2e7c6d513c..09b3f045df 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -884,12 +884,12 @@ "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.", "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:", "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.", - "Your membership of this group is public": "Your membership of this group is public", - "Your membership of this group is private": "Your membership of this group is private", - "Make private": "Make private", - "Make public": "Make public", "Add rooms to the group": "Add rooms to the group", "Which rooms would you like to add to this group?": "Which rooms would you like to add to this group?", "Add to group": "Add to group", - "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:" + "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:", + "Unpublish": "Unpublish", + "This group is published on your profile": "This group is published on your profile", + "Publish": "Publish", + "This group is not published on your profile": "This group is not published on your profile" } diff --git a/src/stores/GroupSummaryStore.js b/src/stores/GroupSummaryStore.js index 170a1ec11e..aa6e74529b 100644 --- a/src/stores/GroupSummaryStore.js +++ b/src/stores/GroupSummaryStore.js @@ -68,4 +68,10 @@ export default class GroupSummaryStore extends EventEmitter { .removeUserFromGroupSummary(this._groupId, userId) .then(this._fetchSummary.bind(this)); } + + setGroupPublicity(isPublished) { + return this._matrixClient + .setGroupPublicity(this._groupId, isPublished) + .then(this._fetchSummary.bind(this)); + } }