// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React, {PropTypes, PureComponent} from 'react'; import { Image, Keyboard, TouchableWithoutFeedback, View } from 'react-native'; import Button from 'react-native-button'; import ErrorText from 'app/components/error_text'; import FormattedText from 'app/components/formatted_text'; import KeyboardLayout from 'app/components/layout/keyboard_layout'; import TextInputWithLocalizedPlaceholder from 'app/components/text_input_with_localized_placeholder'; import {GlobalStyles} from 'app/styles'; import logo from 'assets/images/logo.png'; import Client from 'service/client'; import RequestStatus from 'service/constants/request_status'; import {isValidUrl, stripTrailingSlashes} from 'app/utils/url'; export default class SelectServer extends PureComponent { static propTypes = { serverUrl: PropTypes.string.isRequired, server: PropTypes.object.isRequired, actions: PropTypes.object.isRequired }; constructor(props) { super(props); this.state = { error: null }; } onClick = () => { const url = this.props.serverUrl; let error = null; if (isValidUrl(url)) { Client.setUrl(stripTrailingSlashes(url)); this.props.actions.getPing().then(() => { if (this.props.server.status === RequestStatus.SUCCESS) { Keyboard.dismiss(); this.props.actions.goToLogin(); } }); } else { error = { intl: { id: 'mobile.server_url.invalid_format', defaultMessage: 'URL must start with http:// or https://' } }; } this.setState({error}); }; inputRef = (ref) => { this.textInput = ref; }; blur = () => { this.textInput.refs.wrappedInstance.blur(); }; render() { return ( ); } }