When stickerpicker made visible, send visibility over postMessage
This commit is contained in:
parent
bd0301c666
commit
06919e22d6
2 changed files with 34 additions and 4 deletions
|
@ -167,6 +167,19 @@ export default class AppTile extends React.Component {
|
||||||
|
|
||||||
// Widget action listeners
|
// Widget action listeners
|
||||||
this.dispatcherRef = dis.register(this._onWidgetAction);
|
this.dispatcherRef = dis.register(this._onWidgetAction);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidUpdate() {
|
||||||
|
// Allow parents to access widget messaging
|
||||||
|
if (this.props.collectWidgetMessaging) {
|
||||||
|
this.props.collectWidgetMessaging(new Promise((resolve) => {
|
||||||
|
if (this.widgetMessaging) resolve(this.widgetMessaging);
|
||||||
|
|
||||||
|
// Expect this to be resolved later
|
||||||
|
this._exposeWidgetMessaging = resolve;
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
|
@ -352,6 +365,9 @@ export default class AppTile extends React.Component {
|
||||||
if (!this.widgetMessaging) {
|
if (!this.widgetMessaging) {
|
||||||
this._onInitialLoad();
|
this._onInitialLoad();
|
||||||
}
|
}
|
||||||
|
if (this._exposeWidgetMessaging) {
|
||||||
|
this._exposeWidgetMessaging(this.widgetMessaging);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -390,9 +406,6 @@ export default class AppTile extends React.Component {
|
||||||
console.log(`Failed to get capabilities for widget type ${this.props.type}`, this.props.id, err);
|
console.log(`Failed to get capabilities for widget type ${this.props.type}`, this.props.id, err);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Allow parents to access widget messaging
|
|
||||||
if (this.props.collectWidgetMessaging) this.props.collectWidgetMessaging(this.widgetMessaging);
|
|
||||||
|
|
||||||
this.setState({loading: false});
|
this.setState({loading: false});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,8 @@ export default class Stickerpicker extends React.Component {
|
||||||
this._onResize = this._onResize.bind(this);
|
this._onResize = this._onResize.bind(this);
|
||||||
this._onFinished = this._onFinished.bind(this);
|
this._onFinished = this._onFinished.bind(this);
|
||||||
|
|
||||||
|
this._collectWidgetMessaging = this._collectWidgetMessaging.bind(this);
|
||||||
|
|
||||||
this.popoverWidth = 300;
|
this.popoverWidth = 300;
|
||||||
this.popoverHeight = 300;
|
this.popoverHeight = 300;
|
||||||
|
|
||||||
|
@ -102,6 +104,14 @@ export default class Stickerpicker extends React.Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentDidUpdate(prevProps, prevState) {
|
||||||
|
if (this._appWidgetMessaging &&
|
||||||
|
prevState.showStickers !== this.state.showStickers
|
||||||
|
) {
|
||||||
|
this._appWidgetMessaging.sendVisibility(this.state.showStickers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_imError(errorMsg, e) {
|
_imError(errorMsg, e) {
|
||||||
console.error(errorMsg, e);
|
console.error(errorMsg, e);
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -137,6 +147,12 @@ export default class Stickerpicker extends React.Component {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async _collectWidgetMessaging(prom) {
|
||||||
|
const widgetMessaging = await prom;
|
||||||
|
this._appWidgetMessaging = widgetMessaging;
|
||||||
|
this._appWidgetMessaging.sendVisibility(true);
|
||||||
|
}
|
||||||
|
|
||||||
_getStickerpickerContent() {
|
_getStickerpickerContent() {
|
||||||
// Handle Integration Manager errors
|
// Handle Integration Manager errors
|
||||||
if (this.state._imError) {
|
if (this.state._imError) {
|
||||||
|
@ -173,6 +189,7 @@ export default class Stickerpicker extends React.Component {
|
||||||
>
|
>
|
||||||
<PersistedElement>
|
<PersistedElement>
|
||||||
<AppTile
|
<AppTile
|
||||||
|
collectWidgetMessaging={this._collectWidgetMessaging}
|
||||||
id={stickerpickerWidget.id}
|
id={stickerpickerWidget.id}
|
||||||
url={stickerpickerWidget.content.url}
|
url={stickerpickerWidget.content.url}
|
||||||
name={stickerpickerWidget.content.name}
|
name={stickerpickerWidget.content.name}
|
||||||
|
@ -192,7 +209,7 @@ export default class Stickerpicker extends React.Component {
|
||||||
showPopout={false}
|
showPopout={false}
|
||||||
onMinimiseClick={this._onHideStickersClick}
|
onMinimiseClick={this._onHideStickersClick}
|
||||||
handleMinimisePointerEvents={true}
|
handleMinimisePointerEvents={true}
|
||||||
whitelistCapabilities={['m.sticker']}
|
whitelistCapabilities={['m.sticker', 'visibility']}
|
||||||
/>
|
/>
|
||||||
</PersistedElement>
|
</PersistedElement>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue