/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format */ import {FlipperPlugin} from 'flipper'; import {FlexColumn} from 'flipper'; import {ButtonGroup, Button, styled, colors} from 'flipper'; import React, {ChangeEvent} from 'react'; export type Sandbox = { name: string; value: string; }; type SandboxState = { sandboxes: Array; customSandbox: string; showFeedback: boolean; }; const BigButton = styled(Button)({ flexGrow: 1, fontSize: 24, padding: 20, }); const ButtonContainer = styled(FlexColumn)({ alignItems: 'center', padding: 20, }); export default class SandboxView extends FlipperPlugin< SandboxState, any, unknown > { state: SandboxState = { sandboxes: [], customSandbox: '', showFeedback: false, }; static TextInput = styled.input({ border: `1px solid ${colors.light10}`, fontSize: '1em', padding: '0 5px', borderRight: 0, borderTopLeftRadius: 4, borderBottomLeftRadius: 4, flexGrow: 1, }); static FeedbackMessage = styled.span({ fontSize: '1.2em', paddingTop: '10px', color: 'green', }); static TextInputLayout = styled(FlexColumn)({ float: 'left', justifyContent: 'center', flexGrow: 1, borderRadius: 4, marginRight: 15, marginTop: 15, marginLeft: 15, }); init() { this.client.call('getSandbox', {}).then((results: Array) => { this.dispatchAction({results, type: 'UpdateSandboxes'}); }); } onSendSandboxEnvironment = (sandbox: string) => { this.client .call('setSandbox', { sandbox: sandbox, }) .then((result: {result: boolean}) => { setTimeout(() => { this.setState({showFeedback: false}); }, 3000); this.setState({showFeedback: result.result}); }); }; onChangeSandbox = (e: ChangeEvent) => { this.setState({customSandbox: e.target.value}); }; render() { return ( { if (event.key === 'Enter') { this.onSendSandboxEnvironment(this.state.customSandbox); } }} />