Skip to content

Commit 34c0a1f

Browse files
authored
Merge pull request rpmsoftware#15 from rpmsoftware/issue-14
Use window.postMessage to relay a finished stroke back to the app
2 parents 092d67a + 9989783 commit 34c0a1f

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,17 @@ class SignaturePad extends Component {
161161
_renderLoading = (args) => {
162162
};
163163

164+
_onMessage = (event) => {
165+
var base64DataUrl = JSON.parse(event.nativeEvent.data);
166+
this._bridged_finishedStroke(base64DataUrl);
167+
}
168+
164169
render = () => {
165170
return (
166171
<WebView
167172
automaticallyAdjustContentInsets={false}
168173
onNavigationStateChange={this._onNavigationChange}
174+
onMessage={this._onMessage}
169175
renderError={this._renderError}
170176
renderLoading={this._renderLoading}
171177
source={this.source}

injectedJavaScript/application.js

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
var content = (penColor, backgroundColor, dataURL, penMinWidth, penMaxWidth, useFont, name, height, width) => `
22
33
var showSignaturePad = function (signaturePadCanvas, bodyWidth, bodyHeight) {
4-
/*We're rotating by 90% -> Flip X and Y*/
5-
/*var width = bodyHeight;
6-
var height = bodyWidth;*/
7-
84
var width = bodyWidth;
95
var height = bodyHeight;
106
@@ -17,22 +13,12 @@ var content = (penColor, backgroundColor, dataURL, penMinWidth, penMaxWidth, use
1713
signaturePadCanvas.getContext("2d").scale(devicePixelRatio, devicePixelRatio);
1814
};
1915
20-
var finishedStroke = function(base64DataUrl) {
21-
executeNativeFunction("finishedStroke", {base64DataUrl: base64DataUrl});
22-
};
23-
2416
var enableSignaturePadFunctionality = function () {
2517
var signaturePad = new SignaturePad(signaturePadCanvas, {
2618
penColor: "${penColor || "black"}",
2719
backgroundColor: "${backgroundColor || "white"}",
2820
onEnd: function() { finishedStroke(signaturePad.toDataURL()); }
2921
});
30-
/* signaturePad.translateMouseCoordinates = function (point) {
31-
var translatedY = point.x;
32-
var translatedX = width - point.y;
33-
point.x = translatedX;
34-
point.y = translatedY;
35-
}; */
3622
signaturePad.minWidth = ${penMinWidth || 1};
3723
signaturePad.maxWidth = ${penMaxWidth || 4};
3824
if ("${dataURL}") {
@@ -55,6 +41,10 @@ var content = (penColor, backgroundColor, dataURL, penMinWidth, penMaxWidth, use
5541
5642
var canvasElement = document.querySelector("canvas");
5743
44+
var finishedStroke = function(base64DataUrl) {
45+
window.postMessage(JSON.stringify({ base64DataUrl: base64DataUrl }));
46+
};
47+
5848
if (${useFont}) {
5949
var context = canvasElement.getContext("2d");
6050
var devicePixelRatio = 1; /* window.devicePixelRatio || 1; */
@@ -85,7 +75,9 @@ var content = (penColor, backgroundColor, dataURL, penMinWidth, penMaxWidth, use
8575
context.fillText("${name}", textPosition.x, textPosition.y);
8676
8777
/* Fire a finishedStroke function to update the state */
88-
executeNativeFunction("finishedStroke", {base64DataUrl: canvasElement.toDataURL()});
78+
setTimeout(function () {
79+
finishedStroke(canvasElement.toDataURL());
80+
}, 75);
8981
} else {
9082
showSignaturePad(canvasElement, bodyWidth / 2, bodyHeight / 2);
9183
}

0 commit comments

Comments
 (0)