Migrate ScreenCaptureButtons from js to ts
Summary: Migrated ScreenCaptureButtons.js to ScreenCaptureButtons.ts Reviewed By: jknoxville Differential Revision: D16733189 fbshipit-source-id: aabb7a82746609797c0448e441bbc79e65249191
This commit is contained in:
committed by
Facebook Github Bot
parent
5c8be8f360
commit
11e817e1f2
@@ -5,10 +5,11 @@
|
|||||||
* @format
|
* @format
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {Button, ButtonGroup, Component} from 'flipper';
|
import {Button, ButtonGroup} from 'flipper';
|
||||||
|
import React, {Component} from 'react';
|
||||||
import {connect} from 'react-redux';
|
import {connect} from 'react-redux';
|
||||||
import AndroidDevice from '../devices/AndroidDevice.tsx';
|
import AndroidDevice from '../devices/AndroidDevice';
|
||||||
import IOSDevice from '../devices/IOSDevice.tsx';
|
import IOSDevice from '../devices/IOSDevice';
|
||||||
import expandTilde from 'expand-tilde';
|
import expandTilde from 'expand-tilde';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
@@ -17,8 +18,9 @@ import {exec, spawn} from 'child_process';
|
|||||||
import {remote} from 'electron';
|
import {remote} from 'electron';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import {reportPlatformFailures} from '../utils/metrics';
|
import {reportPlatformFailures} from '../utils/metrics';
|
||||||
import config from '../utils/processConfig.tsx';
|
import config from '../utils/processConfig';
|
||||||
import type BaseDevice from '../devices/BaseDevice.tsx';
|
import BaseDevice from '../devices/BaseDevice';
|
||||||
|
import {State as Store} from '../reducers';
|
||||||
|
|
||||||
const CAPTURE_LOCATION = expandTilde(
|
const CAPTURE_LOCATION = expandTilde(
|
||||||
config().screenCapturePath || remote.app.getPath('desktop'),
|
config().screenCapturePath || remote.app.getPath('desktop'),
|
||||||
@@ -26,20 +28,29 @@ const CAPTURE_LOCATION = expandTilde(
|
|||||||
|
|
||||||
type PullTransfer = any;
|
type PullTransfer = any;
|
||||||
|
|
||||||
type Props = {|
|
type OwnProps = {};
|
||||||
selectedDevice: ?BaseDevice,
|
|
||||||
|};
|
|
||||||
|
|
||||||
type State = {|
|
type StateFromProps = {
|
||||||
pullingData: boolean,
|
selectedDevice:
|
||||||
recording: boolean,
|
| BaseDevice
|
||||||
recordingEnabled: boolean,
|
| typeof AndroidDevice
|
||||||
capturingScreenshot: boolean,
|
| typeof IOSDevice
|
||||||
|};
|
| null
|
||||||
|
| undefined;
|
||||||
|
};
|
||||||
|
|
||||||
|
type DispatchFromProps = {};
|
||||||
|
|
||||||
|
type State = {
|
||||||
|
pullingData: boolean;
|
||||||
|
recording: boolean;
|
||||||
|
recordingEnabled: boolean;
|
||||||
|
capturingScreenshot: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
function openFile(path: string) {
|
function openFile(path: string) {
|
||||||
const child = spawn(getOpenCommand(), [path]);
|
const child = spawn(getOpenCommand(), [path]);
|
||||||
child.on('exit', (code, signal) => {
|
child.on('exit', code => {
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
console.error(`${getOpenCommand()} failed with exit code ${code}`);
|
console.error(`${getOpenCommand()} failed with exit code ${code}`);
|
||||||
}
|
}
|
||||||
@@ -73,9 +84,10 @@ function writePngStreamToFile(stream: PullTransfer): Promise<string> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Props = OwnProps & StateFromProps & DispatchFromProps;
|
||||||
class ScreenCaptureButtons extends Component<Props, State> {
|
class ScreenCaptureButtons extends Component<Props, State> {
|
||||||
iOSRecorder: ?any;
|
iOSRecorder: any | null | undefined;
|
||||||
videoPath: ?string;
|
videoPath: string | null | undefined;
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
pullingData: false,
|
pullingData: false,
|
||||||
@@ -118,7 +130,7 @@ class ScreenCaptureButtons extends Component<Props, State> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
captureScreenshot = (): ?Promise<void> => {
|
captureScreenshot: Promise<void> | any = () => {
|
||||||
const {selectedDevice} = this.props;
|
const {selectedDevice} = this.props;
|
||||||
|
|
||||||
if (selectedDevice instanceof AndroidDevice) {
|
if (selectedDevice instanceof AndroidDevice) {
|
||||||
@@ -135,7 +147,7 @@ class ScreenCaptureButtons extends Component<Props, State> {
|
|||||||
new Promise((resolve, reject) => {
|
new Promise((resolve, reject) => {
|
||||||
exec(
|
exec(
|
||||||
`xcrun simctl io booted screenshot "${screenshotPath}"`,
|
`xcrun simctl io booted screenshot "${screenshotPath}"`,
|
||||||
async (err, data) => {
|
async err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
} else {
|
} else {
|
||||||
@@ -298,7 +310,7 @@ class ScreenCaptureButtons extends Component<Props, State> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default connect<Props, {||}, _, _, _, _>(
|
export default connect<StateFromProps, DispatchFromProps, OwnProps, Store>(
|
||||||
({connections: {selectedDevice}}) => ({
|
({connections: {selectedDevice}}) => ({
|
||||||
selectedDevice,
|
selectedDevice,
|
||||||
}),
|
}),
|
||||||
@@ -28,7 +28,7 @@ import {
|
|||||||
import {connect} from 'react-redux';
|
import {connect} from 'react-redux';
|
||||||
import RatingButton from './RatingButton';
|
import RatingButton from './RatingButton';
|
||||||
import DevicesButton from './DevicesButton';
|
import DevicesButton from './DevicesButton';
|
||||||
import ScreenCaptureButtons from './ScreenCaptureButtons.js';
|
import ScreenCaptureButtons from './ScreenCaptureButtons';
|
||||||
import AutoUpdateVersion from './AutoUpdateVersion';
|
import AutoUpdateVersion from './AutoUpdateVersion';
|
||||||
import UpdateIndicator from './UpdateIndicator';
|
import UpdateIndicator from './UpdateIndicator';
|
||||||
import config from '../fb-stubs/config';
|
import config from '../fb-stubs/config';
|
||||||
|
|||||||
Reference in New Issue
Block a user