Files
Sam ZhouandFacebook GitHub Bot 23c8787fe2 Add annotations to fix future errors after fix for unsound array types (#52691)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/52691

Unannotated array literals are unsound in Flow right now. This diff adds in annotations and makes a few things readonly, to reduce future errors.

Changelog: [Internal]

Reviewed By: marcoww6

Differential Revision: D78519638

fbshipit-source-id: d98a7668ecf97bcc87dcb3fad25ade736d885d9a
2025-07-17 17:30:43 -07:00

77 lines
1.9 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
import type {RNTesterModuleExample} from '../../types/RNTesterTypes';
const ScreenshotManager = require('../../../NativeModuleExample/NativeScreenshotManager');
const {RNTesterThemeContext} = require('../../components/RNTesterTheme');
const React = require('react');
const {Alert, Image, StyleSheet, Text, View} = require('react-native');
class ScreenshotExample extends React.Component<{...}, $FlowFixMeState> {
state: any | {uri: void} = {
uri: undefined,
};
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View style={style.container}>
<Text
onPress={this.takeScreenshot}
style={[style.button, {color: theme.LabelColor}]}>
Click to take a screenshot
</Text>
<Image
style={[style.image, {backgroundColor: theme.LabelColor}]}
source={{uri: this.state.uri}}
/>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
takeScreenshot = () => {
ScreenshotManager.takeScreenshot('window', {format: 'jpeg', quality: 0.8}) // See UIManager.js for options
.then(uri => this.setState({uri}))
.catch(error => Alert.alert(error));
};
}
const style = StyleSheet.create({
container: {
flex: 1,
},
button: {
marginBottom: 10,
fontWeight: '500',
},
image: {
flex: 1,
resizeMode: 'contain',
},
});
exports.title = 'Snapshot / Screenshot';
exports.category = 'Basic';
exports.description = 'API to capture images from the screen.';
exports.examples = [
{
title: 'Take screenshot',
render(): React.MixedElement {
return <ScreenshotExample />;
},
},
] as Array<RNTesterModuleExample>;