Screenshot handlers

pull/21833/head
Richard Lewis 2017-12-15 21:36:02 +00:00
parent 954c6eecd6
commit e63f5696a6
2 changed files with 22 additions and 14 deletions

View File

@ -153,6 +153,7 @@ Example:
import URL from 'url';
import dis from './dispatcher';
import MatrixPostMessageApi from './MatrixPostMessageApi';
import Promise from 'bluebird';
const WIDGET_API_VERSION = '0.0.1'; // Current API version
const SUPPORTED_WIDGET_API_VERSIONS = [
@ -197,6 +198,7 @@ export default class WidgetMessaging extends MatrixPostMessageApi {
* Register widget message event listeners
*/
startListening() {
this.start();
if (global.mxWidgetMessagingListenerCount === 0) {
window.addEventListener("message", () => this.onMessage, false);
}
@ -207,6 +209,7 @@ export default class WidgetMessaging extends MatrixPostMessageApi {
* De-register widget message event listeners
*/
stopListening() {
this.stop();
global.mxWidgetMessagingListenerCount -= 1;
if (global.mxWidgetMessagingListenerCount === 0) {
window.removeEventListener("message", () => this.onMessage);
@ -365,13 +368,19 @@ export default class WidgetMessaging extends MatrixPostMessageApi {
/**
* Request a screenshot from a widget
* @return {Promise} To be resolved when screenshot has been generated
*/
getScreenshot() {
this.exec({
api: "widget_client",
action: "screenshot",
}).then(function(screenshot) {
console.warn("got screenshot", screenshot);
return new Promise((resolve, reject) => {
this.exec({
api: "widget_client",
action: "screenshot",
}).then(function(response) {
// console.warn("got screenshot", response.screenshot);
resolve(response.screenshot);
}).catch((error) => {
reject(Error("Failed to get screenshot: " + error.message));
});
});
}
}

View File

@ -274,15 +274,14 @@ export default React.createClass({
_onSnapshotClick(e) {
console.warn("Requesting widget snapshot");
this.widgetMessaging.getScreenshot();
// const iframe = this.refs.appFrame;
// domtoimage.toPng(iframe).then(function(dataUrl) {
// console.log("Image data URL:", dataUrl);
// dis.dispatch({
// action: 'picture_snapshot',
// file: dataURLtoBlob(dataUrl),
// }, true);
// });
this.widgetMessaging.getScreenshot().then((screenshot) => {
dis.dispatch({
action: 'picture_snapshot',
file: screenshot,
}, true);
}).catch((err) => {
console.error("Failed to get screenshot", err);
});
},
/* If user has permission to modify widgets, delete the widget,