From 11e817e1f255fc3e3ac8b2a6ff9f8ea4ab29f8e2 Mon Sep 17 00:00:00 2001 From: Benjamin Elo Date: Mon, 12 Aug 2019 05:49:44 -0700 Subject: [PATCH] Migrate ScreenCaptureButtons from js to ts Summary: Migrated ScreenCaptureButtons.js to ScreenCaptureButtons.ts Reviewed By: jknoxville Differential Revision: D16733189 fbshipit-source-id: aabb7a82746609797c0448e441bbc79e65249191 --- ...ureButtons.js => ScreenCaptureButtons.tsx} | 52 ++++++++++++------- src/chrome/TitleBar.tsx | 2 +- 2 files changed, 33 insertions(+), 21 deletions(-) rename src/chrome/{ScreenCaptureButtons.js => ScreenCaptureButtons.tsx} (88%) diff --git a/src/chrome/ScreenCaptureButtons.js b/src/chrome/ScreenCaptureButtons.tsx similarity index 88% rename from src/chrome/ScreenCaptureButtons.js rename to src/chrome/ScreenCaptureButtons.tsx index c290158bc..0fc0ab422 100644 --- a/src/chrome/ScreenCaptureButtons.js +++ b/src/chrome/ScreenCaptureButtons.tsx @@ -5,10 +5,11 @@ * @format */ -import {Button, ButtonGroup, Component} from 'flipper'; +import {Button, ButtonGroup} from 'flipper'; +import React, {Component} from 'react'; import {connect} from 'react-redux'; -import AndroidDevice from '../devices/AndroidDevice.tsx'; -import IOSDevice from '../devices/IOSDevice.tsx'; +import AndroidDevice from '../devices/AndroidDevice'; +import IOSDevice from '../devices/IOSDevice'; import expandTilde from 'expand-tilde'; import fs from 'fs'; import os from 'os'; @@ -17,8 +18,9 @@ import {exec, spawn} from 'child_process'; import {remote} from 'electron'; import path from 'path'; import {reportPlatformFailures} from '../utils/metrics'; -import config from '../utils/processConfig.tsx'; -import type BaseDevice from '../devices/BaseDevice.tsx'; +import config from '../utils/processConfig'; +import BaseDevice from '../devices/BaseDevice'; +import {State as Store} from '../reducers'; const CAPTURE_LOCATION = expandTilde( config().screenCapturePath || remote.app.getPath('desktop'), @@ -26,20 +28,29 @@ const CAPTURE_LOCATION = expandTilde( type PullTransfer = any; -type Props = {| - selectedDevice: ?BaseDevice, -|}; +type OwnProps = {}; -type State = {| - pullingData: boolean, - recording: boolean, - recordingEnabled: boolean, - capturingScreenshot: boolean, -|}; +type StateFromProps = { + selectedDevice: + | BaseDevice + | typeof AndroidDevice + | typeof IOSDevice + | null + | undefined; +}; + +type DispatchFromProps = {}; + +type State = { + pullingData: boolean; + recording: boolean; + recordingEnabled: boolean; + capturingScreenshot: boolean; +}; function openFile(path: string) { const child = spawn(getOpenCommand(), [path]); - child.on('exit', (code, signal) => { + child.on('exit', code => { if (code != 0) { console.error(`${getOpenCommand()} failed with exit code ${code}`); } @@ -73,9 +84,10 @@ function writePngStreamToFile(stream: PullTransfer): Promise { }); } +type Props = OwnProps & StateFromProps & DispatchFromProps; class ScreenCaptureButtons extends Component { - iOSRecorder: ?any; - videoPath: ?string; + iOSRecorder: any | null | undefined; + videoPath: string | null | undefined; state = { pullingData: false, @@ -118,7 +130,7 @@ class ScreenCaptureButtons extends Component { } }; - captureScreenshot = (): ?Promise => { + captureScreenshot: Promise | any = () => { const {selectedDevice} = this.props; if (selectedDevice instanceof AndroidDevice) { @@ -135,7 +147,7 @@ class ScreenCaptureButtons extends Component { new Promise((resolve, reject) => { exec( `xcrun simctl io booted screenshot "${screenshotPath}"`, - async (err, data) => { + async err => { if (err) { reject(err); } else { @@ -298,7 +310,7 @@ class ScreenCaptureButtons extends Component { } } -export default connect( +export default connect( ({connections: {selectedDevice}}) => ({ selectedDevice, }), diff --git a/src/chrome/TitleBar.tsx b/src/chrome/TitleBar.tsx index a122efa98..527db3b0f 100644 --- a/src/chrome/TitleBar.tsx +++ b/src/chrome/TitleBar.tsx @@ -28,7 +28,7 @@ import { import {connect} from 'react-redux'; import RatingButton from './RatingButton'; import DevicesButton from './DevicesButton'; -import ScreenCaptureButtons from './ScreenCaptureButtons.js'; +import ScreenCaptureButtons from './ScreenCaptureButtons'; import AutoUpdateVersion from './AutoUpdateVersion'; import UpdateIndicator from './UpdateIndicator'; import config from '../fb-stubs/config';