mirror of https://github.com/vector-im/riot-web
Screenshot handlers
parent
954c6eecd6
commit
e63f5696a6
|
@ -153,6 +153,7 @@ Example:
|
||||||
import URL from 'url';
|
import URL from 'url';
|
||||||
import dis from './dispatcher';
|
import dis from './dispatcher';
|
||||||
import MatrixPostMessageApi from './MatrixPostMessageApi';
|
import MatrixPostMessageApi from './MatrixPostMessageApi';
|
||||||
|
import Promise from 'bluebird';
|
||||||
|
|
||||||
const WIDGET_API_VERSION = '0.0.1'; // Current API version
|
const WIDGET_API_VERSION = '0.0.1'; // Current API version
|
||||||
const SUPPORTED_WIDGET_API_VERSIONS = [
|
const SUPPORTED_WIDGET_API_VERSIONS = [
|
||||||
|
@ -197,6 +198,7 @@ export default class WidgetMessaging extends MatrixPostMessageApi {
|
||||||
* Register widget message event listeners
|
* Register widget message event listeners
|
||||||
*/
|
*/
|
||||||
startListening() {
|
startListening() {
|
||||||
|
this.start();
|
||||||
if (global.mxWidgetMessagingListenerCount === 0) {
|
if (global.mxWidgetMessagingListenerCount === 0) {
|
||||||
window.addEventListener("message", () => this.onMessage, false);
|
window.addEventListener("message", () => this.onMessage, false);
|
||||||
}
|
}
|
||||||
|
@ -207,6 +209,7 @@ export default class WidgetMessaging extends MatrixPostMessageApi {
|
||||||
* De-register widget message event listeners
|
* De-register widget message event listeners
|
||||||
*/
|
*/
|
||||||
stopListening() {
|
stopListening() {
|
||||||
|
this.stop();
|
||||||
global.mxWidgetMessagingListenerCount -= 1;
|
global.mxWidgetMessagingListenerCount -= 1;
|
||||||
if (global.mxWidgetMessagingListenerCount === 0) {
|
if (global.mxWidgetMessagingListenerCount === 0) {
|
||||||
window.removeEventListener("message", () => this.onMessage);
|
window.removeEventListener("message", () => this.onMessage);
|
||||||
|
@ -365,13 +368,19 @@ export default class WidgetMessaging extends MatrixPostMessageApi {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request a screenshot from a widget
|
* Request a screenshot from a widget
|
||||||
|
* @return {Promise} To be resolved when screenshot has been generated
|
||||||
*/
|
*/
|
||||||
getScreenshot() {
|
getScreenshot() {
|
||||||
this.exec({
|
return new Promise((resolve, reject) => {
|
||||||
api: "widget_client",
|
this.exec({
|
||||||
action: "screenshot",
|
api: "widget_client",
|
||||||
}).then(function(screenshot) {
|
action: "screenshot",
|
||||||
console.warn("got screenshot", screenshot);
|
}).then(function(response) {
|
||||||
|
// console.warn("got screenshot", response.screenshot);
|
||||||
|
resolve(response.screenshot);
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(Error("Failed to get screenshot: " + error.message));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -274,15 +274,14 @@ export default React.createClass({
|
||||||
|
|
||||||
_onSnapshotClick(e) {
|
_onSnapshotClick(e) {
|
||||||
console.warn("Requesting widget snapshot");
|
console.warn("Requesting widget snapshot");
|
||||||
this.widgetMessaging.getScreenshot();
|
this.widgetMessaging.getScreenshot().then((screenshot) => {
|
||||||
// const iframe = this.refs.appFrame;
|
dis.dispatch({
|
||||||
// domtoimage.toPng(iframe).then(function(dataUrl) {
|
action: 'picture_snapshot',
|
||||||
// console.log("Image data URL:", dataUrl);
|
file: screenshot,
|
||||||
// dis.dispatch({
|
}, true);
|
||||||
// action: 'picture_snapshot',
|
}).catch((err) => {
|
||||||
// file: dataURLtoBlob(dataUrl),
|
console.error("Failed to get screenshot", err);
|
||||||
// }, true);
|
});
|
||||||
// });
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/* If user has permission to modify widgets, delete the widget,
|
/* If user has permission to modify widgets, delete the widget,
|
||||||
|
|
Loading…
Reference in New Issue