Browse Source

Update the example App to include the Native Screenshot button for testing the captureScreen functionality. Update the index.js as a final code refactor for the captureScreen name,

foxmicha 7 years ago
parent
commit
5ed8cf90e6
2 changed files with 40 additions and 2 deletions
  1. 39
    1
      example/App.js
  2. 1
    1
      src/index.js

+ 39
- 1
example/App.js View File

12
   WebView
12
   WebView
13
 } from "react-native";
13
 } from "react-native";
14
 import omit from "lodash/omit";
14
 import omit from "lodash/omit";
15
-import { captureRef } from "react-native-view-shot";
15
+import { captureRef, captureScreen } from "react-native-view-shot";
16
 import { Surface } from "gl-react-native";
16
 import { Surface } from "gl-react-native";
17
 import GL from "gl-react";
17
 import GL from "gl-react";
18
 import MapView from "react-native-maps";
18
 import MapView from "react-native-maps";
53
     }
53
     }
54
   };
54
   };
55
 
55
 
56
+  captureScreenshot = () =>
57
+    captureScreen(this.state.value)
58
+      .then(
59
+        res =>
60
+          this.state.value.result !== "tmpfile"
61
+          ? res
62
+          : new Promise((success, failure) =>
63
+          // just a test to ensure res can be used in Image.getSize
64
+          Image.getSize(
65
+            res,
66
+            (width, height) => (
67
+              console.log(res, width, height), success(res)
68
+            ),
69
+            failure
70
+          )
71
+        )
72
+      )
73
+      .then(res =>
74
+        this.setState({
75
+          error: null,
76
+          res,
77
+          previewSource: {
78
+            uri:
79
+              this.state.value.result === "base64"
80
+                ? "data:image/" + this.state.value.format + ";base64," + res
81
+                : res
82
+          }
83
+        })
84
+      )
85
+      .catch(
86
+        error => (
87
+          console.warn(error),
88
+          this.setState({ error, res: null, previewSource: null })
89
+        )
90
+      );
91
+    
92
+
56
   snapshot = refname => () =>
93
   snapshot = refname => () =>
57
     captureRef(this.refs[refname], this.state.value)
94
     captureRef(this.refs[refname], this.state.value)
58
       .then(
95
       .then(
147
             <Btn label="📷 MapView" onPress={this.snapshot("mapview")} />
184
             <Btn label="📷 MapView" onPress={this.snapshot("mapview")} />
148
             <Btn label="📷 WebView" onPress={this.snapshot("webview")} />
185
             <Btn label="📷 WebView" onPress={this.snapshot("webview")} />
149
             <Btn label="📷 Video" onPress={this.snapshot("video")} />
186
             <Btn label="📷 Video" onPress={this.snapshot("video")} />
187
+            <Btn label="📷 Native Screenshot" onPress={this.captureScreenshot}/>
150
             <Btn
188
             <Btn
151
               label="📷 Empty View (should crash)"
189
               label="📷 Empty View (should crash)"
152
               onPress={this.snapshot("empty")}
190
               onPress={this.snapshot("empty")}

+ 1
- 1
src/index.js View File

124
         errors.map(e => `- ${e}`).join("\n")
124
         errors.map(e => `- ${e}`).join("\n")
125
     );
125
     );
126
   }
126
   }
127
-  return RNViewShot.captureScreenshot(options);
127
+  return RNViewShot.captureScreen(options);
128
 }
128
 }
129
 
129
 
130
 type Props = {
130
 type Props = {