Send visibility only when changed, and messaging is available

This commit is contained in:
Luke Barnard 2018-05-11 18:06:58 +01:00
parent a419056040
commit 9c5c5e282b
2 changed files with 14 additions and 14 deletions

View file

@ -172,12 +172,7 @@ export default class AppTile extends React.Component {
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;
}));
this.props.collectWidgetMessaging(this.widgetMessaging);
}
}

View file

@ -105,11 +105,7 @@ export default class Stickerpicker extends React.Component {
}
componentDidUpdate(prevProps, prevState) {
if (this._appWidgetMessaging &&
prevState.showStickers !== this.state.showStickers
) {
this._appWidgetMessaging.sendVisibility(this.state.showStickers);
}
this._sendVisibilityToWidget(this.state.showStickers);
}
_imError(errorMsg, e) {
@ -147,10 +143,19 @@ export default class Stickerpicker extends React.Component {
);
}
async _collectWidgetMessaging(prom) {
const widgetMessaging = await prom;
_collectWidgetMessaging(widgetMessaging) {
this._appWidgetMessaging = widgetMessaging;
this._appWidgetMessaging.sendVisibility(true);
// Do this now instead of in componentDidMount because we might not have had the
// reference to widgetMessaging when mounting
this._sendVisibilityToWidget(true);
}
_sendVisibilityToWidget(visible) {
if (this._appWidgetMessaging && visible !== this._prevSentVisibility) {
this._appWidgetMessaging.sendVisibility(visible);
this._prevSentVisibility = visible;
}
}
_getStickerpickerContent() {